package org.vfny.geoserver; import java.util.HashMap; import java.util.Map; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.ProjectionPolicy; import org.geoserver.data.test.MockData; import org.geoserver.test.GeoServerTestSupport; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureIterator; import org.geotools.referencing.CRS; import org.opengis.feature.Feature; public class ProjectionPolicyTest extends GeoServerTestSupport { @Override protected void populateDataDirectory(MockData dataDirectory) throws Exception { Map props = new HashMap(); props.put(MockData.KEY_SRS_HANDLINGS, ProjectionPolicy.FORCE_DECLARED); props.put(MockData.KEY_SRS_NUMBER, 4269); dataDirectory.addWellKnownType(MockData.BASIC_POLYGONS, props); props.put(MockData.KEY_SRS_HANDLINGS, ProjectionPolicy.REPROJECT_TO_DECLARED); props.put(MockData.KEY_SRS_NUMBER, 3003); dataDirectory.addWellKnownType(MockData.LAKES, props); props.put(MockData.KEY_SRS_HANDLINGS, ProjectionPolicy.NONE); props.put(MockData.KEY_SRS_NUMBER, 3004); dataDirectory.addWellKnownType(MockData.LINES, props); } public void testForce() throws Exception { FeatureTypeInfo fti = getCatalog().getFeatureTypeByName(MockData.BASIC_POLYGONS.getLocalPart()); assertEquals("EPSG:4269", fti.getSRS()); assertEquals(ProjectionPolicy.FORCE_DECLARED, fti.getProjectionPolicy()); FeatureCollection fc = fti.getFeatureSource(null, null).getFeatures(); assertEquals(CRS.decode("EPSG:4269"), fc.getSchema().getCoordinateReferenceSystem()); FeatureIterator fi = fc.features(); Feature f = fi.next(); fi.close(); assertEquals(CRS.decode("EPSG:4269"), f.getType().getCoordinateReferenceSystem()); } public void testReproject() throws Exception { FeatureTypeInfo fti = getCatalog().getFeatureTypeByName(MockData.LAKES.getLocalPart()); assertEquals("EPSG:3003", fti.getSRS()); assertEquals(ProjectionPolicy.REPROJECT_TO_DECLARED, fti.getProjectionPolicy()); FeatureCollection fc = fti.getFeatureSource(null, null).getFeatures(); assertEquals(CRS.decode("EPSG:3003"), fc.getSchema().getCoordinateReferenceSystem()); FeatureIterator fi = fc.features(); Feature f = fi.next(); fi.close(); assertEquals(CRS.decode("EPSG:3003"), f.getType().getCoordinateReferenceSystem()); } public void testLeaveNative() throws Exception { FeatureTypeInfo fti = getCatalog().getFeatureTypeByName(MockData.LINES.getLocalPart()); assertEquals("EPSG:3004", fti.getSRS()); assertEquals(ProjectionPolicy.NONE, fti.getProjectionPolicy()); FeatureCollection fc = fti.getFeatureSource(null, null).getFeatures(); assertEquals(CRS.decode("EPSG:32615"), fc.getSchema().getCoordinateReferenceSystem()); FeatureIterator fi = fc.features(); Feature f = fi.next(); fi.close(); assertEquals(CRS.decode("EPSG:32615"), f.getType().getCoordinateReferenceSystem()); } }