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 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);
        }
        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);
        }
Пример #5
0
        public void RenderBilFileAsCoverage()
        {
            var map = new Map(new Size(400, 200)) {Name = "map1"};

            const string fileName = RasterDataPath + "SchematisatieInt.bil";
            var rasterFeatureProvider = new GdalFeatureProvider { Path = fileName };

            var rasterLayer = new RegularGridCoverageLayer();

            // add optimized custom gdal renderer
            rasterLayer.CustomRenderers.Add(new RegularGridCoverageRenderer(rasterLayer));
                
            rasterLayer.DataSource = rasterFeatureProvider;

            map.Layers.Add(rasterLayer);

            IRegularGridCoverage grid = rasterFeatureProvider.Grid;
            IList<int> values = grid.GetValues<int>();
            Assert.AreEqual(9, values.Count);

            MapTestHelper.ShowModal(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};
            var propertyNames = new[] {"Name"};

            ((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(1, callCount);
        }
        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);
        }
Пример #8
0
        public void ReadBinaryRasterFile()
        {
            string fileName = RasterDataPath + "SchematisatieInt.bil";
            var rasterLayer = new RegularGridCoverageLayer();

            var rasterFeatureProvider = new GdalFeatureProvider();
            rasterFeatureProvider.Open(fileName);
            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;
        }
Пример #9
0
        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 GenerateThemeForBilFileWithoutLegendFile()
        {
            const string fileName = @"..\..\..\..\..\test-data\DeltaShell\DeltaShell.Plugins.SharpMapGis.Tests\RasterData\SchematisatieUInt.bil";

            RegularGridCoverageLayer rasterLayer = new RegularGridCoverageLayer();
            GdalFeatureProvider rasterFeatureProvider = new GdalFeatureProvider();
            rasterFeatureProvider.Open(fileName);
            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);
            }
         }
Пример #11
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.ShowModal(map);
        }
Пример #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);
        }
Пример #13
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 + "wsiearth.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.ShowModal(map);
        }
Пример #14
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);
        }
Пример #15
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);
     }
 }
        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);

        }