Was dieses Tool macht
Eine PMTiles-Datei ist ein einziges, flaches Binärarchiv aus Kartenkacheln. Sie ist so aufgebaut, dass sich einzelne Kacheln über einfache HTTP-Byte-Range-Anfragen herausholen lassen, ohne Datenbankabfrage und ohne laufenden Tile-Server. Diese Effizienz hat für jemanden, der ins Innere schauen möchte, ihren Preis: Es gibt keine eingebaute Möglichkeit zu sehen, was eine .pmtiles-Datei tatsächlich enthält, ohne selbst eine Kartenbibliothek einzubinden oder sie durch ein Kommandozeilen-Tool laufen zu lassen.
Dieser Viewer nimmt Ihnen diesen Schritt ab. Legen Sie eine Datei ab, und er liest den 127-Byte-Header des Archivs sowie die JSON-Metadaten aus, um Kachelformat, Zoombereich, geografische Grenzen sowie Name, Beschreibung oder Namensnennung der Datei anzuzeigen, und rendert danach jede sichtbare Kachel direkt auf einer Leaflet-Karte. Alles geschieht lokal: Die Datei wird über die File API des Browsers direkt von Ihrer Festplatte gelesen, und es wird nichts an einen Server gesendet.
Wie der Viewer eine PMTiles-Datei liest
Der Viewer nutzt die offizielle JavaScript-Bibliothek "pmtiles", dieselbe Reader-Implementierung, die auch MapLibre GL verwendet, zusammen mit einer dateibasierten Quelle, mit der sich Byte-Bereiche direkt aus einer hochgeladenen Datei holen lassen statt über HTTP. Dieser erste Lesevorgang holt nur den Header und das komprimierte Kachelverzeichnis, was bereits ausreicht, um Zoombereich, Grenzen und Format des Archivs sofort anzuzeigen, noch bevor auch nur eine Kachel dekodiert wurde.
Während Sie die Karte schwenken und zoomen, wird jede sichtbare Kachel anhand ihrer z/x/y-Koordinate angefragt. Der Reader sucht diese Koordinate im Verzeichnis des Archivs, das nach einer Hilbert-Kurven-Kachel-ID organisiert ist, führt eine binäre Suche durch, um Byte-Offset und Länge der Kachel zu finden, holt genau diese Bytes und liefert das rohe Kachelbild zurück. Ein kleiner, eigens dafür geschriebener Leaflet-Layer kapselt diesen Nachschlagevorgang, sodass Kacheln einfach auf der Karte erscheinen, wie man es von jeder anderen Kachelquelle erwarten würde, einschließlich der Wiederverwendung der nächstgelegenen verfügbaren Kachel, wenn Sie über den im Archiv verzeichneten maximalen Zoom hinaus hineinzoomen.
PMTiles: Geschichte und technische Fakten
PMTiles stammt von Protomaps, einem Open-Source-Kartenprojekt, das auf der Idee beruht, dass eine Karte keinen Server dahinter braucht, sondern nur eine gut organisierte Datei und etwas, das Byte-Bereiche ausliefern kann. Protomaps veröffentlicht die PMTiles-Spezifikation selbst als Public Domain, während die Referenz-Implementierungen von Reader und Writer, in Go, JavaScript, Python und mehreren anderen Sprachen, unter der BSD-3-Clause-Lizenz erscheinen. Das Format hat mehr als eine Überarbeitung durchlaufen; die aktuelle und einzige noch aktiv genutzte Version, v3, ersetzte frühere Layouts durch das Hilbert-Kurven-Verzeichnis, das auch der eigene MBTiles-zu-PMTiles-Konverter dieser Website umsetzt.
Das Problem, das PMTiles löst, ist vor allem eines von Kosten und Komplexität. Eine vollständige weltweite Kachelpyramide kann Hunderte Millionen einzelner Kacheln enthalten. Die eigene Dokumentation von Protomaps nennt als Beispiel 300 Millionen Kacheln, die, als einzelne Objekte gespeichert, in der Cloud etwa $1,500 an Anfragegebühren kosten und Tage zum Hochladen benötigen könnten. Ein einziges PMTiles-Archiv packt diese gesamte Pyramide in eine Datei, dedupliziert identische Kacheln intern (Protomaps berichtet von Größenreduktionen um 70% oder mehr bei globalen Vektor-Basiskarten) und erlaubt es einem einfachen statischen Datei-Host wie S3, Cloudflare R2 oder GitHub Pages, einzelne Kacheln über gewöhnliche HTTP-Range-Anfragen auszuliefern, ganz ohne Tile-Server, Datenbank oder Serverless-Funktion, auch wenn es sich ebenso gut von AWS Lambda oder Cloudflare Workers aus betreiben lässt, falls man doch eine solche Funktion davorschalten möchte.
Ein paar technische Fakten, die es wert sind zu wissen: Offizielle Reader-Bibliotheken gibt es für JavaScript, Python, Dart, Kotlin/JVM, Go, C++ und Rust, und das Format wird direkt von MapLibre GL JS, Leaflet und OpenLayers unterstützt. PMTiles ist von Grund auf nur lesbar ausgelegt; es gibt keine Möglichkeit, eine Handvoll Kacheln innerhalb eines bestehenden Archivs zu aktualisieren, ohne die gesamte Datei neu zu schreiben, ein bewusster Kompromiss zugunsten der Einfachheit des Formats und seines dateibasierten, byte-range-freundlichen Aufbaus. Der Header selbst ist fest 127 Byte groß, klein genug, dass ein Reader ihn in einer einzigen Anfrage abruft und dadurch sofort Zoombereich, Grenzen, Kachelformat und Kachelanzahl eines Archivs kennt, noch bevor eine einzige Kachel gelesen wurde.
Schritt-für-Schritt-Anleitung

Klicken Sie auf "Upload PMTiles" und wählen Sie eine .pmtiles-Datei aus, ziehen Sie eine Datei per Drag-and-Drop auf das Panel, oder klicken Sie auf "Try Sample PMTiles", um ein kleines, direkt vor Ort erzeugtes Beispiel zu laden.

Die Kacheln des Archivs werden direkt aus der Datei gelesen und auf der Karte dargestellt. Das Dateiinfo-Panel zeigt Kachelanzahl, Format, Zoombereich, Grenzen und alle Metadaten direkt aus dem Header der Datei.
Anwendungsfälle aus der Praxis
Wo das direkte Öffnen einer PMTiles-Datei, ganz ohne eigenen Code, tatsächlich weiterhilft.
- Eine PMTiles-Datei vor der Veröffentlichung prüfen. Nach dem Erstellen oder Konvertieren eines PMTiles-Archivs bestätigt das Öffnen hier, dass Zoombereich, Grenzen und Kachelformat korrekt sind, bevor die Datei auf einen statischen Datei-Host hochgeladen wird.
- Einen heruntergeladenen offenen Datensatz untersuchen. Projekte, die PMTiles-Auszüge verteilen, etwa regionale Ausschnitte einer größeren Basiskarte, lassen sich direkt öffnen, um zu sehen, was sie enthalten, bevor man Code dagegen schreibt.
- Eine MBTiles-zu-PMTiles-Konvertierung überprüfen. Nach dem Konvertieren einer Datei mit einem Tool wie dem MBTiles-zu-PMTiles-Konverter dieser Website bestätigt das erneute Laden des Ergebnisses in diesen Viewer, dass jede Kachel am richtigen Platz gelandet ist.
- Eine Basiskarte vor der Bereitstellung einer Karten-App überprüfen. Teams, die eine offline-fähige oder selbst gehostete Karte entwickeln, können genau das PMTiles-Archiv vorab ansehen, das ihre App laden wird, und so einen falschen Zoombereich oder einen leeren Bereich erkennen, bevor die App live geht.
- Einen archivierten Kachelsatz prüfen. Da PMTiles seine eigenen Metadaten mitführt (Name, Beschreibung, Namensnennung, Grenzen), lässt sich eine jahrealte archivierte Datei auch ohne externe Dokumentation noch identifizieren und überprüfen.
Häufig gestellte Fragen
Was ist eine PMTiles-Datei?
PMTiles ist eine einzige, flache Binärdatei, die einen kompletten Satz von Kartenkacheln enthält, adressiert über ein kleines internes Verzeichnis, sodass sich einzelne Kacheln über gewöhnliche HTTP-Range-Anfragen lesen lassen. Genau das erlaubt es, PMTiles direkt von einem statischen Datei-Host wie S3 oder GitHub Pages auszuliefern, ganz ohne Tile-Server oder Datenbank.
Welche Kachelformate kann dieser Viewer auf der Karte darstellen?
Raster-Kachelformate: PNG, JPEG, WebP und AVIF. Der eigene Header der Datei gibt an, welches Format verwendet wird, und der Viewer liest dies direkt aus, statt es anhand der Dateiendung zu erraten.
Warum zeigt ein Vektor-Archiv (MVT) keine Kartenvorschau?
MVT-Archive (Mapbox Vector Tile) speichern Geometrie- und Stilanweisungen, keine fertigen Bilder, und ihr Rendering braucht einen Vektor-Karten-Renderer wie MapLibre GL, den diese auf Leaflet basierende Seite nicht enthält. Die Metadaten der Datei, also Zoombereich, Grenzen und die Namen der Vektor-Layer, werden trotzdem angezeigt, da sie direkt aus dem Header und den JSON-Metadaten des Archivs stammen.
Wie liest der Viewer die Datei eigentlich?
Er nutzt die offizielle JavaScript-Reader-Bibliothek "pmtiles" zusammen mit der File API des Browsers, sodass eine hochgeladene Datei direkt von der Festplatte in kleinen Byte-Bereichen gelesen wird, genauso wie die Bibliothek ein entferntes Archiv über HTTP liest. Am Mechanismus ändert sich nichts, wenn die Quelle eine lokale Datei statt einer URL ist.
Kann ich Kachelanzahl, Zoombereich und Grenzen prüfen, ohne ein Karten-Tool zu öffnen?
Ja. Das Dateiinfo-Panel liest diese Werte direkt aus dem 127-Byte-Header der Datei: minimaler und maximaler Zoom, geografische Grenzen und die Anzahl der adressierten Kacheln, alles bevor auch nur eine einzige Kachel dekodiert wird.
Was passiert, wenn ich über die maximale Zoomstufe des Archivs hinaus hineinzoome?
Der Viewer verwendet die nächstgelegene verfügbare Kachel weiter, schneidet sie zu und skaliert sie hoch, dasselbe Über-Zoom-Verhalten, das auch eine normale Webkarte am Rand ihres Bildmaterials zeigt, statt eine leere Lücke zu hinterlassen.
Gibt es eine Begrenzung der Dateigröße?
Uploads sind auf 100 MB begrenzt. Da PMTiles Kacheln über Byte-Bereiche adressiert, statt die gesamte Datei in den Speicher zu laden, bleibt das Durchsuchen eines großen Archivs auch nahe an dieser Grenze reaktionsschnell.
Wird meine PMTiles-Datei irgendwohin hochgeladen?
Nein. Die Datei wird vollständig in Ihrem Browser über die File API gelesen; es werden niemals Bytes an einen Server gesendet.
Das Lesen erfolgt über die offizielle pmtiles-JavaScript-Bibliothek. Es wird niemals eine Datei auf einen Server hochgeladen. Kartenkacheln © OpenStreetMap-Mitwirkende.
Kartenkacheln © OpenStreetMap-Mitwirkende, gezeichnet mit Protomaps (gehostet von KONAKTIVE), mit CARTO als Ersatz.
