[JPP-Devel] [jump-pilot:bugs] #498 Most GeoTIFF drivers fail with a simple GeoTIFF image
OpenJUMP 6430 . Almost solved reading pixel data (Info tool , pixel inspection and raster profile) for test image small_word.tif (not for Aster dem file). Removed also warnings substituting GeoReferencedRaster.getImage() method to read PlanarImage of TIFF (instead of JAI.create("fileload"..) --- ** [bugs:#498] Most GeoTIFF drivers fail with a simple GeoTIFF image** **Status:** open **Milestone:** OJ_future **Created:** Sun Aug 30, 2020 08:02 AM UTC by michael michaud **Last Updated:** Sun Sep 06, 2020 04:47 PM UTC **Owner:** nobody **Attachments:** - [small_world.tif](https://sourceforge.net/p/jump-pilot/bugs/498/attachment/small_world.tif) (240.6 kB; image/tiff) I often have a bad experience trying to read simple geotiff. To have a more objective view of the situation, I get a very simple image from the test directory of GDAL library and tested it against all our drivers. Image is attached. Here are its main characteristics (I think they are very common one) : small_world.tif size : 400 x 200 Coordinate System : wgs84 (4326) Metadata : AREA_OR_POINT=AREA Image Structure Metadata : INTERLEAVE=BAND 3 bands, Block=400x20, Type=Byte, ColorInterp=RGB I tried to import it with all the image drivers we propose (8 from Open File + ImageRaster Sextante). 3 drivers only could import the image. All others fail throughing a rough java exception. Image Raster don't fail immediately, but it does not display the image and throws NPE if one try to get more information. List of success/failures and exceptions thrown Referenced Image (ImageIO[ext],JAI) : OK ImageIO TIFF Image Reader version 1.0 : OK ImageIO TIFF Image Reader version 1.1 : OK Standard TIFF Image Reader java.lang.IllegalAccessException: class com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset cannot access class com.sun.imageio.plugins.tiff.TIFFImageReaderSpi (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.tiff to unnamed module @12405818 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) at java.base/jdk.internal.reflect.Reflection.ensureMemberAccess(Reflection.java:99) at java.base/java.lang.Class.newInstance(Class.java:579) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.createFeatureFactory(ImageryLayerDataset.java:236) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:117) Referenced Image (JAI TIF) java.lang.NullPointerException java.lang.NullPointerException at com.sun.media.jai.util.SunCachedTile.(SunCachedTile.java:80) at com.sun.media.jai.util.SunTileCache.add(SunTileCache.java:257) at javax.media.jai.OpImage.addTileToCache(OpImage.java:1087) at javax.media.jai.OpImage.getTile(OpImage.java:1142) at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) at javax.media.jai.RenderedImageAdapter.getData(RenderedImageAdapter.java:158) at javax.media.jai.ScaleOpImage.computeTile(ScaleOpImage.java:1099) at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) at javax.media.jai.OpImage.getTile(OpImage.java:1129) at com.sun.media.jai.opimage.CropOpImage.getTile(CropOpImage.java:122) at com.sun.media.jai.opimage.TranslateIntOpImage.getTile(TranslateIntOpImage.java:132) at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343) at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2525) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546) at com.vividsolutions.jump.workbench.imagery.geoimg.GeoImage.paint(GeoImage.java:285) at com.vividsolutions.jump.workbench.imagery.ReferencedImageStyle.paint(ReferencedImageStyle.java:61) Referenced Image (JAI TIF) : same error Buffered Image (common) : com.vividsolutions.jump.workbench.imagery.ReferencedImageException: java.lang.ArrayIndexOutOfBoundsException: Index 8000 out of bounds for length 8000 at com.vividsolutions.jump.workbench.imagery.graphic.CommonsImage.initImage(CommonsImage.java:112) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.computeEnvelope(AbstractGraphicImage.java:122) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.getEnvelope(AbstractGraphicImage.java:114) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:125) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:106) at com.vividsolutions.jump.workbench.imagery.ReferencedImageFactoryFileLayerLoader.createImageFeature(ReferencedImageFactoryFileLayerLoader.java:199) at
[JPP-Devel] SVN: [6430] core/trunk/src/org/openjump/core/rasterimage/ RasterImageIO.java
Revision: 6430 http://sourceforge.net/p/jump-pilot/code/6430 Author: ma15569 Date: 2020-09-06 21:55:39 + (Sun, 06 Sep 2020) Log Message: --- trying to remove several warnings on pixel value using GeoReferencedRaster.class for TIFF files Modified Paths: -- core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java === --- core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java 2020-09-06 21:51:48 UTC (rev 6429) +++ core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java 2020-09-06 21:55:39 UTC (rev 6430) @@ -314,28 +314,41 @@ public static Double readCellValue(String filenameOrURL, int col, int row, int band) throws IOException { - + RenderedOp renderedOp; + Rectangle rectangle = new Rectangle(col, row, 1, 1); if (filenameOrURL.toLowerCase().endsWith(".gif") || filenameOrURL.toLowerCase().endsWith(".png") - || filenameOrURL.toLowerCase().endsWith(".tif") - || filenameOrURL.toLowerCase().endsWith(".tiff")) { + ) { - RenderedOp renderedOp = javax.media.jai.JAI.create("fileload", +renderedOp = javax.media.jai.JAI.create("fileload", filenameOrURL); - Rectangle rectangle = new Rectangle(col, row, 1, 1); + return renderedOp.getData(rectangle) .getSampleDouble(col, row, band); + }else if (filenameOrURL.toLowerCase().endsWith(".tif") + || filenameOrURL.toLowerCase().endsWith(".tiff")) { + + GeoReferencedRaster geoRaster; + + try { + geoRaster = new GeoReferencedRaster(new File(filenameOrURL).toURI().toString()); +renderedOp = geoRaster.getImage(); + } catch (ReferencedImageException e) { + // TODO Auto-generated catch block +renderedOp = JAI.create("fileload", filenameOrURL); + } + + return renderedOp.getData(rectangle) + .getSampleDouble(col, row, band); + - // return pImage.copyData().getSampleDouble(col, row, 0); //copy - // data so we do not get a ref - } else if (filenameOrURL.toLowerCase().endsWith(".jpg")) { // PlanarImage pimage; - RenderedOp renderedOp = javax.media.jai.JAI.create("fileload", +renderedOp = javax.media.jai.JAI.create("fileload", filenameOrURL); - Rectangle rectangle = new Rectangle(col, row, 1, 1); + return renderedOp.getData(rectangle) .getSampleDouble(col, row, band); @@ -372,18 +385,29 @@ public static Point getImageDimensions(String filenameOrURL) throws IOException { - - if (!filenameOrURL.toLowerCase().endsWith(".jpg") - && !filenameOrURL.toLowerCase().endsWith(".flt") - && !filenameOrURL.toLowerCase().endsWith(".asc") - && !filenameOrURL.toLowerCase().endsWith(".txt") - && !filenameOrURL.toLowerCase().endsWith(".jp2")) { - + if (filenameOrURL.toLowerCase().endsWith(".gif") + || filenameOrURL.toLowerCase().endsWith(".png")) { javax.media.jai.PlanarImage pImage = javax.media.jai.JAI.create( "fileload", filenameOrURL); if (pImage != null) { return new Point(pImage.getWidth(), pImage.getHeight()); } + + } else if (filenameOrURL.toLowerCase().endsWith(".tif") + || filenameOrURL.toLowerCase().endsWith(".tiff")) { + GeoReferencedRaster geoRaster; + RenderedOp renderedOp; + try { + geoRaster = new GeoReferencedRaster(new File(filenameOrURL).toURI().toString()); +renderedOp = geoRaster.getImage(); + } catch (ReferencedImageException e) { + // TODO
[JPP-Devel] SVN: [6429] core/trunk/src/org/openjump/core/rasterimage/ RasterImageLayer.java
Revision: 6429 http://sourceforge.net/p/jump-pilot/code/6429 Author: ma15569 Date: 2020-09-06 21:51:48 + (Sun, 06 Sep 2020) Log Message: --- patch to correct bug #498 Most GeoTIFF drivers fail with a simple GeoTIFF image : now it should be possible to query pixel values in the test image Modified Paths: -- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java === --- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java 2020-09-06 21:45:40 UTC (rev 6428) +++ core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java 2020-09-06 21:51:48 UTC (rev 6429) @@ -106,7 +106,7 @@ //-- end protected BufferedImage imageProcessingStep1 = null, imageProcessingStep2 = null; - +protected BufferedImage imageProcessingStep3=null; protected Envelope actualImageEnvelope = null, visibleEnv = null, oldVisibleEnv; protected Envelope originalImageEnvelope = null; @@ -483,13 +483,15 @@ } if (imageToDraw != null) { -return imageToDraw; + imageProcessingStep3=imageToDraw; + } else if (imageProcessingStep2!=null) { -return imageProcessingStep2; + imageProcessingStep3=imageProcessingStep2; + } - -return null; + +return imageProcessingStep3; } /** @@ -1677,7 +1679,15 @@ int pos = row * origImageWidth + col; -return RasterImageIO.readCellValue(imageFileName, col, row, band); +double value; +try { + value = imageProcessingStep3.getData().getSampleFloat(col, row, band); + + // imageProcessingStep2.getData().getSampleFloat(col, row, band);//actualRasterData.getSampleDouble(col, row, band); +} catch (ArrayIndexOutOfBoundsException e) { + value = RasterImageIO.readCellValue(imageFileName, col, row, band); +} +return value; } ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] SVN: [6428] core/trunk/src/org/openjump/core/ui/plugin/raster
Revision: 6428 http://sourceforge.net/p/jump-pilot/code/6428 Author: ma15569 Date: 2020-09-06 21:45:40 + (Sun, 06 Sep 2020) Log Message: --- patch to remove warning: Can't find resource for bundle java.util.PropertyResourceBundle Modified Paths: -- core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphPlugIn.java core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphTool.java core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryCursorTool.java core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java Modified: core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphPlugIn.java === --- core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphPlugIn.java 2020-09-06 16:46:01 UTC (rev 6427) +++ core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphPlugIn.java 2020-09-06 21:45:40 UTC (rev 6428) @@ -135,10 +135,15 @@ @Override public void initialize(PlugInContext context) throws Exception { FeatureInstaller.getInstance().addMainMenuPlugin(this, -new String[] { MenuNames.RASTER }, sName + "...", false, +new String[] { MenuNames.RASTER }, getName() + "...", false, getIcon(), check()); } +@Override +public String getName() { + return sName; +} + public static MultiEnableCheck check() { final EnableCheckFactory checkFactory = EnableCheckFactory .getInstance(); Modified: core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphTool.java === --- core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphTool.java 2020-09-06 16:46:01 UTC (rev 6427) +++ core/trunk/src/org/openjump/core/ui/plugin/raster/ProfileGraphTool.java 2020-09-06 21:45:40 UTC (rev 6428) @@ -164,4 +164,9 @@ return distance; } +@Override +public String getName() { + return I18N + .get("org.openjump.core.ui.plugin.raster.ProfileGraphPlugIn.Profile-Graph"); +} } Modified: core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryCursorTool.java === --- core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryCursorTool.java 2020-09-06 16:46:01 UTC (rev 6427) +++ core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryCursorTool.java 2020-09-06 21:45:40 UTC (rev 6428) @@ -354,4 +354,9 @@ "[" + LAYER + ": " + name + "] " + VALUE + ": " + cellValues.toString()); } + +@Override +public String getName() { + return I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn"); +} } \ No newline at end of file Modified: core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java === --- core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java 2020-09-06 16:46:01 UTC (rev 6427) +++ core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java 2020-09-06 21:45:40 UTC (rev 6428) @@ -69,12 +69,18 @@ new String[] { MenuNames.RASTER }, // new String[] {MenuNames.PLUGINS, // I18NPlug.getI18N("RasterInfo_Extension")}, - I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn"), +getName(), false, getIcon(), createEnableCheck(context.getWorkbenchContext())); } +@Override +public String getName() { + return I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn"); +} + + public boolean execute(PlugInContext context) throws Exception { try { ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] [jump-pilot:bugs] #498 Most GeoTIFF drivers fail with a simple GeoTIFF image
wrt. to Standard TIFF Image reader from sun. since jdk9 or later it needs --add-exports java.desktop/com.sun.imageio.plugins.tiff=ALL-UNNAMED to access the specific imageio package. added that to our startup scripts in rev 6427 https://sourceforge.net/p/jump-pilot/code/6427/ --- ** [bugs:#498] Most GeoTIFF drivers fail with a simple GeoTIFF image** **Status:** open **Milestone:** OJ_future **Created:** Sun Aug 30, 2020 08:02 AM UTC by michael michaud **Last Updated:** Sun Sep 06, 2020 04:18 PM UTC **Owner:** nobody **Attachments:** - [small_world.tif](https://sourceforge.net/p/jump-pilot/bugs/498/attachment/small_world.tif) (240.6 kB; image/tiff) I often have a bad experience trying to read simple geotiff. To have a more objective view of the situation, I get a very simple image from the test directory of GDAL library and tested it against all our drivers. Image is attached. Here are its main characteristics (I think they are very common one) : small_world.tif size : 400 x 200 Coordinate System : wgs84 (4326) Metadata : AREA_OR_POINT=AREA Image Structure Metadata : INTERLEAVE=BAND 3 bands, Block=400x20, Type=Byte, ColorInterp=RGB I tried to import it with all the image drivers we propose (8 from Open File + ImageRaster Sextante). 3 drivers only could import the image. All others fail throughing a rough java exception. Image Raster don't fail immediately, but it does not display the image and throws NPE if one try to get more information. List of success/failures and exceptions thrown Referenced Image (ImageIO[ext],JAI) : OK ImageIO TIFF Image Reader version 1.0 : OK ImageIO TIFF Image Reader version 1.1 : OK Standard TIFF Image Reader java.lang.IllegalAccessException: class com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset cannot access class com.sun.imageio.plugins.tiff.TIFFImageReaderSpi (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.tiff to unnamed module @12405818 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) at java.base/jdk.internal.reflect.Reflection.ensureMemberAccess(Reflection.java:99) at java.base/java.lang.Class.newInstance(Class.java:579) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.createFeatureFactory(ImageryLayerDataset.java:236) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:117) Referenced Image (JAI TIF) java.lang.NullPointerException java.lang.NullPointerException at com.sun.media.jai.util.SunCachedTile.(SunCachedTile.java:80) at com.sun.media.jai.util.SunTileCache.add(SunTileCache.java:257) at javax.media.jai.OpImage.addTileToCache(OpImage.java:1087) at javax.media.jai.OpImage.getTile(OpImage.java:1142) at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) at javax.media.jai.RenderedImageAdapter.getData(RenderedImageAdapter.java:158) at javax.media.jai.ScaleOpImage.computeTile(ScaleOpImage.java:1099) at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) at javax.media.jai.OpImage.getTile(OpImage.java:1129) at com.sun.media.jai.opimage.CropOpImage.getTile(CropOpImage.java:122) at com.sun.media.jai.opimage.TranslateIntOpImage.getTile(TranslateIntOpImage.java:132) at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343) at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2525) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546) at com.vividsolutions.jump.workbench.imagery.geoimg.GeoImage.paint(GeoImage.java:285) at com.vividsolutions.jump.workbench.imagery.ReferencedImageStyle.paint(ReferencedImageStyle.java:61) Referenced Image (JAI TIF) : same error Buffered Image (common) : com.vividsolutions.jump.workbench.imagery.ReferencedImageException: java.lang.ArrayIndexOutOfBoundsException: Index 8000 out of bounds for length 8000 at com.vividsolutions.jump.workbench.imagery.graphic.CommonsImage.initImage(CommonsImage.java:112) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.computeEnvelope(AbstractGraphicImage.java:122) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.getEnvelope(AbstractGraphicImage.java:114) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:125) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:106) at com.vividsolutions.jump.workbench.imagery.ReferencedImageFactoryFileLayerLoader.createImageFeature(ReferencedImageFactoryFileLayerLoader.java:199) at
[JPP-Devel] SVN: [6427] core/trunk/scripts
Revision: 6427 http://sourceforge.net/p/jump-pilot/code/6427 Author: edso Date: 2020-09-06 16:46:01 + (Sun, 06 Sep 2020) Log Message: --- fix IllegalAccessException when using Sun TIFF reader with java9+, reproduced with java15 though java.lang.IllegalAccessException: class com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset cannot access class com.sun.imageio.plugins.tiff.TIFFImageReaderSpi (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.tiff to unnamed module @12405818 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) at java.base/jdk.internal.reflect.Reflection.ensureMemberAccess(Reflection.java:99) at java.base/java.lang.Class.newInstance(Class.java:579) Modified Paths: -- core/trunk/scripts/oj_linux.sh core/trunk/scripts/oj_windows.bat Modified: core/trunk/scripts/oj_linux.sh === --- core/trunk/scripts/oj_linux.sh 2020-09-06 16:23:34 UTC (rev 6426) +++ core/trunk/scripts/oj_linux.sh 2020-09-06 16:46:01 UTC (rev 6427) @@ -237,12 +237,13 @@ [ -n "$JAVA_LOOKANDFEEL" ] && JAVA_OPTS="$JAVA_OPTS -Dswing.defaultlaf=$JAVA_LOOKANDFEEL" JAVA_OPTS="$JAVA_OPTS $JAVA_OPTS_OVERRIDE" -# java9 needs some packages explicitly added/exported +# java9+ needs some packages explicitly added/exported if awk "BEGIN{if($JAVA_VERSION >= 9)exit 0;else exit 1}"; then JAVA_OPTS="--add-exports java.base/jdk.internal.loader=ALL-UNNAMED \ --add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED \ --add-exports java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED \ --add-exports java.desktop/com.sun.imageio.spi=ALL-UNNAMED \ +--add-exports java.desktop/com.sun.imageio.plugins.tiff=ALL-UNNAMED \ $JAVA_OPTS" fi # java ee was removed from jdk in java 11 Modified: core/trunk/scripts/oj_windows.bat === --- core/trunk/scripts/oj_windows.bat 2020-09-06 16:23:34 UTC (rev 6426) +++ core/trunk/scripts/oj_windows.bat 2020-09-06 16:46:01 UTC (rev 6427) @@ -140,7 +140,8 @@ set JAVA_OPTS=%JAVA_OPTS% --add-exports java.base/jdk.internal.loader=ALL-UNNAMED ^ --add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED ^ --add-exports java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED ^ ---add-exports java.desktop/com.sun.imageio.spi=ALL-UNNAMED +--add-exports java.desktop/com.sun.imageio.spi=ALL-UNNAMED ^ +--add-exports java.desktop/com.sun.imageio.plugins.tiff=ALL-UNNAMED ) rem -- java ee was removed from jdk in java 11 if %JAVAVER_MAJOR% geq 9 if %JAVAVER_MAJOR% lss 11 ( ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] SVN: [6426] core/trunk
Revision: 6426 http://sourceforge.net/p/jump-pilot/code/6426 Author: edso Date: 2020-09-06 16:23:34 + (Sun, 06 Sep 2020) Log Message: --- upgrade commons imaging to 1.0-alpha2 Modified Paths: -- core/trunk/ChangeLog core/trunk/pom.xml Added Paths: --- core/trunk/lib/commons-imaging-1.0-alpha2.jar Removed Paths: - core/trunk/lib/commons-imaging-1.0-alpha1.jar Modified: core/trunk/ChangeLog === --- core/trunk/ChangeLog2020-09-06 14:11:32 UTC (rev 6425) +++ core/trunk/ChangeLog2020-09-06 16:23:34 UTC (rev 6426) @@ -4,6 +4,9 @@ # 3. be concise but convey the change in a way that ordinary users understand #< 80 chars --># +2020-09-06 ede + * upgrade commons imaging to 1.0-alpha2 + 2020-09-02 mmichaud * small fix in csv driver -> v1.1.1 * fix #502 : fatal bug in ColorThemingStyle Deleted: core/trunk/lib/commons-imaging-1.0-alpha1.jar === (Binary files differ) Added: core/trunk/lib/commons-imaging-1.0-alpha2.jar === (Binary files differ) Index: core/trunk/lib/commons-imaging-1.0-alpha2.jar === --- core/trunk/lib/commons-imaging-1.0-alpha2.jar 2020-09-06 14:11:32 UTC (rev 6425) +++ core/trunk/lib/commons-imaging-1.0-alpha2.jar 2020-09-06 16:23:34 UTC (rev 6426) Property changes on: core/trunk/lib/commons-imaging-1.0-alpha2.jar ___ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Modified: core/trunk/pom.xml === --- core/trunk/pom.xml 2020-09-06 14:11:32 UTC (rev 6425) +++ core/trunk/pom.xml 2020-09-06 16:23:34 UTC (rev 6426) @@ -998,7 +998,7 @@ org.apache.commons commons-imaging -1.0-alpha1 +1.0-alpha2 commons-io ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] [jump-pilot:bugs] #498 Most GeoTIFF drivers fail with a simple GeoTIFF image
wrt. Commons Imaging - tested with commons-imaging-1.0-alpha2.jar the issue still remains. i logged a bug in their tracker, let's see how it pans out https://issues.apache.org/jira/projects/IMAGING/issues/IMAGING-265?filter=allopenissues --- ** [bugs:#498] Most GeoTIFF drivers fail with a simple GeoTIFF image** **Status:** open **Milestone:** OJ_future **Created:** Sun Aug 30, 2020 08:02 AM UTC by michael michaud **Last Updated:** Sun Sep 06, 2020 10:52 AM UTC **Owner:** nobody **Attachments:** - [small_world.tif](https://sourceforge.net/p/jump-pilot/bugs/498/attachment/small_world.tif) (240.6 kB; image/tiff) I often have a bad experience trying to read simple geotiff. To have a more objective view of the situation, I get a very simple image from the test directory of GDAL library and tested it against all our drivers. Image is attached. Here are its main characteristics (I think they are very common one) : small_world.tif size : 400 x 200 Coordinate System : wgs84 (4326) Metadata : AREA_OR_POINT=AREA Image Structure Metadata : INTERLEAVE=BAND 3 bands, Block=400x20, Type=Byte, ColorInterp=RGB I tried to import it with all the image drivers we propose (8 from Open File + ImageRaster Sextante). 3 drivers only could import the image. All others fail throughing a rough java exception. Image Raster don't fail immediately, but it does not display the image and throws NPE if one try to get more information. List of success/failures and exceptions thrown Referenced Image (ImageIO[ext],JAI) : OK ImageIO TIFF Image Reader version 1.0 : OK ImageIO TIFF Image Reader version 1.1 : OK Standard TIFF Image Reader java.lang.IllegalAccessException: class com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset cannot access class com.sun.imageio.plugins.tiff.TIFFImageReaderSpi (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.tiff to unnamed module @12405818 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) at java.base/jdk.internal.reflect.Reflection.ensureMemberAccess(Reflection.java:99) at java.base/java.lang.Class.newInstance(Class.java:579) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.createFeatureFactory(ImageryLayerDataset.java:236) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:117) Referenced Image (JAI TIF) java.lang.NullPointerException java.lang.NullPointerException at com.sun.media.jai.util.SunCachedTile.(SunCachedTile.java:80) at com.sun.media.jai.util.SunTileCache.add(SunTileCache.java:257) at javax.media.jai.OpImage.addTileToCache(OpImage.java:1087) at javax.media.jai.OpImage.getTile(OpImage.java:1142) at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) at javax.media.jai.RenderedImageAdapter.getData(RenderedImageAdapter.java:158) at javax.media.jai.ScaleOpImage.computeTile(ScaleOpImage.java:1099) at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) at javax.media.jai.OpImage.getTile(OpImage.java:1129) at com.sun.media.jai.opimage.CropOpImage.getTile(CropOpImage.java:122) at com.sun.media.jai.opimage.TranslateIntOpImage.getTile(TranslateIntOpImage.java:132) at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343) at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2525) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546) at com.vividsolutions.jump.workbench.imagery.geoimg.GeoImage.paint(GeoImage.java:285) at com.vividsolutions.jump.workbench.imagery.ReferencedImageStyle.paint(ReferencedImageStyle.java:61) Referenced Image (JAI TIF) : same error Buffered Image (common) : com.vividsolutions.jump.workbench.imagery.ReferencedImageException: java.lang.ArrayIndexOutOfBoundsException: Index 8000 out of bounds for length 8000 at com.vividsolutions.jump.workbench.imagery.graphic.CommonsImage.initImage(CommonsImage.java:112) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.computeEnvelope(AbstractGraphicImage.java:122) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.getEnvelope(AbstractGraphicImage.java:114) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:125) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:106) at com.vividsolutions.jump.workbench.imagery.ReferencedImageFactoryFileLayerLoader.createImageFeature(ReferencedImageFactoryFileLayerLoader.java:199) at
Re: [JPP-Devel] How to use com.vividsolutions.jump.workbench.imagery.geoimg.GeoRaster
On 03.09.2020 09:33, Giuseppe Aruta wrote: > Hi Ede,is it possible to use > com.vividsolutions.jump.workbench.imagery.geoimg.GeoRaster > to read an image file? > And how? same as GeoReferencedRaster but as public class GeoReferencedRaster extends GeoRaster you don't really gain anything, because GeoRaster is essentially GeoReferencedRaster without some fancy geo metadata processing. look at it's load routine protected void readRasterfile() throws ReferencedImageException { super.readRasterfile(); ... > I can easily use GeoReferencedRaster(File file) > but not GeoRaster(File file) hmm the class seems to be abstract although no methods or members are abstract. probably because of that. we can make it public, but as said. it merely a base class to create a JAI object to be rendered. the referenced (geo data enriched) image will be provided by GeoReferencedRaster. hope i confused you some more :) ..ede ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
Re: [JPP-Devel] wms layer title
On 03.09.2020 19:59, Michaud Michael wrote: > Thank you for this clear description Jukka, > > I will follow Ede's suggestion to log a warning if a (mandatory) title is how about logging it as error. as it seems to be one but will only be logged and hence not obstruct the users experience. > missing in a layer to let him a chance to report the problem, but the main > thing > was to make it possible to use the WMS even if it contains such a layer (it > will > then contain " (untitled)" as its title). what if the name is empty as well? not sure that's technically possible ;) as it seems to be needed to retrieve it. ..ede ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] SVN: [6425] core/trunk/src/org/openjump/core/rasterimage/ RasterImageIO.java
Revision: 6425 http://sourceforge.net/p/jump-pilot/code/6425 Author: ma15569 Date: 2020-09-06 14:11:32 + (Sun, 06 Sep 2020) Log Message: --- Patch to partially solve #498 Most GeoTIFF drivers fail with a simple GeoTIFF image Modified Paths: -- core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java === --- core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java 2020-09-05 09:45:01 UTC (rev 6424) +++ core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java 2020-09-06 14:11:32 UTC (rev 6425) @@ -38,6 +38,8 @@ import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.imagery.ReferencedImageException; +import com.vividsolutions.jump.workbench.imagery.geoimg.GeoReferencedRaster; import com.vividsolutions.jump.workbench.ui.Viewport; /** @@ -194,14 +196,23 @@ throws IOException { if (filenameOrURL.toLowerCase().endsWith(".gif") - || filenameOrURL.toLowerCase().endsWith(".png") - || filenameOrURL.toLowerCase().endsWith(".tif") - || filenameOrURL.toLowerCase().endsWith(".tiff")) { - + || filenameOrURL.toLowerCase().endsWith(".png")) { RenderedOp renderedOp = JAI.create("fileload", filenameOrURL); return renderedOp.getAsBufferedImage(subset, null).getData(); - - } else if (filenameOrURL.toLowerCase().endsWith(".jpg") + } + else if (filenameOrURL.toLowerCase().endsWith(".tif") + || filenameOrURL.toLowerCase().endsWith(".tiff")) { + GeoReferencedRaster geoRaster; + RenderedOp renderedOp; + try { + geoRaster = new GeoReferencedRaster(new File(filenameOrURL).toURI().toString()); +renderedOp = geoRaster.getImage(); + } catch (ReferencedImageException e) { + // TODO Auto-generated catch block +renderedOp = JAI.create("fileload", filenameOrURL); + } + return renderedOp.getAsBufferedImage(subset, null).getData(); + } else if (filenameOrURL.toLowerCase().endsWith(".jpg") || filenameOrURL.toLowerCase().endsWith(".bmp") || filenameOrURL.toLowerCase().endsWith(".jp2")) { ___ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
[JPP-Devel] [jump-pilot:bugs] #498 Most GeoTIFF drivers fail with a simple GeoTIFF image
- **Milestone**: OJ_1.16 --> OJ_future - **Comment**: won't be fixed soonish, tag it accordingly --- ** [bugs:#498] Most GeoTIFF drivers fail with a simple GeoTIFF image** **Status:** open **Milestone:** OJ_future **Created:** Sun Aug 30, 2020 08:02 AM UTC by michael michaud **Last Updated:** Sat Sep 05, 2020 04:26 PM UTC **Owner:** nobody **Attachments:** - [small_world.tif](https://sourceforge.net/p/jump-pilot/bugs/498/attachment/small_world.tif) (240.6 kB; image/tiff) I often have a bad experience trying to read simple geotiff. To have a more objective view of the situation, I get a very simple image from the test directory of GDAL library and tested it against all our drivers. Image is attached. Here are its main characteristics (I think they are very common one) : small_world.tif size : 400 x 200 Coordinate System : wgs84 (4326) Metadata : AREA_OR_POINT=AREA Image Structure Metadata : INTERLEAVE=BAND 3 bands, Block=400x20, Type=Byte, ColorInterp=RGB I tried to import it with all the image drivers we propose (8 from Open File + ImageRaster Sextante). 3 drivers only could import the image. All others fail throughing a rough java exception. Image Raster don't fail immediately, but it does not display the image and throws NPE if one try to get more information. List of success/failures and exceptions thrown Referenced Image (ImageIO[ext],JAI) : OK ImageIO TIFF Image Reader version 1.0 : OK ImageIO TIFF Image Reader version 1.1 : OK Standard TIFF Image Reader java.lang.IllegalAccessException: class com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset cannot access class com.sun.imageio.plugins.tiff.TIFFImageReaderSpi (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.tiff to unnamed module @12405818 at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) at java.base/jdk.internal.reflect.Reflection.ensureMemberAccess(Reflection.java:99) at java.base/java.lang.Class.newInstance(Class.java:579) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.createFeatureFactory(ImageryLayerDataset.java:236) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:117) Referenced Image (JAI TIF) java.lang.NullPointerException java.lang.NullPointerException at com.sun.media.jai.util.SunCachedTile.(SunCachedTile.java:80) at com.sun.media.jai.util.SunTileCache.add(SunTileCache.java:257) at javax.media.jai.OpImage.addTileToCache(OpImage.java:1087) at javax.media.jai.OpImage.getTile(OpImage.java:1142) at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) at javax.media.jai.RenderedImageAdapter.getData(RenderedImageAdapter.java:158) at javax.media.jai.ScaleOpImage.computeTile(ScaleOpImage.java:1099) at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) at javax.media.jai.OpImage.getTile(OpImage.java:1129) at com.sun.media.jai.opimage.CropOpImage.getTile(CropOpImage.java:122) at com.sun.media.jai.opimage.TranslateIntOpImage.getTile(TranslateIntOpImage.java:132) at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343) at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2525) at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546) at com.vividsolutions.jump.workbench.imagery.geoimg.GeoImage.paint(GeoImage.java:285) at com.vividsolutions.jump.workbench.imagery.ReferencedImageStyle.paint(ReferencedImageStyle.java:61) Referenced Image (JAI TIF) : same error Buffered Image (common) : com.vividsolutions.jump.workbench.imagery.ReferencedImageException: java.lang.ArrayIndexOutOfBoundsException: Index 8000 out of bounds for length 8000 at com.vividsolutions.jump.workbench.imagery.graphic.CommonsImage.initImage(CommonsImage.java:112) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.computeEnvelope(AbstractGraphicImage.java:122) at com.vividsolutions.jump.workbench.imagery.graphic.AbstractGraphicImage.getEnvelope(AbstractGraphicImage.java:114) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:125) at com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset.attachImage(ImageryLayerDataset.java:106) at com.vividsolutions.jump.workbench.imagery.ReferencedImageFactoryFileLayerLoader.createImageFeature(ReferencedImageFactoryFileLayerLoader.java:199) at com.vividsolutions.jump.workbench.imagery.ReferencedImageFactoryFileLayerLoader.open(ReferencedImageFactoryFileLayerLoader.java:102) at