Пример #1
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
        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);
        }
Пример #10
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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #14
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);
        }
Пример #15
0
        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);
        }