X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=gis%2Fruntime%2Forg.argeo.gis.geotools%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fgeotools%2Fjcr%2FGeoJcrUtils.java;h=15fb6353e955871c9280d60f20cff2441395dbea;hb=deacc416c7b87f8f872f00b2882fc83ddbf2e870;hp=7b390ca3ad5f2a29fedf86b1e9e6b7de2c15364e;hpb=977a7a352131b082a98739f15e421f2bff747567;p=lgpl%2Fargeo-commons.git diff --git a/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrUtils.java b/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrUtils.java index 7b390ca3a..15fb6353e 100644 --- a/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrUtils.java +++ b/gis/runtime/org.argeo.gis.geotools/src/main/java/org/argeo/geotools/jcr/GeoJcrUtils.java @@ -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; @@ -69,9 +71,9 @@ public class GeoJcrUtils { public static CoordinateReferenceSystem getCoordinateReferenceSystem( Node node) { try { - if (!node.isNodeType(GisTypes.GIS_GEOMETRY)) + if (!node.isNodeType(GisTypes.GIS_LOCATED)) throw new ArgeoException(node + " is not of type " - + GisTypes.GIS_GEOMETRY); + + GisTypes.GIS_LOCATED); // Coordinate reference system String srs = node.getProperty(GisNames.GIS_SRS).getString(); CoordinateReferenceSystem crs; @@ -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); + } + } }