/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wps.gs.download; import junit.framework.TestCase; import org.geotools.geometry.jts.JTS; import org.geotools.referencing.CRS; import org.opengis.referencing.crs.CoordinateReferenceSystem; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Polygon; /** * Test case for the {@link ROIManager} class. * * @author Simone Giannecchini, GeoSolutions SAS * */ public class ROIManagerTest extends TestCase { public void testBase() throws Exception { // example in wgs84 final CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326", true); Envelope env = new Envelope(8, 9, 40, 41); Polygon roi = JTS.toGeometry(env); assertTrue(roi.isRectangle()); roi.setSRID(4326); roi.setUserData(wgs84); // go to 3857 final CoordinateReferenceSystem googlem = CRS.decode("EPSG:3857", true); final Geometry roiGoogle = JTS.transform(roi, CRS.findMathTransform(wgs84, googlem)); assertTrue(roiGoogle.isRectangle()); // target crs is 3003 final CoordinateReferenceSystem boaga = CRS.decode("EPSG:3003", true); final Geometry roiBoaga = JTS.transform(roi, CRS.findMathTransform(wgs84, boaga)); assertFalse(roiBoaga.isRectangle()); assertTrue(roiBoaga.getEnvelope().isRectangle()); // create manager final ROIManager roiManager = new ROIManager(roiGoogle, googlem); assertTrue(roiManager.isROIBBOX()); // provide native CRS roiManager.useNativeCRS(wgs84); final Geometry roiNativeCRS = roiManager.getSafeRoiInNativeCRS(); assertTrue(roiNativeCRS.isRectangle()); assertTrue(roiNativeCRS.getEnvelope().equalsExact(roi.getEnvelope(), 1E-9)); // provide target CRS roiManager.useTargetCRS(boaga); final Geometry roiTargetCRS = roiManager.getSafeRoiInTargetCRS(); assertTrue(roiTargetCRS.isRectangle()); } }