[gdal-dev] Geopackage raster and empty tile matrix

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[gdal-dev] Geopackage raster and empty tile matrix

geowolf
Hi,
I've exported a TIFF to geopackage raster, and noticed that while the exported data only cover
zoom level 7, the tile matrix definition ranges from 0 to 7.

From the reader point of view, it seems that in order to get the effectively populated tile
matrix levels one would have to run a select distinct on the zoom level in the tile table,
which seems rather inefficient.

I checked the spec and while it demands a tile matrix spec for populated levels, it does not
seem to require omitting it for non populated levels. Can you confirm?

I think I'm seeing in the code a check verifying that indeed at least one tile is present before
listing a particular zoom level:

// In read-only mode, only lists non empty zoom levels
    else if( !bUpdate )
    {
        osSQL += CPLSPrintf(" AND EXISTS(SELECT 1 FROM %s WHERE zoom_level = tm.zoom_level LIMIT 1)",
                            osQuotedTableName.c_str());
    }
   
Cheers
Andrea

==
GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information.
==

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via di Montramito 3/A
55054  Massarosa (LU)
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39  339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility  for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.



_______________________________________________
gdal-dev mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
Reply | Threaded
Open this post in threaded view
|

Re: Geopackage raster and empty tile matrix

Even Rouault-2

Hi Andrea,

 

> Hi,

> I've exported a TIFF to geopackage raster, and noticed that while the

> exported data only cover

> zoom level 7, the tile matrix definition ranges from 0 to 7.

>

> From the reader point of view, it seems that in order to get the

> effectively populated tile

> matrix levels one would have to run a select distinct on the zoom level in

> the tile table,

> which seems rather inefficient.

>

> I checked the spec and while it demands a tile matrix spec for populated

> levels, it does not

> seem to require omitting it for non populated levels. Can you confirm?

 

Yes that's my understanding too that gpkg_tile_matrix can be instanciated at zoom levels for which there is actually no tile in the pyramid table. I guess I did this choice betcause I wasn't sure how to interpret the requirement for consecutive zoom levels differing by a factor of 2, and thus chose to pre-create all zoom levels from level 0 to level N. This is also slightly more convenient in update mode if you want to add tiles at low zoom levels: you just have to insert them into the pyramid table.

 

>

> I think I'm seeing in the code a check verifying that indeed at least one

> tile is present before

> listing a particular zoom level:

>

> // In read-only mode, only lists non empty zoom levels

> else if( !bUpdate )

> {

> osSQL += CPLSPrintf(" AND EXISTS(SELECT 1 FROM %s WHERE zoom_level

> = tm.zoom_level LIMIT 1)",

> osQuotedTableName.c_str());

> }

>

 

Yes that's the request to find which zoom levels are actually populated so as to find the highest zoom level (the base level used to compute the raster dimensions) and the populated overviews. I would expect this request to be not that inefficient since the pyramid table has an index on (zoom_level, tile_column, tile_row), thus finding if at least one tile exists at a zoom level should only involve looking at the index.

 

Even

 

--

Spatialys - Geospatial professional services

http://www.spatialys.com


_______________________________________________
gdal-dev mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/gdal-dev