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.rahko...@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 <j...@jimenezshaw.com>
    *Lähetetty:* keskiviikko 29. toukokuuta 2024 10.41
    *Vastaanottaja:* Rahkonen Jukka <jukka.rahko...@maanmittauslaitos.fi>
    *Kopio:* Michał Kowalczuk <michkowalc...@gmail.com>;
    gdal-dev@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@lists.osgeo.org <mailto:gdal-dev@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-boun...@lists.osgeo.org
        <mailto:gdal-dev-boun...@lists.osgeo.org>> *Puolesta *Michal
        Kowalczuk via gdal-dev
        *Lähetetty:* keskiviikko 29. toukokuuta 2024 9.08
        *Vastaanottaja:* gdal-dev@lists.osgeo.org
        <mailto:gdal-dev@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@lists.osgeo.org <mailto:gdal-dev@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@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

--
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