]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/SingletonTiffTileInterface.java
First version of elevation server based on GeoTIFF files
[simantics/district.git] / org.simantics.maps.elevation.server / src / org / simantics / maps / elevation / server / SingletonTiffTileInterface.java
diff --git a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/SingletonTiffTileInterface.java b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/SingletonTiffTileInterface.java
new file mode 100644 (file)
index 0000000..3a3a0f6
--- /dev/null
@@ -0,0 +1,43 @@
+package org.simantics.maps.elevation.server;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SingletonTiffTileInterface {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SingletonTiffTileInterface.class);
+
+    private static final String TIFS_FOLDER = System.getProperty("tifsFolder");
+
+    private static SingletonTiffTileInterface instance = new SingletonTiffTileInterface();
+
+    private TiffTileInterface tileInterface;
+
+    private SingletonTiffTileInterface() {
+        // register spis
+        Activator.registerSpis();
+        Path tilesFolder = Paths.get("tifsFolder");
+        if (TIFS_FOLDER != null) {
+            Path potTilesFolder = Paths.get(TIFS_FOLDER);
+            if (!Files.exists(potTilesFolder)) {
+                // use default from working directory
+                tilesFolder = potTilesFolder;
+            }
+        }
+        try {
+            Files.createDirectories(tilesFolder);
+        } catch (IOException e) {
+            LOGGER.error("Could not create directories {}", tilesFolder.toAbsolutePath(), e);
+        }
+        tileInterface = new TiffTileInterface(tilesFolder);
+    }
+
+    public static Number lookup(double x, double y) {
+        return instance.tileInterface.lookup(x, y);
+    }
+}