public void OrderOfFunctionsAfterReopenShouldBeTheSame() { var path = TestHelper.GetCurrentMethodName() + ".tif"; var store = new GdalFunctionStore(); store.CreateNew(path); var grid = new RegularGridCoverage(2, 2, 1, 1); store.Functions.Add(grid); // remember indices var indexGrid = store.Functions.IndexOf(grid); var indexValues = store.Functions.IndexOf(grid.Components[0]); var indexX = store.Functions.IndexOf(grid.X); var indexY = store.Functions.IndexOf(grid.Y); store.Close(); // re-open store and check if we functions are at the same indices var openedStore = new GdalFunctionStore(); openedStore.Open(path); var openedGrid = openedStore.Grid; openedStore.Functions.IndexOf(openedGrid) .Should("index of grid coverage").Be.EqualTo(indexGrid); openedStore.Functions.IndexOf(openedGrid.Components[0]) .Should("index of values component").Be.EqualTo(indexValues); openedStore.Functions.IndexOf(openedGrid.X) .Should("index of X").Be.EqualTo(indexX); openedStore.Functions.IndexOf(openedGrid.Y) .Should("index of Y").Be.EqualTo(indexY); }
public void CreateBilFileFromRegularGrid() { var gdalFunctionStore = new GdalFunctionStore(); var gridCoverage = new RegularGridCoverage(); gridCoverage.Components.Clear(); var newComponent = new Variable <float>(); gridCoverage.Components.Add(newComponent); gridCoverage.Resize(3, 2, 10, 20, new Coordinate(200, 2000)); //create a sequence of numbers: 1 , 2, 3, 4, 5, 6, var originalValues = new float[] { 1, 2, 3, 4, 5, 6 }; gridCoverage.SetValues(originalValues); string path = TestHelper.GetCurrentMethodName() + ".bil"; //TODO: get rid of this strang method. //do store.CreateNew(path) // store.Functions.Add(gridCoverage) //this is more like the other stores gdalFunctionStore.CreateNew(path); gdalFunctionStore.Functions.Add(gridCoverage); var clone = gdalFunctionStore.Grid; Assert.AreEqual(gdalFunctionStore, clone.Store); Assert.IsTrue(originalValues.SequenceEqual(gdalFunctionStore.GetVariableValues <float>(clone.Components[0]))); //replace data in first column clone.SetValues(new float[] { 0, 0 }, new VariableValueFilter <double>(clone.X, new double[] { 200 })); Assert.IsTrue(new float[] { 0, 2, 3, 0, 5, 6 }.SequenceEqual(gdalFunctionStore.GetVariableValues <float>(clone.Components[0]))); Assert.AreEqual(2000, clone.Origin.Y); Assert.AreEqual(200, clone.Origin.X); Assert.AreEqual(3, clone.SizeX); Assert.AreEqual(2, clone.SizeY); Assert.AreEqual(10, clone.DeltaX); Assert.AreEqual(20, clone.DeltaY); gdalFunctionStore.Close(); gdalFunctionStore = new GdalFunctionStore(); //reread file to see wether it contains the right data. gdalFunctionStore.Open(path); var grid = (IRegularGridCoverage)gdalFunctionStore.Functions.First(f => f is IRegularGridCoverage); Assert.IsTrue(new float[] { 0, 2, 3, 0, 5, 6 }.SequenceEqual(gdalFunctionStore.GetVariableValues <float>(grid.Components[0]))); Assert.AreEqual(2000, grid.Origin.Y); Assert.AreEqual(200, grid.Origin.X); Assert.AreEqual(3, grid.SizeX); Assert.AreEqual(2, grid.SizeY); Assert.AreEqual(10, grid.DeltaX); Assert.AreEqual(20, grid.DeltaY); }
public void CreateTiffFileFromRegularGrid() { var gdalFunctionStore = new GdalFunctionStore(); var gridCoverage = new RegularGridCoverage(); gridCoverage.Resize(3, 2, 10, -20, new Coordinate(200, 2000)); gridCoverage.Components.RemoveAt(0); gridCoverage.Components.Add(new Variable <float>()); var inputData = new float[] { 1, 2, 3, 4, 5, 6 }; gridCoverage.SetValues(inputData); const string path = "CreateTiffFileFromRegularGrid.tiff"; gdalFunctionStore.CreateNew(path); gdalFunctionStore.Functions.Add(gridCoverage); gdalFunctionStore.Close(); gdalFunctionStore = new GdalFunctionStore(); //reread file to see wether it contains the right data. gdalFunctionStore.Open(path); var grid = (IRegularGridCoverage)gdalFunctionStore.Functions.First(f => f is IRegularGridCoverage); Assert.IsTrue(inputData.SequenceEqual(gdalFunctionStore.GetVariableValues <float>(grid.Components[0]))); Assert.AreEqual(gridCoverage.Origin.Y, grid.Origin.Y); Assert.AreEqual(gridCoverage.Origin.X, grid.Origin.X); Assert.AreEqual(gridCoverage.SizeX, grid.SizeX); Assert.AreEqual(gridCoverage.SizeY, grid.SizeY); Assert.AreEqual(gridCoverage.DeltaX, grid.DeltaX); Assert.AreEqual(gridCoverage.DeltaY, grid.DeltaY); //updating tiff file //values before: 2,5 // TODO: make it readable! Assert.IsTrue((new float[] { 2, 5 }).SequenceEqual(gdalFunctionStore.GetVariableValues <float>(grid.Components[0], new VariableValueFilter <double>( grid.X, new double[] { 210 })))); grid.SetValues(new[] { 0, 10.5f }, new VariableValueFilter <double>(grid.X, new double[] { 210 })); //values after: 0,10 Assert.IsTrue( (new[] { 0, 10.5f }).SequenceEqual(gdalFunctionStore.GetVariableValues <float>(grid.Components[0], new VariableValueFilter <double>(grid.X, new double[] { 210 })))); }
public void StoreShouldHaveCorrectFunctionsAfterOpen() { var path = TestHelper.GetCurrentMethodName() + ".tif"; // create store and add grid var store = new GdalFunctionStore(); store.CreateNew(path); var grid = new RegularGridCoverage(2, 2, 1, 1); grid.SetValues(new[] { 1, 2, 3, 4 }); store.Functions.Add(grid); store.Close(); // re-open store and check if we have correct functions var openedStore = new GdalFunctionStore(); openedStore.Open(path); openedStore.Functions.Count .Should("Added function should be: grid, values, x, y").Be.EqualTo(4); openedStore.Functions.OfType <RegularGridCoverage>().Count() .Should("Store should contain a single grid").Be.EqualTo(1); var openedGrid = openedStore.Functions.OfType <RegularGridCoverage>().FirstOrDefault(); openedGrid.SizeX .Should().Be.EqualTo(2); openedGrid.SizeY .Should().Be.EqualTo(2); openedGrid.GetValues <double>() .Should().Have.SameSequenceAs(new double[] { 1, 2, 3, 4 }); }
public void CreateAscFileFromRegularGridUsingFloatValueType() { var gridCoverage = new RegularGridCoverage(); gridCoverage.Components.Clear(); gridCoverage.Components.Add(new Variable <float>()); gridCoverage.Resize(3, 3, 20, 20, new Coordinate(50, 70)); var inputData = new[] { 1.0f, 2.0f, 3.5f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }; gridCoverage.SetValues(inputData); var path = TestHelper.GetCurrentMethodName() + ".asc"; var store = new GdalFunctionStore(); store.CreateNew(path); store.Functions.Add(gridCoverage); store.Close(); // reread file to see wether it contains the right data. store = new GdalFunctionStore(); store.Open(path); var grid = store.Grid; grid.Components[0].GetValues <float>() .Should().Have.SameSequenceAs(new float[] { 1.0f, 2.0f, 3.5f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }); Assert.AreEqual(gridCoverage.Origin.Y, grid.Origin.Y); Assert.AreEqual(gridCoverage.Origin.X, grid.Origin.X); Assert.AreEqual(gridCoverage.SizeX, grid.SizeX); Assert.AreEqual(gridCoverage.SizeY, grid.SizeY); Assert.AreEqual(gridCoverage.DeltaX, grid.DeltaX); Assert.AreEqual(gridCoverage.DeltaY, grid.DeltaY); }
public void StoreShouldHaveCorrectFunctionsAfterOpen() { var path = TestHelper.GetCurrentMethodName() + ".tif"; // create store and add grid var store = new GdalFunctionStore(); store.CreateNew(path); var grid = new RegularGridCoverage(2, 2, 1, 1); grid.SetValues(new[] { 1, 2, 3, 4 }); store.Functions.Add(grid); store.Close(); // re-open store and check if we have correct functions var openedStore = new GdalFunctionStore(); openedStore.Open(path); openedStore.Functions.Count .Should("Added function should be: grid, values, x, y").Be.EqualTo(4); openedStore.Functions.OfType<RegularGridCoverage>().Count() .Should("Store should contain a single grid").Be.EqualTo(1); var openedGrid = openedStore.Functions.OfType<RegularGridCoverage>().FirstOrDefault(); openedGrid.SizeX .Should().Be.EqualTo(2); openedGrid.SizeY .Should().Be.EqualTo(2); openedGrid.GetValues<double>() .Should().Have.SameSequenceAs(new double[] {1, 2, 3, 4}); }
public void CreateAscFileFromRegularGridUsingFloatValueType() { var gridCoverage = new RegularGridCoverage(); gridCoverage.Components.Clear(); gridCoverage.Components.Add(new Variable<float>()); gridCoverage.Resize(3, 3, 20, 20, new Coordinate(50, 70)); var inputData = new[] {1.0f, 2.0f, 3.5f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}; gridCoverage.SetValues(inputData); var path = TestHelper.GetCurrentMethodName() + ".asc"; var store = new GdalFunctionStore(); store.CreateNew(path); store.Functions.Add(gridCoverage); store.Close(); // reread file to see wether it contains the right data. store = new GdalFunctionStore(); store.Open(path); var grid = store.Grid; grid.Components[0].GetValues<float>() .Should().Have.SameSequenceAs(new float[] {1.0f, 2.0f, 3.5f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}); Assert.AreEqual(gridCoverage.Origin.Y, grid.Origin.Y); Assert.AreEqual(gridCoverage.Origin.X, grid.Origin.X); Assert.AreEqual(gridCoverage.SizeX, grid.SizeX); Assert.AreEqual(gridCoverage.SizeY, grid.SizeY); Assert.AreEqual(gridCoverage.DeltaX, grid.DeltaX); Assert.AreEqual(gridCoverage.DeltaY, grid.DeltaY); }
public void CreateTiffFileFromRegularGrid() { var gdalFunctionStore = new GdalFunctionStore(); var gridCoverage = new RegularGridCoverage(); gridCoverage.Resize(3, 2, 10, -20, new Coordinate(200, 2000)); gridCoverage.Components.RemoveAt(0); gridCoverage.Components.Add(new Variable<float>()); var inputData = new float[] {1, 2, 3, 4, 5, 6}; gridCoverage.SetValues(inputData); const string path = "CreateTiffFileFromRegularGrid.tiff"; gdalFunctionStore.CreateNew(path); gdalFunctionStore.Functions.Add(gridCoverage); gdalFunctionStore.Close(); gdalFunctionStore = new GdalFunctionStore(); //reread file to see wether it contains the right data. gdalFunctionStore.Open(path); var grid = (IRegularGridCoverage) gdalFunctionStore.Functions.First(f => f is IRegularGridCoverage); Assert.IsTrue(inputData.SequenceEqual(gdalFunctionStore.GetVariableValues<float>(grid.Components[0]))); Assert.AreEqual(gridCoverage.Origin.Y, grid.Origin.Y); Assert.AreEqual(gridCoverage.Origin.X, grid.Origin.X); Assert.AreEqual(gridCoverage.SizeX, grid.SizeX); Assert.AreEqual(gridCoverage.SizeY, grid.SizeY); Assert.AreEqual(gridCoverage.DeltaX, grid.DeltaX); Assert.AreEqual(gridCoverage.DeltaY, grid.DeltaY); //updating tiff file //values before: 2,5 // TODO: make it readable! Assert.IsTrue((new float[] {2, 5}).SequenceEqual(gdalFunctionStore.GetVariableValues<float>(grid.Components[0], new VariableValueFilter<double>( grid.X, new double[] {210})))); grid.SetValues(new[] {0, 10.5f}, new VariableValueFilter<double>(grid.X, new double[] {210})); //values after: 0,10 Assert.IsTrue( (new[] {0, 10.5f}).SequenceEqual(gdalFunctionStore.GetVariableValues<float>(grid.Components[0], new VariableValueFilter<double>(grid.X, new double[] {210})))); }
public void CreateBilFileFromRegularGrid() { var gdalFunctionStore = new GdalFunctionStore(); var gridCoverage = new RegularGridCoverage(); gridCoverage.Components.Clear(); var newComponent = new Variable<float>(); gridCoverage.Components.Add(newComponent); gridCoverage.Resize(3, 2, 10, 20, new Coordinate(200, 2000)); //create a sequence of numbers: 1 , 2, 3, 4, 5, 6, var originalValues = new float[] {1, 2, 3, 4, 5, 6}; gridCoverage.SetValues(originalValues); string path = TestHelper.GetCurrentMethodName() + ".bil"; //TODO: get rid of this strang method. //do store.CreateNew(path) // store.Functions.Add(gridCoverage) //this is more like the other stores gdalFunctionStore.CreateNew(path); gdalFunctionStore.Functions.Add(gridCoverage); var clone = gdalFunctionStore.Grid; Assert.AreEqual(gdalFunctionStore, clone.Store); Assert.IsTrue(originalValues.SequenceEqual(gdalFunctionStore.GetVariableValues<float>(clone.Components[0]))); //replace data in first column clone.SetValues(new float[] { 0, 0 }, new VariableValueFilter<double>(clone.X, new double[] { 200 })); Assert.IsTrue(new float[] {0, 2, 3, 0, 5, 6}.SequenceEqual(gdalFunctionStore.GetVariableValues<float>(clone.Components[0]))); Assert.AreEqual(2000, clone.Origin.Y); Assert.AreEqual(200, clone.Origin.X); Assert.AreEqual(3, clone.SizeX); Assert.AreEqual(2, clone.SizeY); Assert.AreEqual(10, clone.DeltaX); Assert.AreEqual(20, clone.DeltaY); gdalFunctionStore.Close(); gdalFunctionStore = new GdalFunctionStore(); //reread file to see wether it contains the right data. gdalFunctionStore.Open(path); var grid = (IRegularGridCoverage) gdalFunctionStore.Functions.First(f => f is IRegularGridCoverage); Assert.IsTrue(new float[] {0, 2, 3, 0, 5, 6}.SequenceEqual(gdalFunctionStore.GetVariableValues<float>(grid.Components[0]))); Assert.AreEqual(2000, grid.Origin.Y); Assert.AreEqual(200, grid.Origin.X); Assert.AreEqual(3, grid.SizeX); Assert.AreEqual(2, grid.SizeY); Assert.AreEqual(10, grid.DeltaX); Assert.AreEqual(20, grid.DeltaY); }