X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.elevation.server%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Felevation%2Fserver%2FTiffInterface.java;fp=org.simantics.maps.elevation.server%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Felevation%2Fserver%2FTiffInterface.java;h=9e0a651407cd71acd1e70e587b8e0395c8a96976;hb=96cdfb0ff0a6bc5dfdc4edf60a3345dd7532003e;hp=14485230b9b04c99a50ce4527fb914c231008a1c;hpb=7cac481e1b71e6892d12ae18227d2aa5e66ad1d9;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java index 14485230..9e0a6514 100644 --- a/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java +++ b/org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffInterface.java @@ -8,6 +8,7 @@ import org.geotools.gce.geotiff.GeoTiffReader; import org.geotools.geometry.Envelope2D; import org.opengis.geometry.DirectPosition; import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.simantics.maps.elevation.server.prefs.MapsElevationServerPreferences; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,13 +47,27 @@ public class TiffInterface { ensureInit(); Object r = coverage.evaluate(pos); final int dataType = coverage.getRenderedImage().getSampleModel().getDataType(); + int pipeDepthUnderGround = MapsElevationServerPreferences.pipeDepthUnderGround(); switch (dataType) { - case DataBuffer.TYPE_BYTE: return new Byte(((byte[]) r)[0]); + case DataBuffer.TYPE_BYTE: { + // TODO: if the result is byte how does one subtract the pipeDepth form the value? + // Might not be even relevant with this use case + return new Byte(((byte[]) r)[0]); + } case DataBuffer.TYPE_SHORT: // Fall through case DataBuffer.TYPE_USHORT: // Fall through - case DataBuffer.TYPE_INT: return new Integer(((int[]) r)[0]); - case DataBuffer.TYPE_FLOAT: return new Float(((float[]) r)[0]); - case DataBuffer.TYPE_DOUBLE: return new Double(((double[]) r)[0]); + case DataBuffer.TYPE_INT: { + int val = ((int[]) r)[0] - pipeDepthUnderGround; + return new Integer(val); + } + case DataBuffer.TYPE_FLOAT: { + float val = ((float[]) r)[0] - pipeDepthUnderGround; + return new Float(val); + } + case DataBuffer.TYPE_DOUBLE: { + double val = ((double[]) r)[0] - pipeDepthUnderGround; + return new Double(val); + } default: return null; } }