package org.jgrasstools.gears; import java.util.HashMap; import java.util.List; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; import org.geotools.referencing.crs.DefaultGeographicCRS; import org.jgrasstools.gears.utils.HMTestCase; import org.jgrasstools.gears.utils.HMTestMaps; import org.jgrasstools.gears.utils.RegionMap; import org.jgrasstools.gears.utils.coverage.CoverageUtilities; import org.jgrasstools.gears.utils.features.FeatureUtilities; import org.jgrasstools.gears.utils.geometry.GeometryUtilities; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.referencing.crs.CoordinateReferenceSystem; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.Polygon; /** * Test FeatureUtils. * * @author Andrea Antonello (www.hydrologis.com) */ public class TestFeatureUtils extends HMTestCase { @SuppressWarnings("nls") public void testFeatureUtils() throws Exception { SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); b.setName("typename"); b.setCRS(DefaultGeographicCRS.WGS84); b.add("the_geom", Point.class); b.add("AttrName", String.class); SimpleFeatureType type = b.buildFeatureType(); SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); Object[] values = new Object[]{GeometryUtilities.gf().createPoint(new Coordinate(0, 0)), "test"}; builder.addAll(values); SimpleFeature feature = builder.buildFeature(type.getTypeName()); Object attr = FeatureUtilities.getAttributeCaseChecked(feature, "attrname"); assertEquals("test", attr.toString()); attr = FeatureUtilities.getAttributeCaseChecked(feature, "attrnam"); assertNull(attr); } public void testGridCellGeoms() throws Exception { double[][] mapData = HMTestMaps.mapData; CoordinateReferenceSystem crs = HMTestMaps.getCrs(); HashMap<String, Double> envelopeParams = HMTestMaps.getEnvelopeparams(); GridCoverage2D inElev = CoverageUtilities.buildCoverage("elevation", mapData, envelopeParams, crs, true); //$NON-NLS-1$ RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); double east = regionMap.getEast(); double north = regionMap.getNorth(); double south = regionMap.getSouth(); int nCols = regionMap.getCols(); int nRows = regionMap.getRows(); List<Polygon> cellPolygons = FeatureUtilities.gridcoverageToCellPolygons(inElev); int size = nCols * nRows; assertEquals(size, cellPolygons.size()); Polygon polygon = cellPolygons.get(9); Envelope env = polygon.getEnvelopeInternal(); assertEquals(east, env.getMaxX(), DELTA); assertEquals(north, env.getMaxY(), DELTA); polygon = cellPolygons.get(size - 1); env = polygon.getEnvelopeInternal(); assertEquals(east, env.getMaxX(), DELTA); assertEquals(south, env.getMinY(), DELTA); } }