Revision: 6517 http://sourceforge.net/p/jump-pilot/code/6517 Author: michaudm Date: 2020-09-22 14:56:54 +0000 (Tue, 22 Sep 2020) Log Message: ----------- Do not use RasterPainter, inherit from GeoImage and use superclass paint method instead (avoid redundant and error-prone code)
Modified Paths: -------------- core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoReferencedRaster.java core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoTIFFImage.java core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/RasterPainter.java Modified: core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoReferencedRaster.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoReferencedRaster.java 2020-09-22 12:06:16 UTC (rev 6516) +++ core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoReferencedRaster.java 2020-09-22 14:56:54 UTC (rev 6517) @@ -88,10 +88,10 @@ // create a temp stream to find all candidate codecs SeekableStream is = SeekableStream.wrapInputStream(CompressedFile.openFile(uri), true); - String[] decs = ImageCodec.getDecoderNames((SeekableStream) is); + String[] decs = ImageCodec.getDecoderNames(is); FileUtil.close(is); - List<ImageCodec> removed_codecs = new ArrayList<ImageCodec>(); + List<ImageCodec> removed_codecs = new ArrayList<>(); try { // remove all codecs except xtiff if (Arrays.asList(decs).contains("xtiff")) { @@ -100,7 +100,7 @@ if (name!="xtiff") { ImageCodec.unregisterCodec(name); removed_codecs.add(candidate_codec); -// System.out.println("removed " + name); + //System.out.println("removed " + name); } } } @@ -217,9 +217,19 @@ void setEnvelope() { + //Coordinate coorRaster_imageLB = new Coordinate( + // coorRasterTiff_tiepointLT.x, src.getHeight(), 0); + //Coordinate coorRaster_imageRT = new Coordinate(src.getWidth(), 0, 0); + // Get the image coordinate of the bottom left corner of the bottom left pixel + // from the image coordinate of the center of the bottom left pixel Coordinate coorRaster_imageLB = new Coordinate( - coorRasterTiff_tiepointLT.x, src.getHeight(), 0); - Coordinate coorRaster_imageRT = new Coordinate(src.getWidth(), 0, 0); + coorRasterTiff_tiepointLT.x-0.5, + src.getHeight()-0.5); + // Get the image coordinate of the top right corner of the top right pixel + // from the image coordinate of the center of the top right pixel + Coordinate coorRaster_imageRT = new Coordinate( + src.getWidth()-0.5, + -0.5); Coordinate coorModel_imageLB = rasterToModelSpace(coorRaster_imageLB); Coordinate coorModel_imageRT = rasterToModelSpace(coorRaster_imageRT); Modified: core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoTIFFImage.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoTIFFImage.java 2020-09-22 12:06:16 UTC (rev 6516) +++ core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/GeoTIFFImage.java 2020-09-22 14:56:54 UTC (rev 6517) @@ -36,16 +36,18 @@ import com.vividsolutions.jump.feature.Feature; import com.vividsolutions.jump.workbench.imagery.ReferencedImage; import com.vividsolutions.jump.workbench.imagery.ReferencedImageException; +import com.vividsolutions.jump.workbench.imagery.geoimg.GeoImage; import com.vividsolutions.jump.workbench.ui.Viewport; /** * legacy GeoTIFF reader */ -public class GeoTIFFImage implements ReferencedImage { +public class GeoTIFFImage extends GeoImage implements ReferencedImage { private GeoTIFFRaster gtr; - private RasterPainter rasterPainter; + //private RasterPainter rasterPainter; public GeoTIFFImage(String location) throws JUMPException { + super(location, null); init(location); } @@ -56,9 +58,10 @@ private void init(String location) throws JUMPException { try { gtr = new GeoTIFFRaster(location); - rasterPainter = new RasterPainter(gtr); + //rasterPainter = new RasterPainter(gtr); // Try to access data and fail fast if not possible - rasterPainter.geoRaster.src.getData(); + gtr.src.getData(); + //rasterPainter.geoRaster.src.getData(); } catch (Exception e) { gtr = null; throw new ReferencedImageException(e); @@ -65,6 +68,7 @@ } } + /* public void paint(Feature f, java.awt.Graphics2D g, Viewport viewport) throws ReferencedImageException { try { @@ -73,7 +77,9 @@ throw new ReferencedImageException(ex); } } + */ + public String getType() { return "GeoTiff"; } Modified: core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/RasterPainter.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/RasterPainter.java 2020-09-22 12:06:16 UTC (rev 6516) +++ core/trunk/src/com/vividsolutions/jump/workbench/imagery/geotiff/RasterPainter.java 2020-09-22 14:56:54 UTC (rev 6517) @@ -11,6 +11,11 @@ import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jump.workbench.ui.Viewport; +/** + * @deprecated replaced by geoimg code, more efficient + * @TODO to be removed in version 2 + */ +@Deprecated public class RasterPainter { GeoReferencedRaster geoRaster; @@ -126,6 +131,7 @@ Envelope envModel_viewport) throws Exception { // First, scale the original image if necessary. + // imgScaled is scaled to fit the viewport scale final double scale = viewport.getScale(); if (scale != scaleCached) { @@ -133,6 +139,14 @@ scaleCached = scale; } + Envelope vpEnv = envModel_viewport; + Envelope imEnv = geoRaster.getEnvelope(); + Envelope intersection = imEnv.intersection(vpEnv); + double cropX = Math.max(vpEnv.getMinX() - imEnv.getMinX(), 0.0)/scale; + double cropY = Math.max(imEnv.getMaxY() - vpEnv.getMaxY(), 0.0)/scale; + double offsetX = Math.max(imEnv.getMinX() - vpEnv.getMinX(), 0.0)/scale; + double offsetY = Math.max(vpEnv.getMinY() - imEnv.getMinY(), 0.0)/scale; + // Compute the ratio of the image to crop (located on the left of the viewport) double ratio_cropX = (envModel_viewport.getMinX() - geoRaster.getEnvelope() .getMinX()) _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel