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); }
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); }
/// <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")); }
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 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); }
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])); }
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); }
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); }
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); }
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); }
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])); }
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]); }
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); }
public void RetrievingFeaturesUsingArgument() { var featuresVariable = new Variable <SimpleFeature>(); var coverage = new FeatureCoverage { Arguments = { featuresVariable } }; coverage.Features .Should().Not.Be.Null(); }
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); }
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]); }
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); }
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 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); }
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); }
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); }
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); }
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); }
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")); }
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); }
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]); }
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); }
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 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); }
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]); }
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); }
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); }
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]); }
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); }
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); }
public void RetrievingFeaturesUsingArgument() { var featuresVariable = new Variable<SimpleFeature>(); var coverage = new FeatureCoverage {Arguments = {featuresVariable}}; coverage.Features .Should().Not.Be.Null(); }
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); }
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)); } }
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); }