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

Reply via email to