X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.elevation.server%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Felevation%2Fserver%2FTiffInterface.java;h=f679762cb8998f221d0f9b7fe44a8608599b9248;hb=refs%2Fchanges%2F43%2F3043%2F1;hp=9e0a651407cd71acd1e70e587b8e0395c8a96976;hpb=fb0dd7165edb185c63412bea85f8a253fd5dc3f2;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java index 9e0a6514..f679762c 100644 --- a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java +++ b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java @@ -1,13 +1,17 @@ package org.simantics.maps.elevation.server; +import java.awt.geom.Point2D; import java.awt.image.DataBuffer; import java.nio.file.Path; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.gce.geotiff.GeoTiffReader; import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.TransformedDirectPosition; import org.opengis.geometry.DirectPosition; +import org.opengis.geometry.Envelope; import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.TransformException; import org.simantics.maps.elevation.server.prefs.MapsElevationServerPreferences; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,6 +47,23 @@ public class TiffInterface { } } + public boolean contains(DirectPosition pos) { + ensureInit(); + Envelope2D e = coverage.getEnvelope2D(); + try { + TransformedDirectPosition tdp = new TransformedDirectPosition(pos.getCoordinateReferenceSystem(), crs, null); + tdp.transform(pos); + + Point2D p = tdp.toPoint2D(); + + boolean contains = e.contains(p); + return contains; + } catch (Exception ex) { + ex.printStackTrace(); + return false; + } + } + public Number lookup(DirectPosition pos) { ensureInit(); Object r = coverage.evaluate(pos);