public void ReadBinaryRasterFile() { string fileName = RasterDataPath + "SchematisatieInt.bil"; var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterFeatureProvider.Open(); IRegularGridCoverage grid = rasterFeatureProvider.Grid; IList <int> values = grid.GetValues <int>(); Assert.AreEqual(9, values.Count); IList <int> values2 = grid.GetValues <int>( new VariableValueFilter <double>(grid.X, grid.X.Values[0]), new VariableValueFilter <double>(grid.Y, grid.Y.Values[0]) ); Assert.AreEqual(1, values2.Count); Assert.AreEqual(7, values2[0]); //rasterLayer.CustomRenderers.Add(new RegularGridCoverageRenderer()); // add optimized custom gdal renderer rasterLayer.DataSource = rasterFeatureProvider; IRegularGridCoverage regularGridCoverage = rasterFeatureProvider.Grid; }
public void ShowRegularGridWithQuantityThemeOnMap() { IRegularGridCoverage grid2D = new RegularGridCoverage(200, 200, 10, 10) { Name = "pressure" }; double[] values = new double[grid2D.SizeX * grid2D.SizeY]; double min = 0; double max = 0; for (int i = 0; i < values.Length; i++) { values[i] = i; if (values[i] > max) { max = values[i]; } if (values[i] < min) { min = values[i]; } } grid2D.SetValues(values); var map = new Map(); var rasterLayer = new RegularGridCoverageLayer { Grid = grid2D }; var defaultStyle = new VectorStyle { GeometryType = typeof(IPolygon), Line = Pens.SeaGreen }; double interval = (max - min) / 10; var intervalList = new List <Interval>(); double start = min; double stop = min + interval; for (int i = 0; i < 10; i++) { intervalList.Add(new Interval(start, stop)); start = stop; stop += interval; } QuantityTheme quantityTheme = ThemeFactory.CreateQuantityTheme(grid2D.Components[0].Name, defaultStyle, ColorBlend.BlueToGreen, 10, intervalList ); rasterLayer.Theme = quantityTheme; map.Layers.Add(rasterLayer); MapTestHelper.ShowModal(map); }
public void RenderBilFileAsCoverage() { var map = new Map(new Size(400, 200)) { Name = "map1" }; string fileName = RasterDataPath + "SchematisatieInt.bil"; var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterLayer.CustomRenderers.Add(new RegularGridCoverageRenderer(rasterLayer)); // add optimized custom gdal renderer rasterLayer.DataSource = rasterFeatureProvider; map.Layers.Add(rasterLayer); IRegularGridCoverage grid = rasterFeatureProvider.Grid; IList <int> values = grid.GetValues <int>(); Assert.AreEqual(9, values.Count); MapTestHelper.Show(map); }
public void RenderAscFileAsCoverage() { var map = new Map(new Size(10, 20)) { Name = "map1" }; string fileName = RasterDataPath + "test.ASC"; // const string fileName = @"D:\habitat\boomkikker_a_huidig.asc"; var newFileName = Path.GetFullPath(Path.GetFileName(fileName)); File.Copy(Path.GetFullPath(fileName), newFileName, true); var fileInfo = new FileInfo(newFileName); if (fileInfo.IsReadOnly) { fileInfo.IsReadOnly = false; } var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; //rasterLayer.CustomRenderers.Add(new GdalRenderer()); // add optimized custom gdal renderer rasterLayer.CustomRenderers.Add(new RegularGridCoverageRenderer(rasterLayer)); rasterLayer.DataSource = rasterFeatureProvider; map.Layers.Add(rasterLayer); MapTestHelper.Show(map); }
public void CheckThemeOfCoverageWithoutValidValues() { var coverage = new RegularGridCoverage(2, 2, 10, 10); coverage.Components[0].Clear(); coverage.SetValues(new[] { -999.0, -999.0, double.PositiveInfinity, double.NaN }, new VariableValueFilter <double>(coverage.X, new double[] { 0, 1 }), new VariableValueFilter <double>(coverage.Y, new double[] { 0, 1 }) ); coverage.Components[0].NoDataValues.Add(-999.0); var layer = new RegularGridCoverageLayer { Coverage = coverage }; layer.Map = new Map(new Size(10, 10)); layer.Map.Zoom = layer.Map.Zoom / 100; layer.Render(); var gradientTheme = layer.Theme as GradientTheme; Assert.IsNotNull(gradientTheme); Assert.AreEqual(double.MinValue, gradientTheme.Min); Assert.AreEqual(double.MaxValue, gradientTheme.Max); }
public void GetTimesFromFilteredCoverage() { var coverage = new RegularGridCoverage(2, 2, 10, 10); coverage.IsTimeDependent = true; var firstTime = new DateTime(2000, 1, 1); var secondTime = new DateTime(2000, 1, 2); coverage.Time.Values.Add(firstTime); coverage.Time.Values.Add(secondTime); //create a layer var layer = new RegularGridCoverageLayer { Coverage = coverage }; Assert.AreEqual(2, layer.Times.Count()); //action! set the time layer.SetCurrentTimeSelection(secondTime, null); //assert the start time got there Assert.AreEqual(secondTime, layer.TimeSelectionStart); //assert the rendercoverage got updated var timeFilter = (VariableValueFilter <DateTime>) layer.RenderedCoverage.Filters.OfType <IVariableValueFilter>().FirstOrDefault(); Assert.AreEqual(new[] { secondTime }, timeFilter.Values); }
public void GenerateThemeForBilFileWithoutLegendFile() { const string fileName = @"..\..\..\..\..\test-data\DeltaShell\DeltaShell.Plugins.SharpMapGis.Tests\RasterData\SchematisatieUInt.bil"; RegularGridCoverageLayer rasterLayer = new RegularGridCoverageLayer(); GdalFeatureProvider rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterFeatureProvider.Open(); rasterLayer.DataSource = rasterFeatureProvider; IRegularGridCoverage grid = rasterLayer.Grid; ITheme theme = DemisMapControlLegendHelper.ConvertLegendToTheme(fileName, "value", grid); Assert.IsTrue(((GradientTheme)theme).Max == 9.0); Assert.IsTrue(((GradientTheme)theme).Min == 1.0); Assert.IsInstanceOfType(typeof(GradientTheme), theme); foreach (IThemeItem themeItem in theme.ThemeItems) { Assert.IsInstanceOfType(typeof(GradientThemeItem), themeItem); Assert.IsInstanceOfType(typeof(VectorStyle), themeItem.Style); } }
private static void AddLayerToLegend(RegularGridCoverageLayer layer, LegendToolItem parent) { var title = layer.Name; var layerItem = parent.AddItem(title); if (layer.Theme != null && layer.Theme.ThemeItems != null) { AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, false); } }
public void GetFeatureInteractorForLayerWithoutFeatureEditorShouldNotGiveErrorMessage_Tools8065() { var tool = new SelectTool(); var layer = new RegularGridCoverageLayer(); Assert.IsNotNull(layer.FeatureEditor); // No message should be generated and null should be returned TestHelper.AssertLogMessagesCount(() => Assert.IsNull(tool.GetFeatureInteractor(layer, null)), 0); }
public void EnvelopeChangesWhenCoverageIsCleared() { var coverage = new RegularGridCoverage(10, 10, 1, 1); var layer = new RegularGridCoverageLayer { Coverage = coverage }; var envelope = new Envelope(0, 10, 0, 10); Assert.AreEqual(envelope, layer.Envelope); coverage.Clear(); var EmptyEnvelope = new Envelope(0, 0, 0, 0); Assert.AreEqual(EmptyEnvelope, layer.Envelope); }
public void ClearingCoverageCauseRenderRequired() { var coverage = new RegularGridCoverage(10, 10, 1, 1); var layer = new RegularGridCoverageLayer { Coverage = coverage }; layer.Map = new Map(new Size(10, 10)); layer.Render(); Assert.IsFalse(layer.RenderRequired); //action! coverage.Clear(); Assert.IsTrue(layer.RenderRequired); }
public void OpenTif() { string fileName = DataPath + "dvim3.tif"; var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterLayer.DataSource = rasterFeatureProvider; rasterLayer.CustomRenderers.Add(new GdalRenderer(rasterLayer)); // add optimized custom gdal renderer var cellCount = rasterLayer.Grid.SizeX * rasterLayer.Grid.SizeY; Assert.AreEqual(cellCount, rasterLayer.Grid.Components[0].Values.Count); }
public void GenerateThemeForCategorialBilFileWithLegendFile() { const string fileName = @"..\..\..\..\..\test-data\DeltaShell\DeltaShell.Plugins.SharpMapGis.Tests\RasterData\bodem.bil"; var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterLayer.DataSource = rasterFeatureProvider; IRegularGridCoverage grid = rasterLayer.Grid; ITheme theme = DemisMapControlLegendHelper.ConvertLegendToTheme(fileName, "value", grid); ICollection colors = new List <string>(new string[] { "0000FF", "00FFFF", "00FF00", "FFFF00", "FF0000" }); ICollection values = new List <double>(new double[] { 1, 2, 3, 4, 5 }); Assert.IsInstanceOfType(typeof(CategorialTheme), theme); foreach (IThemeItem themeItem in theme.ThemeItems) { Assert.IsInstanceOfType(typeof(CategorialThemeItem), themeItem); Assert.IsInstanceOfType(typeof(VectorStyle), themeItem.Style); double value = Convert.ToDouble(((CategorialThemeItem)themeItem).Value); Assert.Contains(value, values); ((List <double>)values).Remove(value); string color = FromColorToBGRString(((SolidBrush)((VectorStyle)themeItem.Style).Fill).Color); Assert.Contains(color, colors); ((List <string>)colors).Remove(color); } Assert.IsTrue(colors.Count == 0); Assert.IsTrue(values.Count == 0); }
public void ReadGdalRasterLayer() { var map = new Map { Name = "map1" }; var provider = new DataTableFeatureProvider("LINESTRING(90 0,100 0,100 90)"); var vectorLayer = new VectorLayer("test", provider); map.Layers.Add(vectorLayer); string fileName = DataPath + "dvim3.tif"; var rasterLayer = new RegularGridCoverageLayer(); var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterLayer.DataSource = rasterFeatureProvider; rasterLayer.CustomRenderers.Add(new GdalRenderer(rasterLayer)); // add optimized custom gdal renderer map.Layers.Add(rasterLayer); MapTestHelper.Show(map); }
public void ChangesInLayersBubbleUpToMap() { var coverage = new RegularGridCoverage(10, 10, 1, 1); var layer = new RegularGridCoverageLayer { Coverage = coverage }; int callCount = 0; var senders = new object[] { coverage, layer }; var propertyNames = new[] { "Name", "RenderRequired" }; ((INotifyPropertyChanged)layer).PropertyChanged += (sender, args) => { Assert.AreEqual(senders[callCount], sender); Assert.AreEqual(propertyNames[callCount], args.PropertyName); callCount++; }; //change the name of the layer coverage.Name = "new name"; //should result in property changed of map Assert.AreEqual(2, callCount); }
public void GenerateThemeForQuantityBilFileWithLegendFile() { const string fileName = @"..\..\..\..\..\test-data\DeltaShell\DeltaShell.Plugins.SharpMapGis.Tests\RasterData\FloatValues.bil"; RegularGridCoverageLayer rasterLayer = new RegularGridCoverageLayer(); GdalFeatureProvider rasterFeatureProvider = new GdalFeatureProvider { Path = fileName }; rasterLayer.DataSource = rasterFeatureProvider; IRegularGridCoverage grid = rasterLayer.Grid; ITheme theme = DemisMapControlLegendHelper.ConvertLegendToTheme(fileName, "value", grid); ICollection colors = new List <string>(new string[] { "000000", "E1E1FE", "DCD9FE", "D6D0FE", "D0C8FF", "CBC0FF", "C09EFF", "B57BFF", "A959FF", "9E36FF", "9314FF" }); ICollection values = new List <double>(new double[] { -16.9996604919434, -13.5799999237061, -10.1499996185303, -6.73000001907349, -3.29999995231628, .119999997317791, 3.54999995231628, 6.96999979019165, 10.3900003433228, 13.8199996948242, 17.2399997711182 }); Assert.IsInstanceOfType(typeof(QuantityTheme), theme); foreach (IThemeItem themeItem in theme.ThemeItems) { Assert.IsInstanceOfType(typeof(QuantityThemeItem), themeItem); Assert.IsInstanceOfType(typeof(VectorStyle), themeItem.Style); double value = ((QuantityThemeItem)themeItem).Interval.Max; Assert.Contains(value, values); ((List <double>)values).Remove(value); string color = FromColorToBGRString(((SolidBrush)((VectorStyle)themeItem.Style).Fill).Color); Assert.Contains(color, colors); ((List <string>)colors).Remove(color); } Assert.IsTrue(colors.Count == 0); Assert.IsTrue(values.Count == 0); }