Пример #1
0
        public void MultipleFilterTest()
        {
            FeatureCoverage     waterLevel   = new FeatureCoverage("WaterLevel");
            Variable <DateTime> timeArgument = new Variable <DateTime>("time");

            waterLevel.Arguments.Add(timeArgument);
            Variable <SimpleFeature> boundariesFunctionArgument = new Variable <SimpleFeature>("cell");

            waterLevel.Arguments.Add(boundariesFunctionArgument);
            waterLevel.Components.Add(new Variable <float>("Level"));
            waterLevel.Features = (IList)boundaries;

            waterLevel.SetValues(new[] { 1.0f },
                                 new VariableValueFilter <DateTime>(timeArgument, new[]
            {
                new DateTime(2000, 1, 1, 0, 0, 0),
                new DateTime(2000, 2, 1, 0, 0, 0)
            }));

            IList <float> values = waterLevel.GetValues <float>();

            Assert.AreEqual(12, values.Count); // 6 for each timestep
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(1.0, values[5]);
        }
        public void ShowFeatureCoverageLayerWithLabelLayer()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <IFeature>());
            featureCoverage.Components.Add(new Variable <double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features     = new EventedList <IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;

            var fcLayer = new FeatureCoverageLayer
            {
                Coverage   = featureCoverage,
                LabelLayer =
                {
                    LabelColumn = featureCoverage.Components[0].Name,
                    Visible     = true
                }
            };

            var map = new Map();

            map.Layers.Add(fcLayer);
            var mapControl = new MapControl {
                Map = map, AllowDrop = false
            };

            WindowsFormsTestHelper.ShowModal(mapControl);
        }
Пример #3
0
        public void ValuesOfFeatureArgumentShouldworkAfterClear()
        {
            List <SimpleFeature> features = new List <SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));

            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());
            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            double[] values = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values);

            Assert.AreEqual(3, coverage.GetValues <double>().Count);
            // clear all
            coverage.Clear();

            coverage.SetValues(values, new VariableValueFilter <SimpleFeature>(coverage.FeatureVariable, features.ToArray()));

            Assert.AreEqual(3, coverage.GetValues <double>().Count);
        }
Пример #4
0
        /// <summary>
        /// Creates a volume model
        /// </summary>
        public VolumeModel()
        {
            // Create the input items of the volume model
            basin         = new DrainageBasin();
            precipitation = new TimeSeries {
                Components = { new Variable <double>("Precipitation") }
            };
            // Declare a two dimensional array.
            //double[,] array1 = new double[2, 3];

            // Create the output item of the volume model
            volume = new FeatureCoverage("Output data")
            {
                IsTimeDependent = true,
                Arguments       = { new Variable <IFeature>("Catchment")
                                    {
                                        FixedSize = 0
                                    } },
                Components = { new Variable <double>("Volume") }
            };



            // Wrap fields as input/output data items

            DataItems.Add(new DataItem(precipitation, "Precipitation", typeof(TimeSeries), DataItemRole.Input, "PrecipitationTag"));
            DataItems.Add(new DataItem(basin, "Basin", typeof(DrainageBasin), DataItemRole.Input, "BasinTag"));
            DataItems.Add(new DataItem(volume, "NIWA_model_value", typeof(FeatureCoverage), DataItemRole.Output, "VolumeTag"));
        }
Пример #5
0
        public void RenderFeatureCoverageWithNoTimes()
        {
            var featureCoverage = new FeatureCoverage {
                IsTimeDependent = true
            };

            //define a

            featureCoverage.Arguments.Add(new Variable <SimpleFeature>("feature")); // 1st dimension is feature
            featureCoverage.Components.Add(new Variable <double>());

            featureCoverage[new DateTime(2000, 1, 1), new SimpleFeature(2, new Point(1, 1))] = 10.0;

            var featureCoverageRenderer = new FeatureCoverageRenderer();
            var image = new Bitmap(100, 100, PixelFormat.Format32bppPArgb);

            var graphics             = Graphics.FromImage(image);
            var featureCoverageLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage, Map = new Map(new Size(100, 100))
            };

            featureCoverage.Time.Values.Clear();//remove all time values
            //render
            featureCoverageRenderer.Render(featureCoverage, graphics, featureCoverageLayer);
        }
Пример #6
0
        public void GeometryTypeGeneratedThemeIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<Branch>());
            featureCoverage.Components.Add(new Variable<double>());

            var network = new Network() { Name = "Test network" };

            var branch1 = new Branch()
                              {
                                  Name = "Link1",
                                  Geometry =
                                      new LineString(new[] {new Point(0, 0).Coordinate, new Point(10, 0).Coordinate})
                              };

            var branch2 = new Branch()
                              {
                                  Name = "Link2",
                                  Geometry =
                                      new LineString(new[] {new Point(10, 0).Coordinate, new Point(20, 0).Coordinate})
                              };


            network.Branches.AddRange(new[] {branch1, branch2});

            featureCoverage[branch1] = 1;
            featureCoverage[branch2] = 2;
            
            var fcLayer = new FeatureCoverageLayer { Coverage = featureCoverage };

            Assert.AreEqual(typeof(ILineString) ,fcLayer.Style.GeometryType);
            Assert.AreEqual(typeof(ILineString), ((VectorStyle)fcLayer.Theme.ThemeItems[0].Style).GeometryType);
        }
Пример #7
0
        public void GetTimeSeriesFromTimeDependentFeatureCoverage()
        {
            FeatureCoverage coverage     = GetTimeDependentFeatureCoverage();
            var             coverageName = "Waste disposal";

            coverage.Name = coverageName;

            var t1 = new DateTime(2000, 1, 1);
            var t2 = new DateTime(2000, 1, 2);
            var t3 = new DateTime(2000, 1, 3);

            //set some values for each time step
            coverage[t1] = new[] { 1.0, 2.0, 3.0 };
            coverage[t2] = new[] { 4.0, 5.0, 6.0 };
            coverage[t3] = new[] { 7.0, 8.0, 9.0 };

            //get a timeseries for the 1st feature
            var firstFeature = coverage.FeatureVariable.Values.OfType <SimpleFeature>().First();
            var featureName  = "Amsterdam";

            firstFeature.Name = featureName;
            var timesSeries = coverage.GetTimeSeries(firstFeature.Geometry.Coordinate);

            Assert.AreEqual(new[] { t1, t2, t3 }, timesSeries.Arguments[0].Values);
            Assert.AreEqual(new[] { 1.0d, 4.0d, 7.0d }, timesSeries.Components[0].Values);
            Assert.AreEqual(coverageName + " at " + featureName, timesSeries.Name);
            //check it is reduced
            Assert.AreEqual(1, timesSeries.Arguments.Count);
        }
        public void LabelLayerGetLabelIsDelegatedCorrectly()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <IFeature>());
            featureCoverage.Components.Add(new Variable <double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features     = new EventedList <IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;

            var fcLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage
            };

            var labelLayer = fcLayer.LabelLayer;

            Assert.IsNotNull(labelLayer.DataSource);
            Assert.IsNotNull(labelLayer.LabelStringDelegate);

            Assert.AreEqual(null, labelLayer.LabelStringDelegate(branches[0]));

            labelLayer.LabelColumn = featureCoverage.Components[0].Name;
            Assert.AreEqual((1.0).ToString("N3"), labelLayer.LabelStringDelegate(branches[0]));

            labelLayer.LabelColumn = "nonsense";
            Assert.AreEqual(null, labelLayer.LabelStringDelegate(branches[0]));
        }
Пример #9
0
        public void ClearValuesWhenFeaturesAreSet()
        {
            IList<SimpleFeature> features = new List<SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature"));
            
            coverage.Features = new EventedList<IFeature>(features.Cast<IFeature>());
            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            double[] values = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values);

            Assert.AreEqual(3, coverage.GetValues<double>().Count);

            // set features second time
            coverage.Features = new EventedList<IFeature>(features.Cast<IFeature>());

            Assert.AreEqual(3, coverage.GetValues<double>().Count);
        }
Пример #10
0
        public void GetTimeSeriesFromTimeDependentFeatureCoverageByFeatures()
        {
            FeatureCoverage coverage     = GetTimeDependentFeatureCoverage();
            var             coverageName = "Waste disposal";

            coverage.Name = coverageName;

            var t1 = new DateTime(2000, 1, 1);
            var t2 = new DateTime(2000, 1, 2);
            var t3 = new DateTime(2000, 1, 3);

            //set some values for each time step
            coverage[t1] = new[] { 1.0, 2.0, 3.0 };
            coverage[t2] = new[] { 4.0, 5.0, 6.0 };
            coverage[t3] = new[] { 7.0, 8.0, 9.0 };

            //get a timeseries for the 1st feature
            var firstFeature     = coverage.FeatureVariable.Values.OfType <SimpleFeature>().First();
            var firstFeatureName = "Schiedam";

            firstFeature.Name = firstFeatureName;
            var lastFeature     = coverage.FeatureVariable.Values.OfType <SimpleFeature>().Last();
            var lastFeatureName = "Maassluis";

            lastFeature.Name = lastFeatureName;
            var firstTimesSeries = coverage.GetTimeSeries(firstFeature);
            var lastTimesSeries  = coverage.GetTimeSeries(lastFeature);

            Assert.AreEqual(new[] { t1, t2, t3 }, firstTimesSeries.Arguments[0].Values);
            Assert.AreEqual(new[] { 1.0d, 4.0d, 7.0d }, firstTimesSeries.Components[0].Values);
            Assert.AreEqual(coverageName + " at " + firstFeatureName, firstTimesSeries.Name);
            Assert.AreEqual(new[] { t1, t2, t3 }, lastTimesSeries.Arguments[0].Values);
            Assert.AreEqual(new[] { 3.0d, 6.0d, 9.0d }, lastTimesSeries.Components[0].Values);
            Assert.AreEqual(coverageName + " at " + lastFeatureName, lastTimesSeries.Name);
        }
Пример #11
0
        public void ClearValuesWhenFeaturesAreSet()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));

            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());
            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            double[] values = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values);

            Assert.AreEqual(3, coverage.GetValues <double>().Count);

            // set features second time
            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());

            Assert.AreEqual(3, coverage.GetValues <double>().Count);
        }
Пример #12
0
        public void ShowFeatureCoverageLayerWithLabelLayer()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<IFeature>());
            featureCoverage.Components.Add(new Variable<double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features = new EventedList<IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;

            var fcLayer = new FeatureCoverageLayer
                              {
                                  Coverage = featureCoverage,
                                  LabelLayer =
                                      {
                                          LabelColumn = featureCoverage.Components[0].Name,
                                          Visible = true
                                      }
                              };

            var map = new Map();
            map.Layers.Add(fcLayer);
            var mapControl = new MapControl { Map = map, AllowDrop = false };
            WindowsFormsTestHelper.ShowModal(mapControl);
        }
Пример #13
0
        public void LabelLayerGetLabelIsDelegatedCorrectly()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<IFeature>());
            featureCoverage.Components.Add(new Variable<double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features = new EventedList<IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;

            var fcLayer = new FeatureCoverageLayer {Coverage = featureCoverage};

            var labelLayer = fcLayer.LabelLayer;

            Assert.IsNotNull(labelLayer.DataSource);
            Assert.IsNotNull(labelLayer.LabelStringDelegate);
            
            Assert.AreEqual(null, labelLayer.LabelStringDelegate(branches[0]));

            labelLayer.LabelColumn = featureCoverage.Components[0].Name;
            Assert.AreEqual((1.0).ToString("N3"), labelLayer.LabelStringDelegate(branches[0]));

            labelLayer.LabelColumn = "nonsense";
            Assert.AreEqual(null, labelLayer.LabelStringDelegate(branches[0]));
        }
Пример #14
0
        public void CreateAndSetValues()
        {
            IList<SimpleFeature> features = new List<SimpleFeature>
                                                {
                                                    new SimpleFeature(0, new Point(0, 0)),
                                                    new SimpleFeature(1, new Point(1, 1)),
                                                    new SimpleFeature(2, new Point(2, 2))
                                                };

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature"));
            coverage.Features = (IList) features;

            var feature = features[1];
            IList<double> values = coverage.GetValues<double>(new VariableValueFilter<SimpleFeature>(coverage.FeatureVariable, feature));
            Assert.AreEqual(1, values.Count);
            Assert.AreEqual(coverage.Components[0].DefaultValue, values[0]);

            IList<double> allValues = coverage.GetValues<double>();
            Assert.AreEqual(3, allValues.Count);

            double[] valuesArray = new double[3] { 1.0, 2.0, 3.0 };
            coverage.SetValues(valuesArray);

            values = coverage.GetValues<double>();
            
            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(2.0, values[1]);
            Assert.AreEqual(3.0, values[2]);
        }
Пример #15
0
        public void UseShapefileFeaturesAdFeatureCoverageSource()
        {
            string path =
                Path.Combine(sharpMapGisShapeFilePath, "rivers.shp");
            ShapeFile shapeFile = new ShapeFile(path);

            // select only some features from shapefile
            Envelope coverageFeatureEnvelope = shapeFile.GetExtents();

            coverageFeatureEnvelope.ExpandBy(0.5, 0.5);

            var coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            coverage.Arguments.Add(new Variable <Feature>("feature"));
            coverage.Features = new EventedList <IFeature>(shapeFile.Features.Cast <IFeature>());
            coverage.FeatureVariable.AddValues(coverage.Features);

            double[] values = new double[coverage.FeatureVariable.Values.Count];
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = i;
            }

            coverage.SetValues(values);
        }
Пример #16
0
        public void RetrievingFeaturesUsingArgument()
        {
            var featuresVariable = new Variable <SimpleFeature>();

            var coverage = new FeatureCoverage {
                Arguments = { featuresVariable }
            };

            coverage.Features
            .Should().Not.Be.Null();
        }
Пример #17
0
        private static FeatureCoverage GetTimeDependentFeatureCoverage()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>
            {
                new SimpleFeature(0, new Point(0, 0)),
                new SimpleFeature(1, new Point(1, 1)),
                new SimpleFeature(2, new Point(2, 2))
            };

            var coverage = FeatureCoverage.GetTimeDependentFeatureCoverage <SimpleFeature>();

            // set values of feature a variable
            coverage.Features.AddRange(features.OfType <IFeature>());
            coverage.FeatureVariable.SetValues(features);
            return(coverage);
        }
Пример #18
0
        public void CreateAndSetValuesWithTimeAsVariable()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            IVariable timeVariable = new Variable <DateTime>("time");

            coverage.Arguments.Add(timeVariable);
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));
            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());
            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            DateTime time1 = DateTime.Now;

            double[] values1 = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values1, new VariableValueFilter <DateTime>(timeVariable, time1));

            DateTime time2 = time1.AddDays(1);

            double[] values2 = new double[] { 10.0, 20.0, 30.0 };
            coverage.SetValues(values2, new VariableValueFilter <DateTime>(timeVariable, time2));

            // t = t1
            IList <double> values = coverage.GetValues <double>(new VariableValueFilter <DateTime>(timeVariable, time1));

            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(2.0, values[1]);
            Assert.AreEqual(3.0, values[2]);

            // t = t2
            values = coverage.GetValues <double>(new VariableValueFilter <DateTime>(timeVariable, time2));

            Assert.AreEqual(3, values.Count);

            Assert.AreEqual(10.0, values[0]);
            Assert.AreEqual(20.0, values[1]);
            Assert.AreEqual(30.0, values[2]);
        }
Пример #19
0
        public void LabelLayerIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <Branch>());
            featureCoverage.Components.Add(new Variable <double>());

            var network = new Network()
            {
                Name = "Test network"
            };

            var branch1 = new Branch()
            {
                Name     = "Link1",
                Geometry =
                    new LineString(new[] { new Point(0, 0).Coordinate, new Point(10, 0).Coordinate })
            };

            var branch2 = new Branch()
            {
                Name     = "Link2",
                Geometry =
                    new LineString(new[] { new Point(10, 0).Coordinate, new Point(20, 0).Coordinate })
            };


            var branches = new[] { branch1, branch2 };

            network.Branches.AddRange(branches);

            featureCoverage.Features = new EventedList <IFeature>(branches);
            featureCoverage[branch1] = 1.0;
            featureCoverage[branch2] = 2.0;

            var fcLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage
            };

            var fcLayerCloned = (FeatureCoverageLayer)fcLayer.Clone();

            Assert.AreSame(fcLayer.Coverage, fcLayerCloned.Coverage);
            Assert.IsNotNull(fcLayer.LabelLayer.Coverage);
            Assert.AreSame(fcLayer.LabelLayer.Coverage, fcLayerCloned.LabelLayer.Coverage);
        }
Пример #20
0
        public void GeometryTypeGeneratedThemeIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<Branch>());
            featureCoverage.Components.Add(new Variable<double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features = new EventedList<IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;
            
            var fcLayer = new FeatureCoverageLayer { Coverage = featureCoverage };

            Assert.AreEqual(typeof(ILineString), fcLayer.Style.GeometryType);
            Assert.AreEqual(typeof(ILineString), ((VectorStyle)fcLayer.Theme.ThemeItems[0].Style).GeometryType);
        }
Пример #21
0
        public void GeometryTypeGeneratedThemeIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <Branch>());
            featureCoverage.Components.Add(new Variable <double>());

            var network = new Network()
            {
                Name = "Test network"
            };

            var branch1 = new Branch()
            {
                Name     = "Link1",
                Geometry =
                    new LineString(new[] { new Point(0, 0).Coordinate, new Point(10, 0).Coordinate })
            };

            var branch2 = new Branch()
            {
                Name     = "Link2",
                Geometry =
                    new LineString(new[] { new Point(10, 0).Coordinate, new Point(20, 0).Coordinate })
            };


            var branches = new[] { branch1, branch2 };

            network.Branches.AddRange(branches);

            featureCoverage.Features = new EventedList <IFeature>(branches);
            featureCoverage[branch1] = 1.0;
            featureCoverage[branch2] = 2.0;

            var fcLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage
            };

            Assert.AreEqual(typeof(ILineString), fcLayer.Style.GeometryType);
            Assert.AreEqual(typeof(ILineString), ((VectorStyle)fcLayer.Theme.ThemeItems[0].Style).GeometryType);
        }
Пример #22
0
        public void CreateAndSetValues()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>
            {
                new SimpleFeature(0, new Point(0, 0)),
                new SimpleFeature(1, new Point(1, 1)),
                new SimpleFeature(2, new Point(2, 2))
            };

            FeatureCoverage coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));
            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());

            // nicer API is: coverage[features[0]] = 0.1;

            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            var            feature = features[1];
            IList <double> values  = coverage.GetValues <double>(new VariableValueFilter <SimpleFeature>(coverage.FeatureVariable, feature));

            Assert.AreEqual(1, values.Count);
            Assert.AreEqual(coverage.Components[0].DefaultValue, values[0]);

            IList <double> allValues = coverage.GetValues <double>();

            Assert.AreEqual(3, allValues.Count);

            double[] valuesArray = new double[3] {
                1.0, 2.0, 3.0
            };
            coverage.SetValues(valuesArray);

            values = coverage.GetValues <double>();

            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(2.0, values[1]);
            Assert.AreEqual(3.0, values[2]);
        }
        public void GeometryTypeGeneratedThemeIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <Branch>());
            featureCoverage.Components.Add(new Variable <double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features     = new EventedList <IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[1]] = 2.0;

            var fcLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage
            };

            Assert.AreEqual(typeof(ILineString), fcLayer.Style.GeometryType);
            Assert.AreEqual(typeof(ILineString), ((VectorStyle)fcLayer.Theme.ThemeItems[0].Style).GeometryType);
        }
        public void RenderFeatureCoverageWithNoTimes()
        {
            var featureCoverage = new FeatureCoverage {IsTimeDependent = true};
            //define a 
            
            featureCoverage.Arguments.Add(new Variable<SimpleFeature>("feature")); // 1st dimension is feature
            featureCoverage.Components.Add(new Variable<double>());

            featureCoverage[new DateTime(2000, 1, 1), new SimpleFeature(2,new Point(1,1))] = 10.0;

            var featureCoverageRenderer = new FeatureCoverageRenderer();
            var image = new Bitmap(100,100, PixelFormat.Format32bppPArgb);

            var graphics = Graphics.FromImage(image);
            var featureCoverageLayer = new FeatureCoverageLayer {Coverage = featureCoverage,Map = new Map(new Size(100,100))};
            
            featureCoverage.Time.Values.Clear();//remove all time values
            //render
            featureCoverageRenderer.Render(featureCoverage, graphics, featureCoverageLayer);
        }
        public void LabelLayerIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <Branch>());
            featureCoverage.Components.Add(new Variable <double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features     = new EventedList <IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[0]] = 2.0;

            var fcLayer = new FeatureCoverageLayer {
                Coverage = featureCoverage
            };

            var fcLayerCloned = (FeatureCoverageLayer)fcLayer.Clone();

            Assert.AreSame(fcLayer.Coverage, fcLayerCloned.Coverage);
        }
Пример #26
0
        public void ValuesOfFeatureArgumentInTimeDependentFunctionAfterClear()
        {
            // define features
            var features = new EventedList <IFeature>
            {
                new SimpleFeature(0, new Point(0, 0)),
                new SimpleFeature(1, new Point(1, 1)),
                new SimpleFeature(2, new Point(2, 2))
            };

            // create coverage
            var coverage = new FeatureCoverage();

            // define coverage components (attributes?)
            coverage.Components.Add(new Variable <double>("value"));

            // define coverage arguments (dimensionality of coverage attributes?)
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature")); // 1st dimension is feature

            IVariable timeVariable = new Variable <DateTime>("time");        // 2nd dimension is time

            coverage.Arguments.Add(timeVariable);

            // set features
            coverage.Features = features;

            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            // set coverage values
            var values = new[] { 1.0, 2.0, 3.0 };

            var time1 = DateTime.Now;

            coverage.SetValues(values, new VariableValueFilter <DateTime>(timeVariable, time1));
            coverage.SetValues(values, new VariableValueFilter <DateTime>(timeVariable, time1.AddDays(1)));

            // asserts
            Assert.AreEqual(6, coverage.GetValues <double>().Count);
        }
Пример #27
0
        private static FeatureCoverage GetTimeDependentFeatureCoverage()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>
            {
                new SimpleFeature(0, new Point(0, 0)),
                new SimpleFeature(1, new Point(1, 1)),
                new SimpleFeature(2, new Point(2, 2))
            };

            var coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            IVariable timeVariable = new Variable <DateTime>("time");

            coverage.Arguments.Add(timeVariable);
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));
            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());

            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);
            return(coverage);
        }
Пример #28
0
        public void CloneShouldCloneFeatures()
        {
            var features = new EventedList <IFeature> {
                new SimpleFeature(0, new Point(0, 0)), new SimpleFeature(1, new Point(1, 1))
            };

            var coverage = new FeatureCoverage
            {
                Arguments  = { new Variable <SimpleFeature>() },
                Components = { new Variable <double>() },
                Features   = features
            };

            coverage[features[0]] = 1.0;
            coverage[features[1]] = 2.0;

            // clone
            var clone = (FeatureCoverage)coverage.Clone();

            // check
            clone.Features.Count.Should().Be.EqualTo(2);
        }
Пример #29
0
        public SosService()
        {
            //jsonClient = new JSONClient("http://wellsensorobsp.niwa.co.nz:8080/52n-sos-aquarius-webapp/service");
            jsonClient = new JSONClient("http://localhost:8080/52n-sos-webapp/service");
            StartDate  = "2012-03-01";
            EndDate    = "2012-03-02";

            timeSeries = new FeatureCoverage("Time Series")
            {
                IsTimeDependent = true,
                Arguments       = { new Variable <IFeature>("Location")
                                    {
                                        FixedSize = 0
                                    } },
                Components = { new Variable <double>("Value") },
            };

            property = "Discharge"; //
            station  = "91401";     // ID of the station

            AddDataItemSet <TimeSeries>(new List <TimeSeries>(), "Results", DataItemRole.Output, "ResultsTag", false);
            // DataItems.Add(new DataItem(timeSeries, "Time Series", typeof(FeatureCoverage), DataItemRole.Output, "TimeSeriesTag"));
        }
Пример #30
0
        public void FilterCoverage()
        {
            IList <SimpleFeature> features = new List <SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();

            coverage.Components.Add(new Variable <double>("value"));
            IVariable timeVariable = new Variable <DateTime>("time");

            coverage.Arguments.Add(timeVariable);
            coverage.Arguments.Add(new Variable <SimpleFeature>("feature"));
            coverage.Features = new EventedList <IFeature>(features.Cast <IFeature>());
            // set values of feature a variable
            coverage.FeatureVariable.SetValues(features);

            DateTime time1 = DateTime.Now;

            coverage[time1] = new double[] { 1.0, 2.0, 3.0 };

            DateTime time2 = time1.AddDays(1);

            coverage[time2] = new[] { 10.0, 20.0, 30.0 };

            Assert.AreEqual(6, coverage.Components[0].Values.Count);
            //filter the created coverage
            IFeatureCoverage filteredCoverage = coverage.FilterAsFeatureCoverage(new VariableValueFilter <DateTime>(timeVariable, time2));

            //should not change the original!
            Assert.AreEqual(6, coverage.Components[0].Values.Count);

            Assert.AreEqual(coverage.Features.Count, filteredCoverage.Features.Count);
            Assert.AreEqual(3, filteredCoverage.Components[0].Values.Count);
        }
Пример #31
0
        public void BranchSegmentBoundaryAsFunctionArgument_TimeDependent()
        {
            // Test with 2 arguments. A FeatureVariable DateTime as timestep
            // Add values to the store and test the retieved values
            object defaultValue = default(float);

            FeatureCoverage waterLevelCoverage = new FeatureCoverage("WaterLevel");
            Variable<DateTime> timeArgument = new Variable<DateTime>("time");
            waterLevelCoverage.Arguments.Add(timeArgument);
            Variable<SimpleFeature> boundariesFunctionArgument = new Variable<SimpleFeature>("cell");
            waterLevelCoverage.Arguments.Add(boundariesFunctionArgument);
            waterLevelCoverage.Components.Add(new Variable<float>("depth"));
            waterLevelCoverage.Features = (IList)boundaries;

            // no data added; we expect 0 rows in the table
            IList<float> values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(0, values.Count);

            // Add 1 value for a boundary. The store will add rows with default values for all 
            // boundaries in the network.BranchSegmentBoundaries collection and set 
            // the value 1.0 to the explicit referenced boundary11.
            waterLevelCoverage[new DateTime(2000, 1, 1, 0, 0, 0), boundary11] = 1.0;
            values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(defaultValue, values[1]);
            Assert.AreEqual(defaultValue, values[2]);
            Assert.AreEqual(defaultValue, values[3]);
            Assert.AreEqual(defaultValue, values[4]);
            Assert.AreEqual(defaultValue, values[5]);

            // Add a new timestep and set lavel for all boundaries for this step to 2.0
            waterLevelCoverage.SetValues(new[] { 2.0f } ,
                                         new VariableValueFilter<DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(12, values.Count);

            // Overwrite the waterlevels of the first timestep to 1.0; there are no default values in the 
            // internal table
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0   
            // t=2000, 2, 1  2.0   2.0   2.0   2.0   2.0   2.0   
            waterLevelCoverage.SetValues(new[] { 1.0f } ,
                                         new VariableValueFilter<DateTime>(timeArgument, new DateTime(2000, 1, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(12, values.Count);

            // Overwrite the waterlevels of the 2nd timestep.
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0   
            // t=2000, 2, 1  1.0   2.0   3.0   4.0   5.0   6.0   
            waterLevelCoverage.SetValues(new[] { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f } ,
                                         new VariableValueFilter<DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(12, values.Count);

            // Add a 3rd timestep to the function. 
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0   
            // t=2000, 2, 1  1.0   2.0   3.0   4.0   5.0   6.0   
            // t=2000, 3, 1 11.0  12.0  13.0  14.0  15.0  16.0   
            waterLevelCoverage.SetValues(new[] { 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f } ,
                                         new VariableValueFilter<DateTime>(timeArgument, new DateTime(2000, 3, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues<float>();
            Assert.AreEqual(18, values.Count);

            // Ask all timesteps for boundary 21
            values = waterLevelCoverage.GetValues<float>(new VariableValueFilter<SimpleFeature>(boundariesFunctionArgument, boundary21));
            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(4.0, values[1]);
            Assert.AreEqual(14.0, values[2]);
            // Use 2 filters to get values; multiple filters work as a logical AND; only 1 values expected
            values = waterLevelCoverage.GetValues<float>(new VariableValueFilter<SimpleFeature>(boundariesFunctionArgument, boundary21),
                                                         new VariableValueFilter<DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            Assert.AreEqual(1, values.Count);
            Assert.AreEqual(4.0, values[0]);
        }
Пример #32
0
        public void DeleteTimeStepTest()
        {
            //waterLevel = f(cell,time)
            IFeatureCoverage waterLevelCoverage = new FeatureCoverage("WaterLevelCoverage");

            IVariable<int> timeVariable = new Variable<int>("timestep");
            IVariable<SimpleFeature> boundariesVariable = new Variable<SimpleFeature>("cell");
            IVariable<float> waterLevelVariable = new Variable<float>("Level");  
         
            waterLevelCoverage.Arguments.Add(timeVariable);
            waterLevelCoverage.Arguments.Add(boundariesVariable);
            waterLevelCoverage.Components.Add(waterLevelVariable);

            waterLevelCoverage.Features = (IList)boundaries;

            for (int i = 0; i < 12; i++)
            {
                waterLevelCoverage.SetValues(new[] { (i * 10) + 1.0f, (i * 10) + 2.0f, (i * 10) + 3.0f, 
                                                           (i * 10) + 4.0f, (i * 10) + 5.0f, (i * 10) + 6.0f } ,
                                             new VariableValueFilter<int>(timeVariable, i));
            }
            // content should be now:
            // t=0   :  1.0   2.0   3.0   4.0   5.0   6.0   
            // t=1   : 11.0  12.0  13.0  14.0  15.0  16.0   
            // ..
            // ..
            // t=11  :111.0 112.0 113.0 114.0 115.0 116.0   

            IList<float> values = waterLevelVariable.GetValues();
            Assert.AreEqual(6 * 12, values.Count);
            Assert.AreEqual(14.0, values[9]);
            Assert.AreEqual(114.0, values[69]);

            values = waterLevelVariable.GetValues(new VariableValueFilter<int>(timeVariable, 5));
            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(51, values[0]);
            Assert.AreEqual(56, values[5]);

            // Remove values at t=2
            timeVariable.Values.Remove(2);
            values = waterLevelVariable.GetValues();
            Assert.AreEqual(6 * 11, values.Count);
            timeVariable.Values.Remove(3);
            timeVariable.Values.Remove(4);
            IList argumentValues = waterLevelCoverage.Arguments[0].Values;
            Assert.AreEqual(9, argumentValues.Count);
            Assert.AreEqual(11, argumentValues[8]);

            timeVariable.Values.Remove(5);
            timeVariable.Values.Remove(6);
            timeVariable.Values.Remove(7);
            argumentValues = waterLevelCoverage.Arguments[0].Values;
            Assert.AreEqual(6, argumentValues.Count);
            Assert.AreEqual(11, argumentValues[5]);

            waterLevelCoverage.RemoveValues(new VariableValueFilter<int>(timeVariable, new [] { 0, 1, 8, 9, 10, 11 }));

            values = waterLevelVariable.GetValues();
            Assert.AreEqual(0, values.Count);
            argumentValues = waterLevelCoverage.Arguments[0].Values;
            Assert.AreEqual(0, argumentValues.Count);
        }
Пример #33
0
        public void MultipleFilterTest()
        {
            FeatureCoverage waterLevel = new FeatureCoverage("WaterLevel");
            Variable<DateTime> timeArgument = new Variable<DateTime>("time");
            waterLevel.Arguments.Add(timeArgument);
            Variable<SimpleFeature> boundariesFunctionArgument = new Variable<SimpleFeature>("cell");
            waterLevel.Arguments.Add(boundariesFunctionArgument);
            waterLevel.Components.Add(new Variable<float>("Level"));
            waterLevel.Features = (IList)boundaries;

            waterLevel.SetValues(new[] {1.0f},
                                 new VariableValueFilter<DateTime>(timeArgument, new[]
                                                                           {
                                                                               new DateTime(2000, 1, 1, 0, 0, 0),
                                                                               new DateTime(2000, 2, 1, 0, 0, 0)
                                                                           }));

            IList<float> values = waterLevel.GetValues<float>();
            Assert.AreEqual(12, values.Count); // 6 for each timestep
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(1.0, values[5]);
        }
Пример #34
0
        public void CloneShouldCloneFeatures()
        {
            var features = new EventedList<IFeature> {new SimpleFeature(0, new Point(0, 0)), new SimpleFeature(1, new Point(1, 1))};

            var coverage = new FeatureCoverage
                               {
                                   Arguments = { new Variable<SimpleFeature>() },
                                   Components = { new Variable<double>() },
                                   Features = features 
                               };

            coverage[features[0]] = 1.0;
            coverage[features[1]] = 2.0;

            // clone
            var clone = (FeatureCoverage)coverage.Clone();

            // check
            clone.Features.Count.Should().Be.EqualTo(2);
        }
Пример #35
0
        public void BranchSegmentBoundaryAsFunctionArgument_TimeDependent()
        {
            // Test with 2 arguments. A FeatureVariable DateTime as timestep
            // Add values to the store and test the retieved values
            object defaultValue = default(float);

            FeatureCoverage     waterLevelCoverage = new FeatureCoverage("WaterLevel");
            Variable <DateTime> timeArgument       = new Variable <DateTime>("time");

            waterLevelCoverage.Arguments.Add(timeArgument);
            Variable <SimpleFeature> boundariesFunctionArgument = new Variable <SimpleFeature>("cell");

            waterLevelCoverage.Arguments.Add(boundariesFunctionArgument);
            waterLevelCoverage.Components.Add(new Variable <float>("depth"));
            waterLevelCoverage.Features = (IList)boundaries;

            // no data added; we expect 0 rows in the table
            IList <float> values = waterLevelCoverage.GetValues <float>();

            Assert.AreEqual(0, values.Count);

            // Add 1 value for a boundary. The store will add rows with default values for all
            // boundaries in the network.BranchSegmentBoundaries collection and set
            // the value 1.0 to the explicit referenced boundary11.
            waterLevelCoverage[new DateTime(2000, 1, 1, 0, 0, 0), boundary11] = 1.0;
            values = waterLevelCoverage.GetValues <float>();
            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(defaultValue, values[1]);
            Assert.AreEqual(defaultValue, values[2]);
            Assert.AreEqual(defaultValue, values[3]);
            Assert.AreEqual(defaultValue, values[4]);
            Assert.AreEqual(defaultValue, values[5]);

            // Add a new timestep and set lavel for all boundaries for this step to 2.0
            waterLevelCoverage.SetValues(new[] { 2.0f },
                                         new VariableValueFilter <DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues <float>();
            Assert.AreEqual(12, values.Count);

            // Overwrite the waterlevels of the first timestep to 1.0; there are no default values in the
            // internal table
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0
            // t=2000, 2, 1  2.0   2.0   2.0   2.0   2.0   2.0
            waterLevelCoverage.SetValues(new[] { 1.0f },
                                         new VariableValueFilter <DateTime>(timeArgument, new DateTime(2000, 1, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues <float>();
            Assert.AreEqual(12, values.Count);

            // Overwrite the waterlevels of the 2nd timestep.
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0
            // t=2000, 2, 1  1.0   2.0   3.0   4.0   5.0   6.0
            waterLevelCoverage.SetValues(new[] { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f },
                                         new VariableValueFilter <DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues <float>();
            Assert.AreEqual(12, values.Count);

            // Add a 3rd timestep to the function.
            // content should be now:
            // t=2000, 1, 1  1.0   1.0   1.0   1.0   1.0   1.0
            // t=2000, 2, 1  1.0   2.0   3.0   4.0   5.0   6.0
            // t=2000, 3, 1 11.0  12.0  13.0  14.0  15.0  16.0
            waterLevelCoverage.SetValues(new[] { 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f },
                                         new VariableValueFilter <DateTime>(timeArgument, new DateTime(2000, 3, 1, 0, 0, 0)));
            values = waterLevelCoverage.GetValues <float>();
            Assert.AreEqual(18, values.Count);

            // Ask all timesteps for boundary 21
            values = waterLevelCoverage.GetValues <float>(new VariableValueFilter <SimpleFeature>(boundariesFunctionArgument, boundary21));
            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(4.0, values[1]);
            Assert.AreEqual(14.0, values[2]);
            // Use 2 filters to get values; multiple filters work as a logical AND; only 1 values expected
            values = waterLevelCoverage.GetValues <float>(new VariableValueFilter <SimpleFeature>(boundariesFunctionArgument, boundary21),
                                                          new VariableValueFilter <DateTime>(timeArgument, new DateTime(2000, 2, 1, 0, 0, 0)));
            Assert.AreEqual(1, values.Count);
            Assert.AreEqual(4.0, values[0]);
        }
Пример #36
0
        public void LabelLayerIsCorrect()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<Branch>());
            featureCoverage.Components.Add(new Variable<double>());

            var branches = CreateNBranchesNetwork(2);

            featureCoverage.Features = new EventedList<IFeature>(branches);
            featureCoverage[branches[0]] = 1.0;
            featureCoverage[branches[0]] = 2.0;

            var fcLayer = new FeatureCoverageLayer { Coverage = featureCoverage };

            var fcLayerCloned = (FeatureCoverageLayer)fcLayer.Clone();

            Assert.AreSame(fcLayer.Coverage, fcLayerCloned.Coverage);
        }
Пример #37
0
        public void ValuesOfFeatureArgumentInTimeDependentFunctionAfterClear()
        {
            // define features
            var features = new List<SimpleFeature>
                                               {
                                                   new SimpleFeature(0, new Point(0, 0)),
                                                   new SimpleFeature(1, new Point(1, 1)),
                                                   new SimpleFeature(2, new Point(2, 2))
                                               };

            // create coverage
            var coverage = new FeatureCoverage();
            
            // define coverage components (attributes?)
            coverage.Components.Add(new Variable<double>("value"));
            
            // define coverage arguments (dimensionality of coverage attributes?)
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature")); // 1st dimension is feature

            IVariable timeVariable = new Variable<DateTime>("time"); // 2nd dimension is time
            coverage.Arguments.Add(timeVariable);

            // set feature values
            coverage.Features = features;

            // set coverage values
            var values = new[] { 1.0, 2.0, 3.0 };

            var time1 = DateTime.Now;
            coverage.SetValues(values, new VariableValueFilter<DateTime>(timeVariable, time1));
            coverage.SetValues(values, new VariableValueFilter<DateTime>(timeVariable, time1.AddDays(1)));

            // asserts
            Assert.AreEqual(6, coverage.GetValues<double>().Count);
        }
Пример #38
0
        public void CreateAndSetValuesWithTimeAsVariable()
        {
            IList<SimpleFeature> features = new List<SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            IVariable timeVariable = new Variable<DateTime>("time");
            coverage.Arguments.Add(timeVariable);
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature"));
            coverage.Features = (IList) features;

            DateTime time1 = DateTime.Now;
            double[] values1 = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values1, new VariableValueFilter<DateTime>(timeVariable, time1));

            DateTime time2 = time1.AddDays(1);
            double[] values2 = new double[] { 10.0, 20.0, 30.0 };
            coverage.SetValues(values2, new VariableValueFilter<DateTime>(timeVariable, time2));

            // t = t1
            IList<double> values = coverage.GetValues<double>(new VariableValueFilter<DateTime>(timeVariable, time1));

            Assert.AreEqual(3, values.Count);
            Assert.AreEqual(1.0, values[0]);
            Assert.AreEqual(2.0, values[1]);
            Assert.AreEqual(3.0, values[2]);

            // t = t2
            values = coverage.GetValues<double>(new VariableValueFilter<DateTime>(timeVariable, time2));

            Assert.AreEqual(3, values.Count);
           
            Assert.AreEqual(10.0, values[0]);
            Assert.AreEqual(20.0, values[1]);
            Assert.AreEqual(30.0, values[2]);
        }
Пример #39
0
        public void UseShapefileFeaturesAdFeatureCoverageSource()
        {
            string path =
                Path.Combine(sharpMapGisShapeFilePath,"rivers.shp");
            ShapeFile shapeFile = new ShapeFile(path);
            
            // select only some features from shapefile
            IEnvelope coverageFeatureEnvelope = shapeFile.GetExtents();
            coverageFeatureEnvelope.ExpandBy(0.5, 0.5);

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            coverage.Arguments.Add(new Variable<FeatureDataRow>("feature"));
            coverage.Features = shapeFile.GetFeatures(coverageFeatureEnvelope);

            double[] values = new double[coverage.FeatureVariable.Values.Count];
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = i;
            }

            coverage.SetValues(values);
        }
Пример #40
0
        public void FilterCoverage()
        {
            IList<SimpleFeature> features = new List<SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            IVariable timeVariable = new Variable<DateTime>("time");
            coverage.Arguments.Add(timeVariable);
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature"));
            coverage.Features = (IList) features;

            DateTime time1 = DateTime.Now;
            double[] values1 = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values1, new VariableValueFilter<DateTime>(timeVariable, time1));

            DateTime time2 = time1.AddDays(1);
            double[] values2 = new double[] { 10.0, 20.0, 30.0 };
            coverage.SetValues(values2, new VariableValueFilter<DateTime>(timeVariable, time2));

            Assert.AreEqual(6,coverage.Components[0].Values.Count);
            //filter the created coverage
            IFeatureCoverage filteredCoverage = coverage.Filter(new VariableValueFilter<DateTime>(timeVariable, time2));
            //should not change the original!
            Assert.AreEqual(6,coverage.Components[0].Values.Count);
            
            Assert.AreEqual(coverage.Features.Count, filteredCoverage.Features.Count);
            Assert.AreEqual(3,filteredCoverage.Components[0].Values.Count);
        }
Пример #41
0
        public void RetrievingFeaturesUsingArgument()
        {
            var featuresVariable = new Variable<SimpleFeature>();

            var coverage = new FeatureCoverage {Arguments = {featuresVariable}};

            coverage.Features
                .Should().Not.Be.Null();
        }
Пример #42
0
        public void ValuesOfFeatureArgumentShouldworkAfterClear()
        {
            List<SimpleFeature> features = new List<SimpleFeature>();

            features.Add(new SimpleFeature(0, new Point(0, 0)));
            features.Add(new SimpleFeature(1, new Point(1, 1)));
            features.Add(new SimpleFeature(2, new Point(2, 2)));

            FeatureCoverage coverage = new FeatureCoverage();
            coverage.Components.Add(new Variable<double>("value"));
            coverage.Arguments.Add(new Variable<SimpleFeature>("feature"));

            coverage.Features = (IList)features;

            double[] values = new double[] { 1.0, 2.0, 3.0 };
            coverage.SetValues(values);

            Assert.AreEqual(3, coverage.GetValues<double>().Count);
            // clear all
            coverage.Clear(); 

            coverage.SetValues(values, new VariableValueFilter<SimpleFeature>(coverage.FeatureVariable, features.ToArray()));

            Assert.AreEqual(3, coverage.GetValues<double>().Count);            
        }
Пример #43
0
        public void GradientThemeRescaledAsExpected()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable<IFeature>());
            featureCoverage.Components.Add(new Variable<double>());

            var branches = CreateNBranchesNetwork(5);

            featureCoverage.Features = new EventedList<IFeature>(branches);

            double variableValue = 0.0;
            var expectedColors = new Dictionary<IFeature, Color>(5);
            double minvalue = 1.0;
            double maxvalue = 3.0;
            foreach (var branch in branches)
            {
                featureCoverage[branch] = variableValue;
                int grayscaleValue = variableValue <= minvalue
                                         ? 0
                                         : variableValue >= maxvalue
                                               ? 255
                                               : Convert.ToInt32(255*(variableValue - minvalue)/(maxvalue - minvalue));
                expectedColors[branch] = Color.FromArgb(255, grayscaleValue, grayscaleValue, grayscaleValue);
                variableValue += 1;
            }

            var theme = ThemeFactory.CreateGradientTheme("", null, new ColorBlend(new[] { Color.Black, Color.White },
                                                                      new[] {0f, 1f}), minvalue, maxvalue, 3, 3, false, true,
                                             3);

            var fcLayer = new FeatureCoverageLayer
            {
                AutoUpdateThemeOnDataSourceChanged = false,
                Coverage = featureCoverage,
                Theme = theme
            };

            foreach (var branch in branches)
            {
                AssertColor(expectedColors[branch], fcLayer.Theme.GetFillColor((double)featureCoverage[branch]));
            }

            fcLayer.Theme.ScaleTo(0.0, 2.0);

            var min = ((GradientTheme)fcLayer.Theme).Min;
            var max = ((GradientTheme)fcLayer.Theme).Max;
            Assert.AreEqual(0.0, min);
            Assert.AreEqual(2.0, max);
            foreach (var branch in branches)
            {
                variableValue = (double) featureCoverage[branch];
                int greyScaleValue = variableValue <= min
                                         ? 0
                                         : variableValue >= max
                                               ? 255
                                               : Convert.ToInt32(255 * (variableValue - min) / (max - min));
                AssertColor(Color.FromArgb(255, greyScaleValue, greyScaleValue, greyScaleValue), fcLayer.Theme.GetFillColor(variableValue));
            }
        }
        public void GradientThemeRescaledAsExpected()
        {
            var featureCoverage = new FeatureCoverage();

            featureCoverage.Arguments.Add(new Variable <IFeature>());
            featureCoverage.Components.Add(new Variable <double>());

            var branches = CreateNBranchesNetwork(5);

            featureCoverage.Features = new EventedList <IFeature>(branches);

            double variableValue  = 0.0;
            var    expectedColors = new Dictionary <IFeature, Color>(5);
            double minvalue       = 1.0;
            double maxvalue       = 3.0;

            foreach (var branch in branches)
            {
                featureCoverage[branch] = variableValue;
                int grayscaleValue = variableValue <= minvalue
                                         ? 0
                                         : variableValue >= maxvalue
                                               ? 255
                                               : Convert.ToInt32(255 * (variableValue - minvalue) / (maxvalue - minvalue));
                expectedColors[branch] = Color.FromArgb(255, grayscaleValue, grayscaleValue, grayscaleValue);
                variableValue         += 1;
            }

            var theme = ThemeFactory.CreateGradientTheme("", null, new ColorBlend(new[] { Color.Black, Color.White },
                                                                                  new[] { 0f, 1f }), minvalue, maxvalue, 3, 3, false, true,
                                                         3);

            var fcLayer = new FeatureCoverageLayer
            {
                AutoUpdateThemeOnDataSourceChanged = false,
                Coverage = featureCoverage,
                Theme    = theme
            };

            foreach (var branch in branches)
            {
                AssertColor(expectedColors[branch], fcLayer.Theme.GetFillColor((double)featureCoverage[branch]));
            }

            fcLayer.Theme.ScaleTo(0.0, 2.0);

            var min = ((GradientTheme)fcLayer.Theme).Min;
            var max = ((GradientTheme)fcLayer.Theme).Max;

            Assert.AreEqual(0.0, min);
            Assert.AreEqual(2.0, max);
            foreach (var branch in branches)
            {
                variableValue = (double)featureCoverage[branch];
                int greyScaleValue = variableValue <= min
                                         ? 0
                                         : variableValue >= max
                                               ? 255
                                               : Convert.ToInt32(255 * (variableValue - min) / (max - min));
                AssertColor(Color.FromArgb(255, greyScaleValue, greyScaleValue, greyScaleValue), fcLayer.Theme.GetFillColor(variableValue));
            }
        }
Пример #45
0
        public void DeleteTimeStepTest()
        {
            //waterLevel = f(cell,time)
            IFeatureCoverage waterLevelCoverage = new FeatureCoverage("WaterLevelCoverage");

            IVariable <int>           timeVariable       = new Variable <int>("timestep");
            IVariable <SimpleFeature> boundariesVariable = new Variable <SimpleFeature>("cell");
            IVariable <float>         waterLevelVariable = new Variable <float>("Level");

            waterLevelCoverage.Arguments.Add(timeVariable);
            waterLevelCoverage.Arguments.Add(boundariesVariable);
            waterLevelCoverage.Components.Add(waterLevelVariable);

            waterLevelCoverage.Features = (IList)boundaries;

            for (int i = 0; i < 12; i++)
            {
                waterLevelCoverage.SetValues(new[] { (i * 10) + 1.0f, (i * 10) + 2.0f, (i * 10) + 3.0f,
                                                     (i * 10) + 4.0f, (i * 10) + 5.0f, (i * 10) + 6.0f },
                                             new VariableValueFilter <int>(timeVariable, i));
            }
            // content should be now:
            // t=0   :  1.0   2.0   3.0   4.0   5.0   6.0
            // t=1   : 11.0  12.0  13.0  14.0  15.0  16.0
            // ..
            // ..
            // t=11  :111.0 112.0 113.0 114.0 115.0 116.0

            IList <float> values = waterLevelVariable.GetValues();

            Assert.AreEqual(6 * 12, values.Count);
            Assert.AreEqual(14.0, values[9]);
            Assert.AreEqual(114.0, values[69]);

            values = waterLevelVariable.GetValues(new VariableValueFilter <int>(timeVariable, 5));
            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(51, values[0]);
            Assert.AreEqual(56, values[5]);

            // Remove values at t=2
            timeVariable.Values.Remove(2);
            values = waterLevelVariable.GetValues();
            Assert.AreEqual(6 * 11, values.Count);
            timeVariable.Values.Remove(3);
            timeVariable.Values.Remove(4);
            IList argumentValues = waterLevelCoverage.Arguments[0].Values;

            Assert.AreEqual(9, argumentValues.Count);
            Assert.AreEqual(11, argumentValues[8]);

            timeVariable.Values.Remove(5);
            timeVariable.Values.Remove(6);
            timeVariable.Values.Remove(7);
            argumentValues = waterLevelCoverage.Arguments[0].Values;
            Assert.AreEqual(6, argumentValues.Count);
            Assert.AreEqual(11, argumentValues[5]);

            waterLevelCoverage.RemoveValues(new VariableValueFilter <int>(timeVariable, new [] { 0, 1, 8, 9, 10, 11 }));

            values = waterLevelVariable.GetValues();
            Assert.AreEqual(0, values.Count);
            argumentValues = waterLevelCoverage.Arguments[0].Values;
            Assert.AreEqual(0, argumentValues.Count);
        }