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;h=0cbf3fa5e03f31f80a50d9f796c66780f37715af;hb=refs%2Fchanges%2F18%2F3918%2F1;hp=6f24ad5b65073eec799ac66247c90180d14b9f4e;hpb=60c060751f037be8f1643656327799f70a3504b1;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 6f24ad5b..0cbf3fa5 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,6 +1,7 @@ package org.simantics.maps.elevation.server; import java.awt.geom.Rectangle2D; +import java.io.Closeable; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -27,11 +28,12 @@ import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.index.strtree.STRtree; -public class TiffTileInterface { +public class TiffTileInterface implements Closeable { private static final Logger LOGGER = LoggerFactory.getLogger(TiffTileInterface.class); private Path tilesFolder; + private Map envelopes = new ConcurrentHashMap<>(); private LoadingCache interfaceCache; private int openInterfacesSize; private STRtree index; @@ -94,8 +96,6 @@ public class TiffTileInterface { }); } - private Map envelopes = new ConcurrentHashMap<>(); - public Collection getBoundingBoxes() { Collection rects = envelopes.values().stream().map(env -> { double x = env.getMinX(); @@ -111,12 +111,12 @@ public class TiffTileInterface { try { c4326 = CRS.decode("EPSG:4326"); } catch (Exception e) { - LOGGER.error("Could not initialize epsg:4326", e); + LOGGER.error("Could not initialize EPSG:4326", e); } } public Number lookup(double x, double y) { - LOGGER.info("Looking up x={} y={}", x, y); + LOGGER.trace("Looking up x={} y={}", x, y); DirectPosition p = new DirectPosition2D(c4326, x, y); List tifFiles = (List) index.query(new Envelope(new Coordinate(x, y))); for (Path tifFile : tifFiles) { @@ -128,9 +128,20 @@ public class TiffTileInterface { tifInterface.close(); } } else { - System.out.println("not found"); + //System.out.println("not found"); } } return new Double(0); // use 0 by default for now } + + @Override + public void close() throws IOException { + interfaceCache.invalidateAll(); + interfaceCache.cleanUp(); + + envelopes.clear(); + envelopes = null; + index = null; + interfaceCache = null; + } } \ No newline at end of file