Hi Even,
Thanks for getting back to me. I'm a little rusty with GDAL; it has probably been 5+ years since I last used it.

I can confirm my QGIS install version (OSGEO4W) does have the JP2ECW driver (`gdalinfo --formats`).

I'm using the Python GDAL build from https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal - doesn't say it includes JP2ECW. I only have access to that GDAL build via Python but haven't managed to figure out what the Python API equivalent of "gdalinfo --formats" is (assuming there is one).

I don't seem to be able to force JP2OpenJPEG on the OSGeo4W one.
gdalinfo --config GDAL_SKIP JP2ECW FILENAME.jp2   = uses the MrSID driver
gdalinfo --config GDAL_SKIP JP2ECW --config GDAL_SKIP JP2MrSID FILENAME.jp2   = Goes back to JP2ECW
(Doesn't support the -if flag).

But I found `gdal.Info("FILENAME.jp2")` on the Python version, and that does use the JP2 OpenJPEG driver. No tile information on there:

    Driver: JP2OpenJPEG/JPEG-2000 driver based on OpenJPEG library
    ...
    Image Structure Metadata:
      INTERLEAVE=PIXEL
    ...
    Band 1 Block=1024x1024 Type=Byte, ColorInterp=Red
      Overviews: 66000x124000, 33000x62000, 16500x31000, 8250x15500, 4125x7750, 2063x3875, 1032x1938, 516x969, 258x485, 129x243, 65x122
      Overviews: arbitrary
      Image Structure Metadata:
        COMPRESSION=JPEG2000
    ...

I can't help but notice the block size and overview levels are reporting different info compared to the JP2ECW output (ECW one has different rounding <= 2062*3875):

    Band 1 Block=256x256 Type=Byte, ColorInterp=Red
      Description = Red
      Overviews: 66000x124000, 33000x62000, 16500x31000, 8250x15500, 4125x7750, 2062
    x3875, 1031x1937, 515x968, 257x484

and JP2MrSID for comparison:
    Band 1 Block=1024x128 Type=Byte, ColorInterp=Red
  Min=168.000 Max=255.000
  Minimum=168.000, Maximum=255.000, Mean=243.359, StdDev=16.164
  Overviews: 66000x124000, 33000x62000, 16500x31000, 8250x15500, 4125x7750, 2063
x3875, 1032x1938, 516x969, 258x485, 129x243, 65x122, 33x61
  Metadata:
    STATISTICS_APPROXIMATE=YES
    STATISTICS_MAXIMUM=255
    STATISTICS_MEAN=243.35889029004
    STATISTICS_MINIMUM=168
    STATISTICS_STDDEV=16.164314681862
    STATISTICS_VALID_PERCENT=100

All three report different Overview levels too. Odd but no idea if it is pertinent to this problem.

Cheers,
Jonathan

p.s. I was looking for Python API docs but it seems there aren't any. This page: https://pypi.org/project/GDAL/#usage - has a link to http://www.gdal.org/gdal_tutorial.html, but that's a 404. I think it wants to be: https://gdal.org/tutorials/index.html



On 2020-08-09 11:14, Even Rouault wrote:

Jonathan,

The GDAL build that comes with rasterio must have only JP2OpenJPEG enabled (the error with opj_decode() comes from that driver), whereas the GDAL build in QGIS has also JP2ECW, which is used in priority.

The file is large. It would be interesting to know if it is tiled. If you do "gdalinfo --format FILENAME.jp2 --config GDAL_SKIP JP2ECW", and look at the beginning of the output, you should see lines like

OPENJPEG: nTileW = XXXX

OPENJPEG: nTileH = XXXX

which values are reported ?

If it is tiled (values <= 2048 let's say), this should normally work. Openjpeg will have more difficulties with single-tile JPEG2000 files, although latest versions (2.3.1) have seen improvements in that regard

Even

--

Spatialys - Geospatial professional services

http://www.spatialys.com


_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to