package org.jgrasstools.modules; import java.util.Arrays; import java.util.HashMap; import org.geotools.coverage.grid.GridCoverage2D; import org.jgrasstools.gears.utils.RegionMap; import org.jgrasstools.gears.utils.coverage.CoverageUtilities; import org.opengis.referencing.crs.CoordinateReferenceSystem; /** * Test {@link Raster}. * * @author Andrea Antonello (www.hydrologis.com) */ public class TestRaster extends HMTestCase { public void testRaster() throws Exception { RegionMap e = HMTestMaps.envelopeParams; Raster r1 = new Raster(e.getCols(), e.getRows(), e.getXres(), e.getWest(), e.getNorth(), "EPSG:32632"); double[][] elevationData = HMTestMaps.mapData; HashMap<String, Double> eP = HMTestMaps.envelopeParams; CoordinateReferenceSystem crs = HMTestMaps.crs; GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, eP, crs, true); Raster r2 = new Raster(elevationCoverage); Raster r3 = new Raster(r2); for( int r = 0; r < elevationData.length; r++ ) { for( int c = 0; c < elevationData[0].length; c++ ) { r1.setValueAt(c, r, elevationData[r][c]); r3.setValueAt(c, r, elevationData[r][c]); } } check(5, 6, r1, r2, r3); check(3, 4, r1, r2, r3); check(5, 3, r1, r2, r3); check(4, 4, r1, r2, r3); } public void testBounds() { RegionMap e = HMTestMaps.envelopeParams; Raster r1 = new Raster(e.getCols(), e.getRows(), e.getXres(), e.getWest(), e.getNorth(), "EPSG:32632"); int[] gridAt1 = r1.gridAt(e.getWest(), e.getNorth()); assertEquals(0, gridAt1[0]); assertEquals(0, gridAt1[1]); int[] gridAt2 = r1.gridAt(e.getWest() - e.getXres(), e.getNorth()); assertNull(gridAt2); double[] positionAt1 = r1.positionAt(e.getCols() - 1, e.getRows() - 1); assertEquals(e.getEast() - e.getXres() / 2.0, positionAt1[0], DELTA); assertEquals(e.getSouth() + e.getYres() / 2.0, positionAt1[1], DELTA); double[] positionAt2 = r1.positionAt(-1, -1); assertNull(positionAt2); } private void check( int col, int row, Raster r1, Raster r2, Raster r3 ) { double[] surrounding1 = r1.surrounding(col, row); double[] surrounding2 = r2.surrounding(col, row); double[] surrounding3 = r3.surrounding(col, row); assertTrue(Arrays.equals(surrounding2, surrounding3)); assertTrue(Arrays.equals(surrounding1, surrounding3)); } }