[gdal-dev] GDAL WMTS get tiles no documentation

Michał Kowalczuk michkowalczuk at gmail.com
Fri May 31 05:44:35 PDT 2024


Hi, thank you for your replies!
As I'm still a newbie especially with WMTS. I need to take a step back to
the basics. Let's forget about multithreading for now.

   - I'm in the stage that I can open a dataset using WMTS service path
   from data provider
   - I can list subdatasets and open the selected layer as a new dataset
   using path from *SUBDATASET_id_NAME*.
   - This dataset reports large height and width values, which is obvious.
   - The first question is how to read any fragment from this dataset using
   *GDALDatasetRasterIO*.
   Is there a similar way to *SpatialFIlter *from vector layers?
   I see in the docs there is a *<DataWindow>* tag for a local service
   descriptions which defines extents of the data. Does it mean that for each
   map extent change I need to create a new local XML file and open a new
   dataset to read demanded bbox?
   Is this the only way for doing it?
   - From other site I noticed that QGIS downloads tiles separately? But
   how it knows which row/col and zoom should be used in GET request? Does it
   use GDAL for WMTS reading at all?
   [image: image.png]

I will be grateful for any tip and trucks for a newbie ;-)

Regards,
Michal

śr., 29 maj 2024 o 12:41 Even Rouault <even.rouault at spatialys.com>
napisał(a):

> 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> 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
>> “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.
>>
>>
>>
>> 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> *Puolesta *Michal
>> Kowalczuk via gdal-dev
>> *Lähetetty:* keskiviikko 29. toukokuuta 2024 9.08
>> *Vastaanottaja:* 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) 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
>> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>>
>>
> _______________________________________________
> gdal-dev mailing listgdal-dev at lists.osgeo.orghttps://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/20240531/3614b309/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 25778 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20240531/3614b309/attachment-0001.png>


More information about the gdal-dev mailing list