Skip to content

Examine raw MVT tiles, perf, better .mbtiles support

Compare
Choose a tag to compare
@nyurik nyurik released this 28 May 05:31
· 99 commits to master since this release
b67744c

Examine MVT tile content

debug-mvt and mbtiles-tools can now decode MVT tile content, either as a summary table or in an extended view, with optional language names lists.
The tile can be retrieved from Postgres (using layer definition yaml file), from a url/file/STDIN, or from an .mbtiles file (#273, #274) - @nyurik

$ debug-mvt dump "https://tiles.maps.elastic.co/data/v3/6/17/23.pbf" --summary
Uncompressed tile from https://tiles.maps.elastic.co/data/v3/6/17/23.pbf size=68,765 bytes, gzipped=39,095 bytes, 8 layers
Layer                  Extent    Ver    Features                   GeoType    GeoSize  AVG GeoSize    Fields (percentage only if not all features have it)                                        name:* fields
-------------------  --------  -----  ----------  ------------------------  ---------  -------------  ------------------------------------------------------------------------------------------  ---------------
water                    4096      2          29                   POLYGON     11,427  394.0          class, intermittent
waterway                 4096      2           6                LINESTRING        470  78.3           class
landuse                  4096      2          69                   POLYGON      1,287  18.7           class
park                     4096      2          90  POLYGON(51%), POINT(49%)      3,498  38.9           class, name, name_en, name_de, name_int, rank(49%)                                          21 languages
boundary                 4096      2         149                LINESTRING        924  6.2            admin_level, disputed, maritime
transportation           4096      2         745                LINESTRING      8,656  11.6           class
transportation_name      4096      2         182                LINESTRING      4,136  22.7           name_en, name_de, class, ref(99%), ref_length(99%), network(99%), name(55%), name_int(55%)  1 languages
place                    4096      2          24                     POINT         72  3.0            name, name_en, name_de, name_int, class, rank, capital(8%)                                  60 languages
  • mbtiles-tools can now show .mbtiles tile content and metadata:
$ mbtiles-tools tile tiles.mbtiles 0/0/0 [--show-names]
  <output similar to the above>
$ mbtiles-tools meta-all tiles.mbtiles --show-ranges
  attribution <a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>
  bounds      -180.0,-85.0511,180.0,85.0511
  center      0.0,0.0,4
  description A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
  filesize    192,512
  format      pbf
  id          openmaptiles
  maxzoom     7
  minzoom     0
  mtime       1590629964868 (2020-05-28T01:39:24.868000)
  name        OpenMapTiles
  pixel_scale 256
  version     3.11.0
  json        (The value is a valid JSON, use --show-json for raw dump)
  
  layer                  minZ    maxZ  fields                                                                                                                             description
  -------------------  ------  ------  ---------------------------------------------------------------------------------------------------------------------------------  -----------------------------------------
  water                     0      14  class, intermittent, brunnel                                                                                                       Water polygons representing oceans and l…
  waterway                  0      14  name, name_en, name_de, name_int, class, brunnel, intermittent, name:* (am,ar,az,be,bg,br,bs…)                                     OpenStreetMap [waterways](https://wiki.o…
  landcover                 0      14  class, subclass                                                                                                                    Landcover is used to describe the physic…
  landuse                   0      14  class                                                                                                                              Landuse is used to describe use of land …
  mountain_peak             0      14  osm_id, name, name_en, name_de, name_int, class, ele, ele_ft, rank, name:* (am,ar,az,be,bg,br,bs…)                                 [Natural peaks](http://wiki.openstreetma…
  park                      0      14  class, name, name_en, name_de, name_int, rank, name:* (am,ar,az,be,bg,br,bs…)                                                      The park layer contains parks from OpenS…
  boundary                  0      14  admin_level, disputed, disputed_name, claimed_by, maritime                                                                         Contains administrative boundaries as li…
  aeroway                   0      14  ref, class                                                                                                                         Aeroway polygons based of OpenStreetMap …
  transportation            0      14  class, subclass, oneway, ramp, brunnel, service, layer, level, indoor, bicycle, foot, horse, mtb_scale, surface                    **transportation** contains roads, railw…
  building                  0      14  osm_id, render_height, render_min_height, colour, hide_3d                                                                          All [OSM Buildings](http://wiki.openstre…
  water_name                0      14  osm_id, name, name_en, name_de, name_int, class, intermittent, name:* (am,ar,az,be,bg,br,bs…)                                      Lake center lines for labelling lake bod…
  transportation_name       0      14  name, name_en, name_de, name_int, ref, ref_length, network, class, subclass, layer, level, indoor, name:* (am,ar,az,be,bg,br,bs…)  This is the layer for labelling the high…
  place                     0      14  osm_id, name, name_en, name_de, name_int, class, rank, capital, iso_a2, name:* (am,ar,az,be,bg,br,bs…)                             The place layer consists out of [countri…
  housenumber               0      14  housenumber                                                                                                                        Everything in OpenStreetMap which contai…
  poi                       0      14  osm_id, name, name_en, name_de, name_int, class, subclass, agg_stop, layer, level, indoor, rank, name:* (am,ar,az,be,bg,br,bs…)    [Points of interests](http://wiki.openst…
  aerodrome_label           0      14  osm_id, name, name_en, name_de, name_int, class, iata, icao, ele, ele_ft, name:* (am,ar,az,be,bg,br,bs…)                           [Aerodrome labels](http://wiki.openstree…
  
    Zoom    Tile count  Found tile ranges
  ------  ------------  -------------------
       0             1  0,0 x 0,0
       1             1  1,1 x 1,1
       2             1  2,2 x 2,2
       3             1  4,5 x 4,5
       4             1  8,10 x 8,10
       5             1  16,20 x 16,20
       6             1  33,40 x 33,40
       7             1  66,81 x 66,81

BREAKING

  • generate-metadata script has been removed. Use mbtiles-tools instead (#278) - @nyurik

mbtiles-tools

  • New --show-ranges param shows mbtiles tile statistics (#279) - @nyurik
  • Comprehensive testing for mbtiles-tools utility (#277) - @nyurik

postgis Docker image

  • Cleanup postgis docker, bump osml10n ver (#276) - @nyurik
    • Upgrade osml10n PG extension to the faster v2.5.9 (significant performance improvements merged upstream by @nyurik)
    • parametrize base Postgis image version
    • misc cleanup

Misc

  • The latest Imposm 0.10.0 is now packaged as a separate set of Docker images, tagged with -imposm10 suffix (#281) - @nyurik
  • Add protoc to go-builder in tools (#272) - @nyurik
  • Add less utility to the tools image (#275) - @nyurik
  • As part of #273, several minor Python dependencies were bumped to the latest versions.
  • download-osm --make-dc now adds openmaptiles-tools env vars in the generated docker-compose file (#283) - @nyurik
  • Remove obsolete consts.py -- uses values from layer definition instead #284 - @nyurik
  • nano was added to the tools container #285 - @nyurik

Bug fixes

  • Unable to delete some metadata values using mbtiles-tools meta-set (#271) - @nyurik
  • missing EXPIRETILES_DIR env value (#280) - @nyurik