public SearchResult GetSeriesCatalogInPolygon(IList <IFeature> polygons, string[] keywords, double tileWidth, double tileHeight, DateTime startDate, DateTime endDate, WebServiceNode[] serviceIDs, BusinessObjects.Models.IProgressHandler bgWorker) { if (polygons == null) { throw new ArgumentNullException("polygons"); } if (bgWorker == null) { throw new ArgumentNullException("bgWorker"); } if (polygons.Count == 0) { throw new ArgumentException("The number of polygons must be greater than zero."); } if (keywords == null || keywords.Length == 0) { keywords = new[] { String.Empty }; } var fullSeriesList = new List <BusinessObjects.Models.SeriesDataCartModel.SeriesDataCart>(); for (int index = 0; index < polygons.Count; index++) { if (polygons.Count > 1) { bgWorker.ReportMessage(string.Format("Processing polygons: {0} of {1}", index + 1, polygons.Count)); } bgWorker.CheckForCancel(); var polygon = polygons[index]; var extentBox = new Extent(polygon.Envelope); var seriesForPolygon = GetSeriesListForExtent(extentBox, keywords, tileWidth, tileHeight, startDate, endDate, serviceIDs, bgWorker, item => polygon.Intersects(new Coordinate(item.Longitude, item.Latitude))); fullSeriesList.AddRange(seriesForPolygon); } SearchResult resultFs = null; if (fullSeriesList.Count > 0) { bgWorker.ReportMessage("Calculating Points..."); resultFs = SearchHelper.ToFeatureSetsByDataSource(fullSeriesList); } bgWorker.CheckForCancel(); var message = string.Format("{0} Series found.", totalSeriesCount); bgWorker.ReportProgress(100, "Search Finished. " + message); return(resultFs); }
public SearchResult GetSeriesCatalogInRectangle(Box extentBox, string[] keywords, double tileWidth, double tileHeight, DateTime startDate, DateTime endDate, WebServiceNode[] serviceIDs, BusinessObjects.Models.IProgressHandler bgWorker) { if (extentBox == null) { throw new ArgumentNullException("extentBox"); } if (serviceIDs == null) { throw new ArgumentNullException("serviceIDs"); } if (bgWorker == null) { throw new ArgumentNullException("bgWorker"); } if (keywords == null || keywords.Length == 0) { keywords = new[] { String.Empty }; } bgWorker.CheckForCancel(); var extent = new Extent(extentBox.XMin, extentBox.YMin, extentBox.XMax, extentBox.YMax); var fullSeriesList = GetSeriesListForExtent(extent, keywords, tileWidth, tileHeight, startDate, endDate, serviceIDs, bgWorker, series => true); SearchResult resultFs = null; if (fullSeriesList.Count > 0) { bgWorker.ReportMessage("Calculating Points..."); resultFs = SearchHelper.ToFeatureSetsByDataSource(fullSeriesList); } bgWorker.CheckForCancel(); var message = string.Format("{0} Series found.", totalSeriesCount); bgWorker.ReportProgress(100, "Search Finished. " + message); return(resultFs); }