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¶
Ihr benötigt eine Java-Laufzeitumgebung ≥21 und Maven:
$ apt-install openjdk-21-jdk maven
$ brew install openjdk maven
Einen OpenStreetMap-Ausschnitt, der euer Interessengebiet abdeckt, z.B. einen On-Demand-Download von SliceOSM oder einen vorgenerierten Download von Geofabrik Downloads.
Die Bezirksgrenzen von Berlin als GeoJSON-Datei, heruntergeladen von ODIS oder von Who’s On First Spelunker.
Check-out des basemaps-Projekts und bauen der JAR-Datei:
$ git clone https://github.com/protomaps/basemaps $ cd basemaps/tiles $ mvn clean package
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.
Schließlich könnt ihr euch die neue Karte anzeigen lassen, indem ihr die Datei
REGION.pntilesin 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
-Xmx20gGebt der Java-Laufzeitumgebung 20 GB Heap-Speicherplatz.
--nodemap-type=arrayEine Build-Option, die sich am besten für die Erzeugung von Planetenkacheln eignet.
--tmpdir=/var/scratchStellt 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_tagskö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.