/// <summary> /// Get the species observation count from web service /// </summary> /// <returns>No of observations that matches my settings.</returns> private TimeStepSpeciesObservationCountList GetSpeciesObservationCountFromWebService(IUserContext userContext, int periodicityId) { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(userContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (userContext.CurrentRole.IsNull() && userContext.CurrentRoles.Count > 0) { userContext.CurrentRole = userContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; //TODO: undersök om detta kan tas bort. Fråga Agneta varför Id istället för de faktiska enum Periodicity timeStepType = Periodicity.Yearly; foreach (Periodicity value in Enum.GetValues(typeof(Periodicity))) { if ((int)value == periodicityId) { timeStepType = value; break; } } TimeStepSpeciesObservationCountList speciesObservationCount = CoreData.AnalysisManager.GetTimeSpeciesObservationCounts(userContext, searchCriteria, timeStepType, displayCoordinateSystem); return(speciesObservationCount); }
protected long CalculateTotalCount(int?taxonId, Polygon bbox) { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (taxonId.HasValue) { searchCriteria.TaxonIds = new List <int> { taxonId.Value }; } if (bbox != null) { searchCriteria.Polygons = new List <IPolygon> { bbox }; } if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; long speciesObservationCount = CoreData.AnalysisManager.GetSpeciesObservationCountBySearchCriteria(UserContext, searchCriteria, displayCoordinateSystem); return(speciesObservationCount); }
public IList <IGridCellSpeciesObservationCount> GetSpeciesObservationGridCellResultFromWebService(IUserContext userContext, MySettings mySettings) { var speciesObservationSearchCriteriaManager = new SpeciesObservationSearchCriteriaManager(userContext); SpeciesObservationSearchCriteria searchCriteria = speciesObservationSearchCriteriaManager.CreateSearchCriteria(mySettings); ICoordinateSystem coordinateSystem = new CoordinateSystem(); coordinateSystem.Id = CoordinateSystemId.GoogleMercator; GridStatisticsSetting gridStatisticsSetting = mySettings.Calculation.GridStatistics; IGridSpecification gridSpecification = new GridSpecification(); if (gridStatisticsSetting.CoordinateSystemId.HasValue) { gridSpecification.GridCoordinateSystem = (GridCoordinateSystem)gridStatisticsSetting.CoordinateSystemId; } else { gridSpecification.GridCoordinateSystem = GridCoordinateSystem.SWEREF99_TM; } if (gridStatisticsSetting.GridSize.HasValue) { gridSpecification.GridCellSize = gridStatisticsSetting.GridSize.Value; gridSpecification.IsGridCellSizeSpecified = true; } IList <IGridCellSpeciesObservationCount> gridCellObservations = CoreData.AnalysisManager.GetGridSpeciesObservationCounts(userContext, searchCriteria, gridSpecification, coordinateSystem); // Add result to cache return(gridCellObservations); }
/// <summary> /// Calculates the combined grid result. /// </summary> /// <param name="calculationCoordinateSystemId">The calculation coordinate system id.</param> /// <param name="gridCellSize">Size of the grid cell.</param> /// <param name="wfsLayerId">The WFS layer id.</param> /// <returns>Combined grid cell statistics.</returns> public CombinedGridStatisticsResult CalculateCombinedGridResult(int calculationCoordinateSystemId, int gridCellSize, int wfsLayerId) { GridSpecification gridSpecification = new GridSpecification(); CoordinateSystem displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; gridSpecification.GridCoordinateSystem = (GridCoordinateSystem)calculationCoordinateSystemId; gridSpecification.GridCellSize = gridCellSize; gridSpecification.IsGridCellSizeSpecified = true; gridSpecification.GridCellGeometryType = GridCellGeometryType.Polygon; if (MySettings.Filter.Spatial.IsActive) { // Create bounding box from spatial filter ObservableCollection <DataPolygon> polygons = MySettings.Filter.Spatial.Polygons; if (polygons.Count > 0) { BoundingBox boundingBox = polygons.GetBoundingBox(); CoordinateSystem toCoordinateSystem = CoordinateSystemHelper.GetCoordinateSystemFromGridCoordinateSystem(gridSpecification.GridCoordinateSystem); IPolygon convertedBoundingBoxPolygon = GisTools.CoordinateConversionManager.GetConvertedBoundingBox(boundingBox, MySettings.Filter.Spatial.PolygonsCoordinateSystem, toCoordinateSystem); BoundingBox convertedBoundingBox = convertedBoundingBoxPolygon.GetBoundingBox(); gridSpecification.BoundingBox = convertedBoundingBox; } } WfsLayerSetting wfsLayer = SessionHandler.MySettings.DataProvider.MapLayers.WfsLayers.FirstOrDefault(l => l.Id == wfsLayerId); string featuresUrl = ""; string featureCollectionJson = null; if (wfsLayer.IsFile) { featureCollectionJson = JObject.FromObject(MySettingsManager.GetMapDataFeatureCollection(UserContext, wfsLayer.GeometryName, gridSpecification.GridCoordinateSystem.GetCoordinateSystemId())).ToString(); } else { if (string.IsNullOrEmpty(wfsLayer.Filter)) { featuresUrl = string.Format("{0}?service=wfs&version=1.1.0&request=GetFeature&typeName={1}", wfsLayer.ServerUrl, wfsLayer.TypeName); } else { featuresUrl = string.Format("{0}?service=wfs&version=1.1.0&request=GetFeature&typeName={1}&filter={2}", wfsLayer.ServerUrl, wfsLayer.TypeName, wfsLayer.Filter); } } var speciesObservationSearchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = speciesObservationSearchCriteriaManager.CreateSearchCriteria(MySettings); IList <IGridCellCombinedStatistics> gridCells = CoreData.AnalysisManager.GetGridCellFeatureStatisticsCombinedWithSpeciesObservationCounts(UserContext, gridSpecification, searchCriteria, null, featuresUrl, featureCollectionJson, displayCoordinateSystem); if (MySettings.Calculation.GridStatistics.GenerateAllGridCells) { gridCells = AddEmptyGridCells(gridCells, gridSpecification, displayCoordinateSystem); gridCells = RemoveGridCellsOutsideBounds(gridCells, gridSpecification); } gridCells = gridCells.OrderBy(x => x.Identifier).ToList(); return(CombinedGridStatisticsResult.Create( (CoordinateSystemId)calculationCoordinateSystemId, displayCoordinateSystem.Id, gridCellSize, gridCells)); }
/// <summary> /// Calculates the species observation grid. /// </summary> /// <param name="taxonIds">The taxon ids.</param> /// <param name="gridCoordinateSystem">The grid coordinate system.</param> /// <returns>List of grid cells data.</returns> public IList <IGridCellSpeciesObservationCount> CalculateSpeciesObservationGrid(List <int> taxonIds, GridCoordinateSystem?gridCoordinateSystem) { var speciesObservationSearchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = speciesObservationSearchCriteriaManager.CreateSearchCriteria(MySettings); searchCriteria.TaxonIds = taxonIds; CoordinateSystem displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; //CoordinateSystem displayCoordinateSystem = new CoordinateSystem(MapSettings.CoordinateSystemId); // todo - såhär borde det se ut GridStatisticsSetting gridStatisticsSetting = MySettings.Calculation.GridStatistics; GridSpecification gridSpecification = new GridSpecification(); if (gridCoordinateSystem.HasValue) { gridSpecification.GridCoordinateSystem = gridCoordinateSystem.Value; } else { if (gridStatisticsSetting.CoordinateSystemId.HasValue) { gridSpecification.GridCoordinateSystem = (GridCoordinateSystem)gridStatisticsSetting.CoordinateSystemId; } else { gridSpecification.GridCoordinateSystem = GridCoordinateSystem.SWEREF99_TM; } } if (gridStatisticsSetting.GridSize.HasValue) { gridSpecification.GridCellSize = gridStatisticsSetting.GridSize.Value; gridSpecification.IsGridCellSizeSpecified = true; } gridSpecification.GridCellGeometryType = GridCellGeometryType.Polygon; // todo - implement check that the number of possible grid cells aren't too large. // todo - perhaps this check should be in the service ////long numberOfGridCellsThatWillBeGenerated = GisTools.GridCellManager.CalculateNumberOfGridCells(gridSpecification, searchCriteria.Polygons, searchCriteria.RegionGuids); ////if (numberOfGridCellsThatWillBeGenerated > MAX_NUMBER_OF_GRID_CELLS) ////{ //// throw new ArgumentException(string.Format("The cell size is too small, which would have resulted in possibly {0} grid cells. The limit lies at {1}.", numberOfGridCellsThatWillBeGenerated, MAX_NUMBER_OF_GRID_CELLS)); ////} var gridCellObservations = CoreData.AnalysisManager.GetGridSpeciesObservationCounts(UserContext, searchCriteria, gridSpecification, displayCoordinateSystem); if (MySettings.Calculation.GridStatistics.GenerateAllGridCells) { gridCellObservations = AddEmptyGridCells(gridCellObservations, gridSpecification, displayCoordinateSystem); gridCellObservations = RemoveGridCellsOutsideBounds(gridCellObservations, gridSpecification); } gridCellObservations = gridCellObservations.OrderBy(x => x.Identifier).ToList(); return(gridCellObservations); }
/// <summary> /// Calculates species observation count per polygon and taxa. /// </summary> /// <param name="taxonIds">The taxon ids.</param> /// <returns> /// A dictionary where the key is a polygon description. /// The value is a dictionary where the key is TaxonId and the value is species observation count. /// </returns> public TaxonSpecificSpeciesObservationCountPerPolygonResult CalculateSpeciesObservationCountPerPolygonAndTaxa(List <int> taxonIds) { Dictionary <string, Dictionary <int, long> > speciesObservationData = new Dictionary <string, Dictionary <int, long> >(); FeatureCollection featureCollection = GetFeatureCollection(); List <int> taxonIdList = new List <int>(taxonIds); if (taxonIdList.IsEmpty()) { taxonIdList.Add(0); } if (MySettings.Calculation.SummaryStatistics.WfsSummaryStatisticsLayerId.HasValue && featureCollection != null && featureCollection.Features.Count > 0) { SpeciesObservationSearchCriteriaManager searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); DataContext dataContext = new DataContext(UserContext); CoordinateSystem displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; foreach (Feature feature in featureCollection.Features) { string featureDescription = GetFeatureDescription(feature); List <DataPolygon> dataPolygons = GetDataPolygons(feature); searchCriteria.Polygons = dataPolygons.ToPolygons(dataContext); foreach (int taxonId in taxonIdList) { searchCriteria.TaxonIds = new List <int>(); searchCriteria.TaxonIds.Add(taxonId); long speciesObservationCount = CoreData.AnalysisManager.GetSpeciesObservationCountBySearchCriteria(UserContext, searchCriteria, displayCoordinateSystem); if (!speciesObservationData.ContainsKey(featureDescription)) { speciesObservationData.Add(featureDescription, new Dictionary <int, long>()); } speciesObservationData[featureDescription].Add(taxonId, speciesObservationCount); } } } TaxonList taxonList = CoreData.TaxonManager.GetTaxa(UserContext, taxonIdList); List <TaxonViewModel> taxaList = taxonList.GetGenericList().ToTaxonViewModelList(); TaxonSpecificSpeciesObservationCountPerPolygonResult result = new TaxonSpecificSpeciesObservationCountPerPolygonResult() { Taxa = taxaList, SpeciesObservationCountPerPolygon = speciesObservationData }; return(result); }
/// <summary> /// Get the species count from web service /// </summary> /// <returns>No of species that matches my settings.</returns> private long GetSpeciesCountFromWebService(IUserContext userContext) { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(userContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (userContext.CurrentRole.IsNull() && userContext.CurrentRoles.Count > 0) { userContext.CurrentRole = userContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; long speciesCount = CoreData.AnalysisManager.GetSpeciesCountBySearchCriteria(userContext, searchCriteria, displayCoordinateSystem); return(speciesCount); }
/// <summary> /// Get the species observation provenances from web service. /// </summary> /// <returns>List of provenances that matches my settings.</returns> private List <SpeciesObservationProvenance> CalculateProvenances() { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; var speciesObservationProvenanceList = CoreData.AnalysisManager.GetSpeciesObservationProvenancesBySearchCriteria(UserContext, searchCriteria, displayCoordinateSystem); speciesObservationProvenanceList = CreateOrderedSpeciesObservationProvenanceList(speciesObservationProvenanceList); return(speciesObservationProvenanceList); }
public List <TaxonSpeciesObservationCountViewModel> CalculateResult() { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; TaxonSpeciesObservationCountList taxonSpeciesObservationCountList = CoreData.AnalysisManager.GetTaxaWithSpeciesObservationCountsBySearchCriteria(UserContext, searchCriteria, displayCoordinateSystem); List <TaxonSpeciesObservationCountViewModel> taxaSpeciesObservationCountList = taxonSpeciesObservationCountList.GetGenericList().ToTaxonSpeciesObservationCountViewModelList(); return(taxaSpeciesObservationCountList); }
public long GetSpeciesObservationsCount() { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); var searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; AnalysisManager am = new AnalysisManager(); return(am.GetSpeciesObservationCountBySearchCriteria(UserContext, searchCriteria, displayCoordinateSystem)); }
protected SpeciesObservationList GetPagedSpeciesObservationList(int start, int pageSize, int?taxonId, Polygon bbox) { SpeciesObservationPageSpecification pageSpecification = new SpeciesObservationPageSpecification(); pageSpecification.Size = pageSize; pageSpecification.Start = start; pageSpecification.SortOrder = new SpeciesObservationFieldSortOrderList(); SpeciesObservationFieldSortOrder sortOrderOne = new SpeciesObservationFieldSortOrder(); sortOrderOne.SortOrder = SortOrder.Descending; sortOrderOne.Class = new SpeciesObservationClass(); sortOrderOne.Class.Id = SpeciesObservationClassId.Event; sortOrderOne.Property = new SpeciesObservationProperty(); sortOrderOne.Property.Id = SpeciesObservationPropertyId.Start; pageSpecification.SortOrder.Add(sortOrderOne); var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); if (taxonId.HasValue) { searchCriteria.TaxonIds = new List <int> { taxonId.Value }; } if (bbox != null) { searchCriteria.Polygons = new List <IPolygon> { bbox }; } if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; // Todo Add more pecifice page information //SpeciesObservationList speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(UserContext, searchCriteria, displayCoordinateSystem); SpeciesObservationList speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(UserContext, searchCriteria, displayCoordinateSystem, pageSpecification); return(speciesObservationList); }
public SpeciesObservationsData CalculateSpeciesObservations(CoordinateSystemId displayCoordinateSystemId) { var displayCoordinateSystem = new CoordinateSystem(displayCoordinateSystemId); var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); var searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings, displayCoordinateSystem); if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0) { UserContext.CurrentRole = UserContext.CurrentRoles[0]; } var speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(UserContext, searchCriteria, displayCoordinateSystem); var fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(UserContext, MySettings); var fieldDescriptionsViewModel = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel(); var speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel); return(speciesObservationsData); }
/// <summary> /// Calculates summary statistics per polygon. /// </summary> /// <returns> /// A list of statistics in form of pairs. /// </returns> private List <SpeciesObservationsCountPerPolygon> CalculateSummaryStatisticsPerPolygon() { List <SpeciesObservationsCountPerPolygon> result = new List <SpeciesObservationsCountPerPolygon>(); if (MySettings.Calculation.SummaryStatistics.WfsSummaryStatisticsLayerId.HasValue) { var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings); FeatureCollection featureCollection = GetFeatureCollection(); DataContext dataContext = new DataContext(this.UserContext); CoordinateSystem displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; searchCriteria.Polygons = new List <IPolygon>(); foreach (Feature feature in featureCollection.Features) { long speciesObservationCount = -1; // -1 means user did not choose to display the number of species observation long speciesCount = -1; // -1 means user did not choose to display the number of species string featureDescription = GetFeatureDescription(feature); List <DataPolygon> dataPolygons = GetDataPolygons(feature); searchCriteria.Polygons = dataPolygons.ToPolygons(dataContext); if (MySettings.Calculation.SummaryStatistics.CalculateNumberOfObservationsfromObsData) { speciesObservationCount = CoreData.AnalysisManager.GetSpeciesObservationCountBySearchCriteria(this.UserContext, searchCriteria, displayCoordinateSystem); } if (MySettings.Calculation.SummaryStatistics.CalculateNumberOfSpeciesfromObsData) { speciesCount = CoreData.AnalysisManager.GetSpeciesCountBySearchCriteria(this.UserContext, searchCriteria, displayCoordinateSystem); } result.Add(new SpeciesObservationsCountPerPolygon { Properties = featureDescription, SpeciesObservationsCount = speciesObservationCount == -1 ? "-" : Convert.ToString(speciesObservationCount), SpeciesCount = speciesCount == -1 ? "-" : Convert.ToString(speciesCount) }); } } return(result); }
/// <summary> /// Calculates the species observation grid. /// </summary> /// <param name="taxonIds">The taxon ids.</param> /// <param name="gridCoordinateSystem">The grid coordinate system.</param> /// <param name="bottom"></param> /// <param name="left"></param> /// <param name="right"></param> /// <param name="top"></param> /// <param name="zoom"></param> /// <param name="gridSize"></param> /// <returns>List of grid cells data.</returns> public IList <IGridCellSpeciesObservationCount> CalculateSpeciesObservationGrid(List <int> taxonIds, GridCoordinateSystem?gridCoordinateSystem, double bottom, double left, double right, double top, int zoom, int?gridSize) { var speciesObservationSearchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext); SpeciesObservationSearchCriteria searchCriteria = speciesObservationSearchCriteriaManager.CreateSearchCriteria(MySettings); // remove spatial filter? searchCriteria.Polygons = null; searchCriteria.RegionGuids = null; searchCriteria.TaxonIds = taxonIds; CoordinateSystem displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem; GridStatisticsSetting gridStatisticsSetting = MySettings.Calculation.GridStatistics; GridSpecification gridSpecification = new GridSpecification(); if (gridCoordinateSystem.HasValue) { gridSpecification.GridCoordinateSystem = gridCoordinateSystem.Value; } else { if (gridStatisticsSetting.CoordinateSystemId.HasValue) { gridSpecification.GridCoordinateSystem = (GridCoordinateSystem)gridStatisticsSetting.CoordinateSystemId; } else { gridSpecification.GridCoordinateSystem = GridCoordinateSystem.SWEREF99_TM; } } gridSpecification.GridCellSize = gridSize.HasValue ? gridSize.Value : ZoomMappings[zoom]; gridSpecification.IsGridCellSizeSpecified = true; gridSpecification.GridCellGeometryType = GridCellGeometryType.Polygon; searchCriteria.Polygons = new List <IPolygon>(); searchCriteria.Polygons.Add(GetPolygon(bottom, left, right, top)); IList <IGridCellSpeciesObservationCount> gridCellObservations = CoreData.AnalysisManager.GetGridSpeciesObservationCounts(UserContext, searchCriteria, gridSpecification, displayCoordinateSystem); gridCellObservations = gridCellObservations.OrderBy(x => x.Identifier).ToList(); return(gridCellObservations); }