I added the imageio-ext-tiff plugin in my dependencies, and Java ImageIO can open and read the TIFF images, but when using GeoTools, the application throws the same Exception.

Juan


On 9/9/2021 8:45 AM, Juan Felipe Arjona wrote:

Thanks Jody!

Yes you are right, the uDig I am running uses GT v. 14.1.  I tried to downgrade my dependencies but I am using classes that were not present at that release, so difficult to test.

On the other hand, I think that uDig has its own tiff reader, from their pom.xml:

...

<groupId>it.geosolutions.imageio-ext</groupId>
<artifactId>imageio-ext-tiff</artifactId>
<version>1.1.13</version>

...

See their website: https://github.com/geosolutions-it/imageio-ext/wiki/Available-Components

My guess is that they are not using GeoTools Tiff reader implementation.  Maybe GT could borrow their plugins to be more universal?


Thanks,


Juan



On 9/9/2021 12:59 AM, Jody Garnett wrote:
It looks like gdalinfo is also indicating there is a problem:

    Warning 1: TIFFReadDirectory:Sum of Photometric type-related color
    channels and ExtraSamples doesn't match SamplesPerPixel. Defining
    non-color channels as ExtraSamples.


You could try processing the file with gdal2gdal address issue.

You also indicated the image worked with uDig, do you know what version? uDig uses geotools so you may be able to try your sample code with an older version of the library.
--
Jody Garnett


On Tue, 7 Sept 2021 at 21:11, Juan Felipe Arjona <jfarj...@jfarjona.com <mailto:jfarj...@jfarjona.com>> wrote:

    Hello:


    I am trying to display GeoTiff files obtained from the
    Sentinel-Hub WMS
    service (https://apps.sentinel-hub.com
    <https://apps.sentinel-hub.com>) using Geotools.  The service
    responds with GeoTIFF files, that I can easily open with QGIS
    3.20, but
    Geotools (25.2) complains with:


    org.geotools.data.DataSourceException: bandOffsets.length is wrong!
         at
    org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:279)

    ~[gt-geotiff-25.2.jar:na]
         at
    org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:331)

    ~[gt-geotiff-25.2.jar:na]
         at
    org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:77)

    ~[gt-geotiff-25.2.jar:na]
         ...
    Caused by: org.geotools.data.DataSourceException:
    bandOffsets.length is
    wrong!
         at
    org.geotools.gce.geotiff.GeoTiffReader.getHRInfo(GeoTiffReader.java:539)

    ~[gt-geotiff-25.2.jar:na]
         at
    org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:265)

    ~[gt-geotiff-25.2.jar:na]
         ... 20 common frames omitted
    Caused by: java.lang.IllegalArgumentException: bandOffsets.length
    is wrong!
         at
    
java.desktop/javax.imageio.ImageTypeSpecifier$Interleaved.<init>(ImageTypeSpecifier.java:286)

    ~[na:na]
         at
    
java.desktop/javax.imageio.ImageTypeSpecifier.createInterleaved(ImageTypeSpecifier.java:399)

    ~[na:na]
         at
    
it.geosolutions.imageio.plugins.tiff.TIFFDecompressor.getRawImageTypeSpecifier(TIFFDecompressor.java:1027)

    ~[imageio-ext-tiff-1.3.9.jar:na]
         at
    
it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.getImageTypes(TIFFImageReader.java:1359)

    ~[imageio-ext-tiff-1.3.9.jar:na]
         at
    org.geotools.coverage.grid.io
    
<http://org.geotools.coverage.grid.io>.AbstractGridCoverage2DReader.setLayout(AbstractGridCoverage2DReader.java:1164)

    ~[gt-coverage-25.2.jar:na]
         at
    org.geotools.gce.geotiff.GeoTiffReader.getHRInfo(GeoTiffReader.java:373)

    ~[gt-geotiff-25.2.jar:na]
         ... 21 common frames omitted


    Gdal says about the file:

    gdalinfo img-pierrenet-2b9.tif
    Warning 1: img-pierrenet-2b9.tif: TIFFReadDirectory:Sum of
    Photometric
    type-related color channels and ExtraSamples doesn't match
    SamplesPerPixel. Defining non-color channels as ExtraSamples.
    Driver: GTiff/GeoTIFF
    Files: img-pierrenet-2b9.tif
    Size is 199, 200
    Coordinate System is:
    GEOGCRS["WGS 84",
         DATUM["World Geodetic System 1984",
             ELLIPSOID["WGS 84",6378137,298.257223563,
                 LENGTHUNIT["metre",1]]],
         PRIMEM["Greenwich",0,
             ANGLEUNIT["degree",0.0174532925199433]],
         CS[ellipsoidal,2],
             AXIS["geodetic latitude (Lat)",north,
                 ORDER[1],
                 ANGLEUNIT["degree",0.0174532925199433]],
             AXIS["geodetic longitude (Lon)",east,
                 ORDER[2],
                 ANGLEUNIT["degree",0.0174532925199433]],
         ID["EPSG",4326]]
    Data axis to CRS axis mapping: 2,1
    Origin = (31.163993000000001,51.090416070349242)
    Pixel Size = (0.000143449691988,-0.000089870351746)
    Metadata:
       AREA_OR_POINT=Area
       TIFFTAG_RESOLUTIONUNIT=1 (unitless)
       TIFFTAG_XRESOLUTION=1
       TIFFTAG_YRESOLUTION=1
    Image Structure Metadata:
       COMPRESSION=DEFLATE
       INTERLEAVE=PIXEL
    Warning 1: TIFFReadDirectory:Sum of Photometric type-related color
    channels and ExtraSamples doesn't match SamplesPerPixel. Defining
    non-color channels as ExtraSamples.
    Corner Coordinates:
    Upper Left  (  31.1639930,  51.0904161) ( 31d 9'50.37"E, 51d
    5'25.50"N)
    Lower Left  (  31.1639930,  51.0724420) ( 31d 9'50.37"E, 51d
    4'20.79"N)
    Upper Right (  31.1925395,  51.0904161) ( 31d11'33.14"E, 51d
    5'25.50"N)
    Lower Right (  31.1925395,  51.0724420) ( 31d11'33.14"E, 51d
    4'20.79"N)
    Center      (  31.1782662,  51.0814290) ( 31d10'41.76"E, 51d
    4'53.14"N)
    Band 1 Block=199x10 Type=Byte, ColorInterp=Gray
    Band 2 Block=199x10 Type=Byte, ColorInterp=Undefined
    Band 3 Block=199x10 Type=Byte, ColorInterp=Undefined
    Band 4 Block=199x10 Type=Byte, ColorInterp=Undefined


    The file can be found at:
    https://www.dropbox.com/s/xgro5jw35uw59i4/img-pierrenet-2b9.tif?dl=0
    <https://www.dropbox.com/s/xgro5jw35uw59i4/img-pierrenet-2b9.tif?dl=0>


    My code (mostly a copy/paste from ImageLab.java):

    ...

      Path img = Path.of("img-pierrenet-2b9.tif");

      AbstractGridFormat format =
    GridFormatFinder.findFormat(img.toFile());

      Hints hints = new Hints();
      if (format instanceof GeoTiffFormat) {
          hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER,
    Boolean.TRUE);
      }
      reader = format.getReader(img.toFile(), hints);  // Exception is
    thrown here
      Style rgbStyle = createRGBStyle();
      mapContent.setTitle("Satellite Images");
      Layer layer = new GridReaderLayer(reader, rgbStyle);
      mapContent.addLayer(layer);
      mapPane.repaint();

    ...


    Is there a way to get around this problem  ?


    Thanks in advance,


    Juan








    _______________________________________________
    GeoTools-GT2-Users mailing list
    GeoTools-GT2-Users@lists.sourceforge.net
    <mailto:GeoTools-GT2-Users@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
    <https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users>



_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to