Improve GIS
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 13 Mar 2011 23:21:45 +0000 (23:21 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 13 Mar 2011 23:21:45 +0000 (23:21 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4293 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrUtils.java

index 08181759b9bbbb3225bd49f25c5bb19cec5cc95e..15fb6353e955871c9280d60f20cff2441395dbea 100644 (file)
@@ -8,9 +8,11 @@ import org.argeo.ArgeoException;
 import org.argeo.jcr.gis.GisNames;
 import org.argeo.jcr.gis.GisTypes;
 import org.geotools.geometry.DirectPosition2D;
+import org.geotools.geometry.jts.JTS;
 import org.geotools.referencing.CRS;
 import org.opengis.geometry.DirectPosition;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.MathTransform;
 
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.Geometry;
@@ -95,4 +97,15 @@ public class GeoJcrUtils {
                                        "Cannot get coordinate reference system for " + node, e);
                }
        }
+
+       public static Geometry reproject(CoordinateReferenceSystem crs,
+                       Geometry geometry, CoordinateReferenceSystem targetCrs) {
+               try {
+                       MathTransform transform = CRS.findMathTransform(crs, targetCrs);
+                       return JTS.transform(geometry, transform);
+               } catch (Exception e) {
+                       throw new ArgeoException("Cannot reproject " + geometry + " from "
+                                       + crs + " to " + targetCrs);
+               }
+       }
 }