Konvertieren

Tippecanoe

Tippecanoe erstellt Vektorkacheln, u.a. aus GeoJSON- und FlatGeobuf-Dateien. Ab Version 2.17 unterstützt Tippecanoe auch PMTiles mit der Option -o FILENAME.pmtiles. Um mehrere PMTiles-Dateien zu einer einzigen Datei zusammenzufügen, könnt ihr tile-join verwenden, das mit Tippecanoe mitkommt.

Installation

$ sudo apt-get install gcc g++ git make libsqlite3-dev zlib1g-dev
$ git clone https://github.com/felt/tippecanoe.git
$ cd tippecanoe
$ make -j
$ make install
$ brew install tippecanoe

pmtiles CLI

Das Kommandozeilentool pmtiles konvertiert MBTiles in PMTiles mit dem Befehl pmtiles convert INPUT.mbtiles OUTPUT.pmtiles.

Installation

$ uv add pmtiles

rio-pmtiles

rio-pmtiles ist ein Plugin für Rasterio, mit dem sich kleine und mittlere Rasterdaten (~1GB) konvertieren lassen.

Installation

$ uv add rio-pmtiles

GDAL

GDAL untertützt ab Version 3.8.0 PMTiles. Mit ogr2ogr lässt sich eine breite Palette von Formaten in PMTiles umwandeln, z.B. Shapefiles und PostGIS-Tabellen:

$ ogr2ogr -dsco MINZOOM=10 -dsco MAXZOOM=15 -f "PMTiles" FILENAME.pmtiles MY_SHAPES.shp
$ ogr2ogr -dsco MINZOOM=0 -dsco MAXZOOM=15 -f "PMTiles" FILENAME.pmtiles "PG:host=MY_HOST port=MY_PORT dbname=MY_DATABASE user=MY_USERNAME password=MY_PASSWORD schemas=MY_SCHEMA"

Tipp

ogr2ogr zur Erstellung von Vektor-PMTiles empfiehlt sich nur für kleinere Datensätze: Tippecanoe erzeugt wesentlich effizienter Übersichtskacheln.

Siehe auch

Installation

$ sudo apt install libgdal20

Die Apache Arrow-Bibliothek der aktuellen Homebrew-Distribution ist defekt. Um GDAL erfolgreich zu bauen, konfiguriert CMake so, dass das Arrow-Paket nicht gefunden wird. Ebenso wird Boost nicht mehr mit libkml gebündelt, weswegen libkml beim Bauen unter MacOS deaktiviert werden sollte:

$ cmake -DCMAKE_DISABLE_FIND_PACKAGE_Arrow=ON ..
$ cmake -DGDAL_USE_LIBKML=OFF ..
$ brew install gdal

protomaps/basemaps

Die Protomaps-Basiskarte basiert auf OpenStreetMap- und Natural Earth-Daten. Sie enthält nicht alle Daten und Tags von OSM; stattdessen ist sie so konzipiert, dass sie ein ausgewogenes Verhältnis zwischen Kachelgröße und Vollständigkeit bietet, um als allgemeine Kontextkarte verwendet werden zu können.

Die Organisation der Ebenen und Tags ist vom Open-Source-Projekt Tilezen abgeleitet. Der Umfang der Inhalte und die Auswahl der Daten, die bei bestimmten Zoomstufen einbezogen werden, spiegeln sich in den Referenzimplementierungen von Tilezen-Stilen wie Bubble Wrap wider.

Siehe auch

Das basemaps-Repository enthält in tiles ein Planetiler-Profil zur Erzeugung von PMTiles auf Planetenebene aus OpenStreetMap. Die Layer in diesem Tileset sind unter Basemap Layers dokumentiert und tägliche Builds können kostenlos von maps.protomaps.com/builds heruntergeladen werden.

Die Pipeline zur Erzeugung dieser täglichen Basiskarte ist quelloffen und basiert auf der Planetiler Java Tiling Engine. Sie kann für eure lokale Stadt oder euer Land in wenigen Minuten ausgeführt werden.

Die Vorteile einer selbst erstellten Basiskarte sind unter anderem:

Aktuelle Basiskarten

Erstellt Kacheln aus bestimmten OpenStreetMap-Schnappschüssen, z.B. aus den aktuellen Daten von SliceOSM.

Ausschnitte

Erstellt benutzerdefinierte, fokussierte Gebietskarten. Das Extrahieren eines Gebiets aus der täglichen Planetenkarte enthält zusätzliche Daten in Kacheln mit niedrigem Zoomfaktor, wie in der folgenden Abbildung zu sehen ist:

Basiskarte von Berlin-Reinickendorf

Basiskarte von Berlin-Reinickendorf

  1. Ihr benötigt eine Java-Laufzeitumgebung ≥21 und Maven:

    $ apt-install openjdk-21-jdk maven
    
    $ brew install openjdk maven
    
  2. Einen OpenStreetMap-Ausschnitt, der euer Interessengebiet abdeckt, z.B. einen On-Demand-Download von SliceOSM oder einen vorgenerierten Download von Geofabrik Downloads.

  3. Die Bezirksgrenzen von Berlin als GeoJSON-Datei, heruntergeladen von ODIS oder von Who’s On First Spelunker.

  4. Check-out des basemaps-Projekts und bauen der JAR-Datei:

    $ git clone https://github.com/protomaps/basemaps
    $ cd basemaps/tiles
    $ mvn clean package
    
  5. Erzeugt eure Kacheln:

    $ java -jar  target/protomaps-basemap-HEAD-with-deps.jar --clip='~/reinickendorf.geojson' --area=reinickendorf --download
    

    Dabei werden auch Ressourcen wie vorverarbeitete OSM-Wasser- und Landpolygone, Natural Earth und Datensätze für Sprachunterstützung und Ranking heruntergeladen.

  6. Schließlich könnt ihr euch die neue Karte anzeigen lassen, indem ihr die Datei REGION.pntiles in den Basemaps Viewer zieht.

Eine benutzerdefinierte Karte des gesamten Planeten könnt ihr bauen z.B. mit:

$ java -Xmx20g -jar target/protomaps-basemap-HEAD-with-deps.jar --nodemap-type=array --osm_path=~/planet-latest.osm.pbf --output=/data/planet.pmtiles --bounds=planet --tmpdir=/var/scratch
-Xmx20g

Gebt der Java-Laufzeitumgebung 20 GB Heap-Speicherplatz.

--nodemap-type=array

Eine Build-Option, die sich am besten für die Erzeugung von Planetenkacheln eignet.

--tmpdir=/var/scratch

Stellt sicher, dass mindestens 512 GB Scratch-Speicherplatz vorhanden sind.

Tipp

Für eine Berechnung in weniger als drei Stunden empfehlen sich soviele CPU-Kerne wie möglich auf einem Intel Core i9, AMD Ryzen 9 o.ä., 64 GB RAM und mindestens 1 TB NVMe-SSD-Speicher.

Eigene Tags

Mit der Option extra_name_tags könnt ihr zusätzliche Tags von OpenStreetMap in die Ausgabedatei übernehmen.

Tilemaker

Tilemaker ist ein Programm zur Erstellung von Basiskarten-Kacheln aus OpenStreetMap, allerdings nicht solche, die mit den Basemap Layers von Protomaps übereinstimmen. Darüberhinaus sind die von Tilemaker erzeugten PMTiles-Archive auch nicht geclustert, was beim Dekodieren in einem Webbrowser zu großen, langsamen Abrufen führen kann. Für den Produktionseinsatz solltet ihr daher das Archiv mit pmtiles cluster optimieren.