Martin,

Le 04/10/2022 à 17:53, mchap...@hyperacktive.com a écrit :

Even,

You are my new hero.  That worked!

Question:  Should I always use GDAL_FORCE_CACHING=YES or is it driver specific?

It is used by the GDALDataset::RasterIO() and GDALRasterBand::RasterIO() methods (which are not virtual), so this applies to all drivers

  I would like to just set it to YES once at startup and forget about it.  What are the pros and cons of setting it to YES / NO?

I would say not to set it, unless you know you need it and are familiar with GDAL internals. The default value NO should perform better in most situations. By setting to YES, you won't be able to user driver-specific IRasterIO() optimizations.

Even

Thanks for committing that change.

Best regards,

Martin

*From:* Even Rouault <even.roua...@spatialys.com>
*Sent:* Monday, October 3, 2022 5:08 PM
*To:* mchap...@hyperacktive.com; gdal-dev@lists.osgeo.org
*Subject:* Re: [gdal-dev] ECRG RasterIO problem

Martin,

I bet you have GDAL_FORCE_CACHING=YES set. At least that was the only way I could trigger the error.

I've queued in https://github.com/OSGeo/gdal/pull/6464 a fix for that.

The first commit is sufficient to fix the issue despite being a bit hacky, but you could cherry-pick it without changing GDAL ABI

The second commit is a cleaner fix.

Even

Le 03/10/2022 à 19:05, mchap...@hyperacktive.com a écrit :

    All,

    I have an ECRG dataset that fails when reading pixels from the 
gdalrasterband object on one of the subdatasets.  It appears that the 
underlying proxy dataset has a macro check called 
RB_PROXY_METHOD_WITH_RET_WITH_INIT_BLOCK that fails because the block sizes are 
different.  This happens for all the ECRG subdatasets that I read from, in 
other words it’s not just specific to a single dataset.  FYI, the same code 
works fine for RPFTOC datasets and all other GDAL formats.  I am using GDAL 
version 3.4.2.

    // code snippet from gdalproxydataset.cpp line 247

    else if( nSrcBlockXSize != nBlockXSize || nSrcBlockYSize != nBlockYSize) \

    { \

             CPLError(CE_Failure, CPLE_AppDefined, "Inconsistent block dimensions 
between proxy and source"); \

             ret = CE_Failure; \

    } \

    The variables nBlockXSize and nBlockYSize are (2304, 1) and nSrcBlockXSize 
and nSrcBlockYSize are {128, 128).

    I think this is because the ECRG frame size is 2304 x 2304 but the block 
size of the frame file is 128 x 128.

    Does anybody know what my problem might be or is this an error in the 
driver code?

    Best regards,

    Martin



    _______________________________________________

    gdal-dev mailing list

    gdal-dev@lists.osgeo.org

    https://lists.osgeo.org/mailman/listinfo/gdal-dev

--
http://www.spatialys.com
My software is free, but my time generally not.

--
http://www.spatialys.com
My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to