]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java
Add SCL interface for District Elevation server
[simantics/district.git] / org.simantics.maps.elevation.server / src / org / simantics / maps / elevation / server / TiffInterface.java
index 9e0a651407cd71acd1e70e587b8e0395c8a96976..f679762cb8998f221d0f9b7fe44a8608599b9248 100644 (file)
@@ -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);