Hello:

I am trying to display GeoTiff files obtained from the Sentinel-Hub WMS service (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.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


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
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to