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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel