[gdal-dev] GDAL WMTS get tiles no documentation

Even Rouault even.rouault at spatialys.com
Wed May 29 03:41:32 PDT 2024


Hi,

The WMS cache (which is used underneath by the WMTS driver) writes each 
tiles in a separate file. So if you use multi-threaded, as long as you 
read in parallel different GDALDataset* object on the WMTS filename, and 
read disjoint areas, that should be fine. There might be a slight risk 
of things going bad if you happened to read the same tile from different 
GDALDataset* object at the same time, as it could potentially read a 
partially written cached tile, or concurrently write the tile in the 
cache and corrupt it. The logic is in frmts/wms/gdalwmscache.cpp

Even

Le 29/05/2024 à 10:14, Michał Kowalczuk via gdal-dev a écrit :
> Because this is not clear in documentation, especially in WMTS driver 
> docs, my question is strictly about this issue to programmers who have 
> already explored this topic.
>
> Regards
> Michal
>
> W dniu śr., 29.05.2024 o 10:04 Rahkonen Jukka 
> <jukka.rahkonen at maanmittauslaitos.fi> napisał(a):
>
>     Hi,
>
>     No, I am not sure because I do not program myself. Reading this
>     document https://gdal.org/user/multithreading.html makes me feel
>     that it is possible to do some things in parallel, but the
>     programmer must know how to do it right.
>
>     -Jukka Rahkonen-
>
>     *Lähettäjä:*Javier Jimenez Shaw <j1 at jimenezshaw.com>
>     *Lähetetty:* keskiviikko 29. toukokuuta 2024 10.41
>     *Vastaanottaja:* Rahkonen Jukka <jukka.rahkonen at maanmittauslaitos.fi>
>     *Kopio:* Michał Kowalczuk <michkowalczuk at gmail.com>;
>     gdal-dev at lists.osgeo.org
>     *Aihe:* Re: [gdal-dev] GDAL WMTS get tiles no documentation
>
>     On Wed, 29 May 2024 at 08:59, Rahkonen Jukka via gdal-dev
>     <gdal-dev at lists.osgeo.org <mailto:gdal-dev at lists.osgeo.org>> wrote:
>
>         Hi,
>
>         When you have a RasterBand  from the WMTS data source, it is
>         abstracted and you can read the raster data just like from any
>         other data source and raster band
>         https://gdal.org/tutorials/raster_api_tut.html#reading-raster-data
>         <https://gdal.org/tutorials/raster_api_tut.html#reading-raster-data>“There
>         are a few ways to read raster data, but the most common is via
>         the GDALRasterBand::RasterIO() method. This method will
>         automatically take care of data type conversion, up/down
>         sampling and windowing.” GDAL knows which tiles to read.
>
>         I do not know if the WMTS driver can do parallel tile
>         downloads. If not, it is possible to run many RasterIO() at
>         the same time, each reading data from a different window like
>         in this rasterio document
>         https://rasterio.readthedocs.io/en/latest/topics/concurrency.html
>         <https://rasterio.readthedocs.io/en/latest/topics/concurrency.html>.
>
>     Jukka, are you sure you can run several RasterIO in parallel (on
>     the same dataset)? in GDAL GeoTIFF you cannot: the cache may be
>     corrupted. In that case I open several datasets over the same
>     file. I do not know about WMTS.
>
>         -Jukka Rahkonen-
>
>         *Lähettäjä:*gdal-dev <gdal-dev-bounces at lists.osgeo.org
>         <mailto:gdal-dev-bounces at lists.osgeo.org>> *Puolesta *Michal
>         Kowalczuk via gdal-dev
>         *Lähetetty:* keskiviikko 29. toukokuuta 2024 9.08
>         *Vastaanottaja:* gdal-dev at lists.osgeo.org
>         <mailto:gdal-dev at lists.osgeo.org>
>         *Aihe:* [gdal-dev] GDAL WMTS get tiles no documentation
>
>         Hi GDAL fellows
>
>         This is my first post on this mailing list, so I'm asking for
>         understanding.
>
>         As all we know the purpose of using WMTS over WMS, I'd like to
>         implement parallel downloading tiles from service using C API.
>
>         In my opinion GDAL documentation
>         (https://gdal.org/drivers/raster/wmts.html
>         <https://gdal.org/drivers/raster/wmts.html>) says nothing on
>         this topic.
>
>         I can get capabilities from WMTS, I can open the selected
>         subdataset but how to get tiles for given extent? I could not
>         find any information how to do it, even in the GDAL tests on
>         github.
>
>         I am kindly asking for tips. It also can be in python. How
>         using pure GDAL API fetch tiles to dynamically complete the
>         displayed map. This is my goal.
>
>         Thank you!
>
>         Michal
>
>         _______________________________________________
>         gdal-dev mailing list
>         gdal-dev at lists.osgeo.org <mailto:gdal-dev at lists.osgeo.org>
>         https://lists.osgeo.org/mailman/listinfo/gdal-dev
>         <https://lists.osgeo.org/mailman/listinfo/gdal-dev>
>
>
> _______________________________________________
> 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/20240529/0403cc46/attachment.htm>


More information about the gdal-dev mailing list