X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.elevation.server%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Felevation%2Fserver%2FTiffTileInterface.java;fp=org.simantics.maps.elevation.server%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Felevation%2Fserver%2FTiffTileInterface.java;h=d6f1910e7057efce2c19b6f64e77d64de0c4df2b;hb=03bf22e6e4d5bc912d4ec70c1956b1c804b837d3;hp=900630dc42bffc386eabf0fcf203c872599fe53a;hpb=9273ab6cc9e34fdcf6435ca55398f0e779872bac;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffTileInterface.java b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffTileInterface.java index 900630dc..d6f1910e 100644 --- a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffTileInterface.java +++ b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffTileInterface.java @@ -1,18 +1,17 @@ package org.simantics.maps.elevation.server; +import java.awt.geom.Rectangle2D; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; import java.util.stream.Stream; -import com.github.benmanes.caffeine.cache.Caffeine; -import com.github.benmanes.caffeine.cache.LoadingCache; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.index.strtree.STRtree; - import org.geotools.geometry.DirectPosition2D; import org.geotools.geometry.Envelope2D; import org.geotools.referencing.CRS; @@ -22,6 +21,12 @@ import org.opengis.referencing.operation.MathTransform; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.benmanes.caffeine.cache.Caffeine; +import com.github.benmanes.caffeine.cache.LoadingCache; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.index.strtree.STRtree; + public class TiffTileInterface { private static final Logger LOGGER = LoggerFactory.getLogger(TiffTileInterface.class); @@ -79,6 +84,7 @@ public class TiffTileInterface { synchronized(index) { index.insert(envelope, tifFile); } + envelopes.put(tifFile, envelope); } catch (Exception e) { LOGGER.error("Could not initialize index for file {}", tifFile, e); } finally { @@ -91,6 +97,17 @@ public class TiffTileInterface { }); } + private Map envelopes = new ConcurrentHashMap<>(); + + public Collection getBoundingBoxes() { + Collection rects = envelopes.values().stream().map(env -> { + double x = env.getMinX(); + double y = env.getMinY(); + return new Rectangle2D.Double(x, y, env.getMaxX() - x, env.getMaxY() - y); + }).collect(Collectors.toList()); + return rects; + } + private static CoordinateReferenceSystem c4326; static {