/// <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)); }
public RedirectToRouteResult WfsLayerEditorCreateNewLayer(string name, string filter, string serverUrl, string typeName, string color, bool useBbox) { var viewManager = new WfsLayersViewManager(GetCurrentUser(), SessionHandler.MySettings); WfsLayerSetting wfsLayer = viewManager.CreateNewWfsLayer(name, filter, serverUrl, typeName, color, useBbox); viewManager.AddWfsLayer(wfsLayer); return(RedirectToAction("WfsLayers")); }
public void UpdateWfsLayer(int id, string name, string filter, string color, bool useBbox) { WfsLayerSetting wfsLayerSetting = MapLayersSetting.GetWfsLayer(id); wfsLayerSetting.Filter = filter; wfsLayerSetting.Name = name; wfsLayerSetting.Color = color; wfsLayerSetting.UseSpatialFilterExtentAsBoundingBox = useBbox; }
public void GetWfsFilterTest() { using (ShimsContext.Create()) { DataController dataProvidersController; JsonNetResult result; JsonModel jsonResult; WfsLayerViewModel wfsLayerResult; var layersSetting = new WfsLayerSetting { Name = "Småland & Östergötland", GeometryType = GeometryType.Polygon, Color = "#CCCCFF", Filter = "<Filter><Or><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>5</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>6</Literal></PropertyIsEqualTo></Or></Filter>", ServerUrl = "http://slwgeo.artdata.slu.se:8080/geoserver/SLW/wfs", TypeName = "SLW:MapOfSwedishCounties", GeometryName = "the_geom" }; var layersSetting2 = new WfsLayerSetting { Name = "Blekinge", GeometryType = GeometryType.Polygon, Color = "#336699", Filter = "<Filter><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>10</Literal></PropertyIsEqualTo></Filter>", ServerUrl = "http://slwgeo.artdata.slu.se:8080/geoserver/SLW/wfs", TypeName = "SLW:MapOfSwedishCounties", GeometryName = "the_geom" }; dataProvidersController = new DataController(); SessionHandler.MySettings.DataProvider.MapLayers = new MapLayersSetting(); SessionHandler.MySettings.DataProvider.MapLayers.AddWfsLayer(layersSetting); SessionHandler.MySettings.DataProvider.MapLayers.AddWfsLayer(layersSetting2); int noOfWfsLayer = SessionHandler.MySettings.DataProvider.MapLayers.WfsLayers.Count; result = dataProvidersController.GetWfsLayerSettings(noOfWfsLayer - 2); jsonResult = (JsonModel)result.Data; wfsLayerResult = (WfsLayerViewModel)jsonResult.Data; Assert.IsTrue(jsonResult.Success); Assert.IsNotNull(wfsLayerResult); Assert.IsTrue(wfsLayerResult.Name.Equals(layersSetting.Name)); Assert.IsTrue(wfsLayerResult.Filter.Equals(layersSetting.Filter)); Assert.IsTrue(wfsLayerResult.ServerUrl.Equals(layersSetting.ServerUrl)); Assert.IsTrue(wfsLayerResult.GeometryName.Equals(layersSetting.GeometryName)); Assert.IsTrue(wfsLayerResult.Color.Equals(layersSetting.Color)); Assert.IsTrue(wfsLayerResult.TypeName.Equals(layersSetting.TypeName)); Assert.IsTrue(wfsLayerResult.GeometryType.Equals(layersSetting.GeometryType)); } }
// ReSharper disable once InconsistentNaming public void GetWfsFiltersAsGeoJSONTest() { ResultController resultController; JsonNetResult result; JsonModel jsonResult; List <WfsLayerViewModel> wfsLayersResult; var layersSetting = new WfsLayerSetting { Name = "Småland & Östergötland", GeometryType = GeometryType.Polygon, Color = "#CCCCFF", Filter = "<Filter><Or><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>5</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>6</Literal></PropertyIsEqualTo></Or></Filter>", ServerUrl = "http://slwgeo.artdata.slu.se:8080/geoserver/SLW/wfs", TypeName = "SLW:MapOfSwedishCounties", GeometryName = "the_geom" }; var layersSetting2 = new WfsLayerSetting { Name = "Blekinge", GeometryType = GeometryType.Polygon, Color = "#336699", Filter = "<Filter><PropertyIsEqualTo><PropertyName>LänSKOD</PropertyName><Literal>10</Literal></PropertyIsEqualTo></Filter>", ServerUrl = "http://slwgeo.artdata.slu.se:8080/geoserver/SLW/wfs", TypeName = "SLW:MapOfSwedishCounties", GeometryName = "the_geom" }; resultController = new ResultController(); SessionHandler.MySettings.DataProvider.MapLayers = new MapLayersSetting(); SessionHandler.MySettings.DataProvider.MapLayers.AddWfsLayer(layersSetting); SessionHandler.MySettings.DataProvider.MapLayers.AddWfsLayer(layersSetting2); result = resultController.GetWfsLayersAsJSON(); jsonResult = (JsonModel)result.Data; wfsLayersResult = (List <WfsLayerViewModel>)jsonResult.Data; Assert.IsTrue(jsonResult.Success); Assert.IsNotNull(wfsLayersResult); Assert.IsTrue(wfsLayersResult.Count >= 2); Assert.IsTrue(wfsLayersResult.Last().Id == layersSetting2.Id); Assert.IsTrue(wfsLayersResult.Last().Name.Equals(layersSetting2.Name)); Assert.IsTrue(wfsLayersResult.Last().Filter.Equals(layersSetting2.Filter)); Assert.IsTrue(wfsLayersResult.Last().ServerUrl.Equals(layersSetting2.ServerUrl)); Assert.IsTrue(wfsLayersResult.Last().GeometryName.Equals(layersSetting2.GeometryName)); Assert.IsTrue(wfsLayersResult.Last().Color.Equals(layersSetting2.Color)); Assert.IsTrue(wfsLayersResult.Last().TypeName.Equals(layersSetting2.TypeName)); Assert.IsTrue(wfsLayersResult.Last().GeometryType.Equals(layersSetting2.GeometryType)); }
public WfsLayerSetting CreateNewWfsLayer(string name, string filter, string serverUrl, string typeName, string color, bool useBbox) { var wfsLayer = new WfsLayerSetting(); wfsLayer.Filter = filter; wfsLayer.Name = name; wfsLayer.ServerUrl = serverUrl; wfsLayer.TypeName = typeName; WFSDescribeFeatureType wfsDescribeFeatureType = WFSManager.GetWFSDescribeFeatureType(serverUrl, typeName); wfsLayer.GeometryName = wfsDescribeFeatureType.GeometryField.Name; wfsLayer.GeometryType = wfsDescribeFeatureType.GeometryType; wfsLayer.Color = color; wfsLayer.UseSpatialFilterExtentAsBoundingBox = useBbox; return(wfsLayer); }
public WfsLayerSetting CreateNewWfsFileLayer(string layerName, string fileName, string typeName, string filter, string serverUrl, GeometryType geometryType, string color, bool useBbox) { var wfsLayer = new WfsLayerSetting { Color = color, Filter = filter, GeometryName = fileName, GeometryType = GeometryType.Polygon, IsFile = true, Name = layerName, ServerUrl = serverUrl, TypeName = typeName, UseSpatialFilterExtentAsBoundingBox = useBbox }; return(wfsLayer); }
//public string EditUrl { get; set; } public static WfsLayerViewModel Create(WfsLayerSetting wfsLayerSetting) { var layer = new WfsLayerViewModel { Id = wfsLayerSetting.Id, Name = wfsLayerSetting.Name, ServerUrl = wfsLayerSetting.ServerUrl, TypeName = wfsLayerSetting.TypeName, GeometryName = wfsLayerSetting.GeometryName, GeometryType = wfsLayerSetting.GeometryType, Filter = wfsLayerSetting.Filter, Color = wfsLayerSetting.Color, UseSpatialFilterExtentAsBoundingBox = wfsLayerSetting.UseSpatialFilterExtentAsBoundingBox, MediaName = wfsLayerSetting.IsFile ? Resource.SharedFile : Resource.SharedWfsService, IsFile = wfsLayerSetting.IsFile }; return(layer); }
/// <summary> /// Creates a view model to use in WfsLayerEditor when we create a new layer. /// </summary> /// <param name="url">The server URL.</param> /// <param name="typeName">The typename.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public WfsLayerEditorViewModel CreateWfsLayerEditorViewModelInCreateNewMode(string url, string typeName, string filter) { WFSCapabilities wfsCapabilities = WFSManager.GetWFSCapabilitiesAndMergeDescribeFeatureType(url, typeName); ArtDatabanken.GIS.WFS.Capabilities.WfsFeatureType featureType = wfsCapabilities.FeatureTypes.FirstOrDefault(feature => feature.Name.FullName == typeName); var model = new WfsLayerEditorViewModel(); model.Mode = WfsLayerEditorMode.New; model.WfsCapabilities = wfsCapabilities; model.FeatureType = featureType; model.ServerUrl = wfsCapabilities.Capability.Requests.GetFeaturesRequest.GetUrlBase; var wfsLayerSetting = new WfsLayerSetting(); wfsLayerSetting.Filter = ""; wfsLayerSetting.Name = ""; wfsLayerSetting.Color = MapLayersSetting.CreateMapLayerHexColor(); model.WfsLayerSetting = wfsLayerSetting; return(model); }
/// <summary> /// Gets feature collection based on selected WFS layer in SummaryStatistics. /// </summary> /// <returns>A feature collection or null.</returns> private FeatureCollection GetFeatureCollection() { if (!MySettings.Calculation.SummaryStatistics.WfsSummaryStatisticsLayerId.HasValue) { return(null); } int wfsLayerId = MySettings.Calculation.SummaryStatistics.WfsSummaryStatisticsLayerId.Value; WfsLayerSetting wfsLayer = MySettings.DataProvider.MapLayers.WfsLayers.FirstOrDefault(l => l.Id == wfsLayerId); string featuresUrl; string srsName = MySettings.Presentation.Map.PresentationCoordinateSystemId.EpsgCode(); FeatureCollection featureCollection = null; if (wfsLayer.IsFile) { featureCollection = MySettingsManager.GetMapDataFeatureCollection( UserContext, wfsLayer.GeometryName, MySettings.Presentation.Map.PresentationCoordinateSystemId); } else { if (string.IsNullOrEmpty(wfsLayer.Filter)) { featuresUrl = string.Format("{0}?service=wfs&version=1.1.0&request=GetFeature&typeName={1}&srsName={2}", wfsLayer.ServerUrl, wfsLayer.TypeName, srsName); } else { featuresUrl = string.Format( "{0}?service=wfs&version=1.1.0&request=GetFeature&typeName={1}&filter={2}&srsName={3}", wfsLayer.ServerUrl, wfsLayer.TypeName, wfsLayer.Filter, srsName); } featureCollection = WFSManager.GetWfsFeaturesUsingHttpPost(featuresUrl); } return(featureCollection); }
public void Changes_that_not_trigger_cache_refresh() { MySettings mySettings = new MySettings(); mySettings.ResultCacheNeedsRefresh = false; MySettings oldMySettings = ObjectCopier.Clone(mySettings); // Changes to presentation map doesn't trigger cache refresh Assert.IsTrue(mySettings.Presentation.Map.IsActive); Assert.IsTrue(oldMySettings.Presentation.Map.IsActive); mySettings.Presentation.Map.IsActive = false; Assert.IsFalse(mySettings.Presentation.Map.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.Presentation.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.ResultCacheNeedsRefresh); // Changes to presentation table doesn't trigger cache refresh Assert.IsTrue(mySettings.Presentation.Table.IsActive); Assert.IsTrue(oldMySettings.Presentation.Table.IsActive); mySettings.Presentation.Table.IsActive = false; Assert.IsFalse(mySettings.Presentation.Table.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.Presentation.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.ResultCacheNeedsRefresh); // Changes to map layers doesn't trigger cache refresh Assert.IsFalse(mySettings.DataProvider.MapLayers.IsActive); Assert.IsFalse(oldMySettings.DataProvider.MapLayers.IsActive); mySettings.DataProvider.MapLayers.IsActive = true; WfsLayerSetting wfsLayer = new WfsLayerSetting(); wfsLayer.Name = "Test"; wfsLayer.Id = 0; mySettings.DataProvider.MapLayers.WfsLayers.Add(wfsLayer); Assert.IsFalse(mySettings.DataProvider.MapLayers.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.DataProvider.ResultCacheNeedsRefresh); Assert.IsFalse(mySettings.ResultCacheNeedsRefresh); }
public void AddWfsLayer(WfsLayerSetting wfsLayer) { MapLayersSetting.AddWfsLayer(wfsLayer); }