]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/SingletonTiffTileInterface.java
Add SCL interface for District Elevation server
[simantics/district.git] / org.simantics.maps.elevation.server / src / org / simantics / maps / elevation / server / SingletonTiffTileInterface.java
1 package org.simantics.maps.elevation.server;
2
3 import java.awt.geom.Rectangle2D;
4 import java.io.IOException;
5 import java.nio.file.Files;
6 import java.nio.file.Path;
7 import java.nio.file.Paths;
8 import java.util.Collection;
9
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12
13 public class SingletonTiffTileInterface {
14
15     private static final Logger LOGGER = LoggerFactory.getLogger(SingletonTiffTileInterface.class);
16
17     private static final String TIFS_FOLDER = System.getProperty("tifsFolder");
18
19     private static SingletonTiffTileInterface instance = new SingletonTiffTileInterface();
20
21     private TiffTileInterface tileInterface;
22
23     private SingletonTiffTileInterface() {
24         // register spis
25         Activator.registerSpis();
26         Path tilesFolder = Paths.get("tifsFolder");
27         if (TIFS_FOLDER != null) {
28             Path potTilesFolder = Paths.get(TIFS_FOLDER);
29             if (Files.exists(potTilesFolder)) {
30                 // use default from working directory
31                 tilesFolder = potTilesFolder;
32             }
33         }
34         try {
35             Files.createDirectories(tilesFolder);
36         } catch (IOException e) {
37             LOGGER.error("Could not create directories {}", tilesFolder.toAbsolutePath(), e);
38         }
39         tileInterface = new TiffTileInterface(tilesFolder);
40     }
41
42     public static double lookupd(double x, double y) {
43         return lookup(x, y).doubleValue();
44     }
45
46     public static Number lookup(double x, double y) {
47         return instance.tileInterface.lookup(x, y);
48     }
49
50     public static Collection<Rectangle2D> getBoundingBoxes() {
51         return instance.tileInterface.getBoundingBoxes();
52     }
53 }