[gdal-dev] VSI sidecar and sibling file lookup

Even Rouault even.rouault at spatialys.com
Sun Feb 18 09:35:16 PST 2024


Sean,

did you implement the Stat() method ? From gdalpamdataset.cpp lines 921 
to 940, for .aux.xml to be used, you either need to implement 
ReadDir()/VSISiblingFiles or Stat(). Actually, I'd strongly recommend 
implementing Stat() as a lot of places will assume it to be working. As 
you can skip establishing the directory listing with 
GDAL_DISABLE_READDIR_ON_OPEN, all code should be robust to an empty 
readdir() result, but it will then assume Stat() to work.

The .aux file is a different story, since it is actually attempted to be 
opened with GDALOpen(), which first tries a Open(), and doesn't require 
Stat() to succeed.

.ovr files are only attempted to be opened if you do a RasterIO() call 
that involves subsampling.  A plain GDALOpen() on a .tif doesn't involve 
sidecar file loading. The GTiff reader implements a on-demand logic to 
try to open them

Even

Le 17/02/2024 à 00:00, Sean Gillies via gdal-dev a écrit :
> Update... It looks like there are at least two different kinds of 
> logic around sidecar/sibling files.
>
> My Rasterio VSI plugin currently implements only open, tell, seek, 
> read, write, and close. The mandatory methods. I can see GDAL probing 
> for .aux and .AUX files. But not .aux.xml files for some reason that I 
> don't understand. The dataset I'm exposing through this VSI plugin has 
> a .ovr file, but there's no attempt to find it. It looks like .aux.xml 
> and .ovr require VSI sibling files and/or readdir support, but that 
> .aux file support does not? I'm deducing this from the behavior of the 
> system. It would be hard to figure it out just by reading the code.
>
> On Fri, Feb 16, 2024 at 8:29 AM Sean Gillies <sean.gillies at gmail.com> 
> wrote:
>
>     Thanks for the tip, Thomas!
>
>     On Thu, Feb 15, 2024 at 9:45 AM thomas bonfort
>     <thomas.bonfort at gmail.com> wrote:
>
>         Hi Sean,
>         I believe/recall this is very driver dependent. Some drivers
>         will look for their sidecars in the provided sibling files
>         list returned by VSISiblingFiles, whereas others will
>         unconditionally try to open well-known sidecar names they will
>         have computed from their own name. IIRC I added
>         VSISiblingFiles so that some vsi backends (namely object
>         storage based ones) could explicitly return an empty list of
>         sibling files in order to prevent drivers to emit a subsequent
>         Readdir() (which might break drivers that require sidecar
>         files to work, but speeds up those where sidecar files are
>         optional and not used in a cloud-storage environment (namely
>         cogs) )
>
>         On Tue, Feb 13, 2024 at 6:12 PM Sean Gillies via gdal-dev
>         <gdal-dev at lists.osgeo.org> wrote:
>
>             Hi all,
>
>             It's not clear to me from reading
>             https://gdal.org/user/virtual_file_systems.html if VSI
>             sidecar and sibling file lookup works in general, by
>             design, or whether it's an implementation detail of the
>             standard VSI filesystems ("vsizip", "vsicurl", etc.).
>
>             More specifically: if I have a "/vsipyopener/foo.tif"
>             object, do drivers always look for other files at paths
>             precisely relative to that one? Does this vary among drivers?
>
>
>
>     -- 
>     Sean Gillies
>
>
>
> -- 
> Sean Gillies
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20240218/8dd88bdf/attachment.htm>


More information about the gdal-dev mailing list