OnlineMapMaker logo

Vektor-PMTiles-Viewer: PMTiles-Karten kostenlos online öffnen

Öffnen Sie eine Vektor-.pmtiles-Datei oder fügen Sie die URL eines Archivs im Web ein und sehen Sie es in Sekunden als Karte. Dieser kostenlose PMTiles-Vektor-Viewer online listet jeden Layer und jedes Feld auf, färbt die Layer ein, zeigt beim Klick die Attribute jedes Objekts, nennt die Kachelgrößen je Zoomstufe und prüft das Archiv gegen die Spezifikationen von PMTiles v3 und Vektorkacheln. Eine lokale Datei verlässt nie Ihren Browser. Vollbild öffnen ↗

Rate this tool:
Anzeige
Anzeige
Loading viewer…
Benötigen Sie Unterstützung bei Ihrem GIS-Projekt?Unsere Dienstleistungen entdecken

Ein Vektor-PMTiles-Viewer, der in Ihrem Browser läuft

PMTiles ist ein Einzeldatei-Format für gekachelte Karten. Ein .pmtiles-Archiv enthält eine ganze Kachelpyramide, von der Weltansicht bei Zoom 0 bis zur Straßenebene, dazu einen Index, der sagt, wo jede Kachel in der Datei liegt. Weil eine Karten-App jede Kachel mit einer einzigen HTTP-Range-Anfrage lesen kann, legen Sie die Datei einfach in einen Cloud-Speicher und nutzen sie ganz ohne Kachelserver als Karte. Deshalb sind PMTiles-Karten heute ein üblicher Weg, OpenStreetMap-Daten zu veröffentlichen: Die Protomaps-Basiskarten und viele Stadt- und Landeskarten aus Planetiler erscheinen als OpenStreetMap-PMTiles-Dateien.

In so eine Datei hineinzusehen ist schwerer. Eine .pmtiles-Datei ist binär, kein normales Programm öffnet sie, und für die Vektorkacheln braucht man meist MapLibre, einen Stil und etwas Code. Dieser PMTiles-Vektor-Viewer online nimmt Ihnen das ab. Legen Sie eine Datei ab oder fügen Sie die URL eines Archivs ein, das schon online ist: Der Viewer liest Header und Verzeichnisse, holt nur die sichtbaren Kacheln, dekodiert sie im Browser und zeichnet jeden Layer in eigener Farbe.

Er ist ebenso ein Prüfwerkzeug wie ein Viewer. Klicken Sie ein Objekt an, um seine Attribute zu lesen, schalten Sie Layer ein und aus, sehen Sie die Kachelgrößen je Zoomstufe und prüfen Sie das Archiv gegen PMTiles v3 und die Vektorkachel-Spezifikation: Header, Kompression, Clustering, Größe des Wurzelverzeichnisses, Metadaten, Ausdehnung, Kachelzahlen und ETag. Danach exportieren Sie die sichtbaren Objekte als GeoJSON, speichern ein PNG oder laden einen technischen Bericht. Mein Rat: Öffnen Sie das Archiv über seine endgültige URL, bevor Sie es ankündigen. Die meisten Fälle von „PMTiles-Karte lädt nicht“ sind CORS- oder Range-Einstellungen am Bucket, und dieser Viewer zeigt sie mit einem Klick.

Anzeige
Anzeige

Was der Vektor-PMTiles-Viewer kann

Hier ist alles, was das Werkzeug tut, in der Reihenfolge, in der Sie es nutzen.

  1. Datei oder URL öffnen. Ziehen Sie eine .pmtiles-Datei auf die Karte, klicken Sie „PMTiles öffnen“ oder fügen Sie eine URL ein und drücken Sie Öffnen. Es gibt keine Größengrenze: Der Viewer liest nur Header, Verzeichnisse und die Kacheln, die er braucht, von Ihrer Festplatte oder von einem Server. „Beispiel laden“ öffnet eine kleine OpenStreetMap-PMTiles-Datei der Pariser Innenstadt, der Beispiel-Link ein Archiv von Florenz auf pmtiles.io.
  2. Die Karte sofort sehen. Der Viewer liest die Ausdehnung aus dem Header und zoomt zu den Daten. Jeder Layer wird in eigener Farbe auf eine Leinwand gezeichnet: Polygone als helle Flächen, Linien als Striche, Punkte als Punkte mit Beschriftung. Layernamen aus den Schemas von Protomaps, OpenMapTiles und Shortbread, etwa water, landuse, buildings, roads und places, bekommen natürliche Farben.
  3. Mit den Layern arbeiten. Der Reiter Layer listet jeden Layer aus den Metadaten und aus den Kacheln auf, mit Geometrietypen, der Zahl der Objekte in einer Stichprobe und allen Feldern samt Beispielwert. Schalten Sie Layer ein und aus, drücken Sie „Nur“, um einen Layer allein zu sehen, oder klicken Sie auf das Farbfeld, um eine eigene Farbe zu wählen.
  4. Objekte per Klick prüfen. Klicken Sie in die Karte, und eine Karte zeigt jedes Objekt an dieser Stelle in den sichtbaren Layern: Layer, Geometrietyp, ID und alle Attribute, zum Beispiel kind, name und min_zoom einer OpenStreetMap-Straße. Das Objekt wird hervorgehoben, und Sie können es als GeoJSON kopieren oder die ganze Kachel als .pbf-Datei laden.
  5. Die Archiv-Info lesen. Der Reiter Archiv-Info zeigt Header und Metadaten in klaren Worten: Name, Quellenangabe, Kacheltyp, Kompression von Kacheln und Verzeichnissen, Zoombereich, Ausdehnung, Mittelpunkt, das Erstellungswerkzeug (zum Beispiel Planetiler), Archivgröße, die Zahl adressierter und eindeutiger Kacheln und die Größe der Verzeichnisse.
  6. Die Kacheln prüfen. Der Viewer liest jeden Verzeichniseintrag und nennt je Zoomstufe die Zahl der Kacheln sowie Gesamt-, Durchschnitts- und Höchstgröße, dazu die zehn größten Kacheln. Mit „Zeigen“ springen Sie zu einer Kachel. Das Kachelraster zeichnet jeden Kachelrand mit z/x/y und gespeicherter Größe.
  7. Die Prüfungen ausführen. Der Reiter Prüfungen testet das Archiv: Header-Version, Kacheltyp, Kompression, Clustering, ob das Wurzelverzeichnis in die ersten 16 KB passt, Metadaten und vector_layers, Ausdehnung und Mittelpunkt, Zoombereich und Kachelzahlen gegen die Verzeichnisse, Kacheln über 500 KB, Deduplizierung, Quellenangabe und bei URLs das ETag. Jede Prüfung ist als OK, Warnung oder Fehler markiert und klar erklärt.
  8. Einen Link teilen. Wenn Sie ein Archiv über eine URL öffnen, liefert „Link zu diesem Archiv kopieren“ einen Link zu dieser Seite, der dieselbe Datei öffnet. Schicken Sie ihn einer Kollegin oder einem Kollegen, und beide sehen dieselbe Karte und dieselben Prüfungen.
  9. Über die Daten hinaus zoomen. Vektorkacheln bleiben scharf, wenn Sie über die letzte Zoomstufe hinaus vergrößern. Der Viewer zeichnet die tiefsten Kacheln dann vergrößert weiter („Overzoom“). Unter der ersten Zoomstufe sagt ein Hinweis, dass Sie hineinzoomen sollen.
  10. Exportieren. Laden Sie die sichtbaren Objekte als GeoJSON, die Kartenansicht als PNG, Header und Metadaten als JSON oder einen technischen Bericht mit Prüfungen, Header, Layern, Feldern, Kachelstatistik und Empfehlungen.

Eine lokale Datei wird von JavaScript in Ihrem Browser-Tab stückweise gelesen und nie hochgeladen. Eine URL liest Ihr Browser direkt von deren Server; diese Seite sieht die Daten nicht.

So sehen Sie eine PMTiles-Datei an, Schritt für Schritt

Ein echtes Beispiel mit der OpenStreetMap-PMTiles-Probe der Pariser Innenstadt (Protomaps-Basiskartenschema, Zoom 0 bis 12).

Vektor-PMTiles-Viewer mit leerer Karte, Ablagebereich und Feld zum Öffnen einer PMTiles-URL
1
Schritt 1: Den Vektor-PMTiles-Viewer öffnen

Das Werkzeug startet mit leerer Karte, einem Ablagebereich und einem URL-Feld. Ziehen Sie Ihre .pmtiles-Datei auf die Karte, klicken Sie, um eine Datei zu wählen, fügen Sie eine URL ein oder drücken Sie „Beispiel laden“.

Karte der Pariser Innenstadt aus einer OpenStreetMap-PMTiles-Datei mit Wasser, Parks, Gebäuden und Straßen in verschiedenen Farben
2
Schritt 2: Das Archiv laden

Der Viewer liest Header und Wurzelverzeichnis, zoomt zur Ausdehnung und zeichnet alle Layer der OpenStreetMap-Daten: Wasser in Blau, Parks in Grün, Gebäude in Braun, Straßen in Orange und Ortsnamen in Rot.

Reiter Layer mit Kontrollkästchen und eine Karte von Paris, die nur Straßen und Wasser zeigt
3
Schritt 3: Die Layer erkunden

Der Reiter Layer listet jeden Layer mit Geometrie, den Objekten in einer Stichprobe und allen Feldern. Hier sind nur roads und water eingeschaltet, so sieht man das Straßennetz und die Seine.

Objektkarte mit den Attributen einer Pariser Straße, die gelb auf der Karte hervorgehoben ist
4
Schritt 4: Ein Objekt anklicken

Klicken Sie auf eine Straße. Die Karte zeigt Layer, Geometrie, ID und OpenStreetMap-Attribute wie kind, kind_detail und name, und die Straße wird auf der Karte hervorgehoben.

Reiter Archiv-Info mit Header und Metadaten des PMTiles-Archivs in klaren Worten
5
Schritt 5: Die Archiv-Info lesen

Der Reiter Archiv-Info übersetzt Header und Metadaten in klare Worte: Kacheltyp MVT, gzip-Kompression, Zoom 0 bis 12, Ausdehnung, Mittelpunkt, Zahl der Kacheln und Größe der Verzeichnisse.

Reiter Kacheln mit Größentabelle je Zoomstufe und dem Kachelraster über Paris
6
Schritt 6: Die Kacheln prüfen

Der Reiter Kacheln zeigt Kacheln und Größen je Zoomstufe und die größten Kacheln, gelesen aus den Verzeichnissen. Mit eingeschaltetem Kachelraster wird jeder Kachelrand mit z/x/y und gespeicherter Größe gezeichnet.

Reiter Prüfungen mit einer Liste bestandener PMTiles-Prüfungen
7
Schritt 7: Die Prüfungen ausführen

Der Reiter Prüfungen testet das Archiv gegen die Regeln von PMTiles v3 und Vektorkacheln. Die Probe besteht jede Prüfung; ein über URL geöffnetes Archiv bekommt zusätzlich eine ETag-Prüfung.

Technischer Bericht zum Vektor-PMTiles-Archiv mit Zusammenfassung, Prüfungen und Header-Tabelle
8
Schritt 8: Den Bericht laden

Der technische Bericht fasst Zusammenfassung, Kartenvorschau, Prüfungen, den vollständigen Header, die Metadaten, jeden Layer und jedes Feld, die Kachelstatistik und Empfehlungen auf einer Seite zusammen. Drucken Sie ihn oder speichern Sie ihn als PDF.

Anzeige
Anzeige

Wie öffnet man eine PMTiles-Datei? Ihre Möglichkeiten

Es gibt mehrere Wege, eine .pmtiles-Datei zu öffnen. Welcher passt, hängt davon ab, ob Sie sie ansehen, prüfen oder eine Karte damit bauen wollen.

  1. Im Browser, mit diesem Viewer. Der schnellste Weg zu sehen, was in einem Vektorarchiv steckt, von der Festplatte oder über eine URL: keine Installation, kein Server, läuft unter Windows, Mac, Linux und auf Tablets. Ideal, um ein Archiv zu prüfen, Attribute zu lesen und einen Bericht zu teilen. Für Raster-PMTiles (PNG-, JPEG-, WebP-Kacheln) nutzen Sie den PMTiles-Viewer auf dieser Seite.
  2. Mit dem Viewer von pmtiles.io. Der offizielle Viewer von Protomaps zeigt Header, Metadaten und einen Kachel-Inspektor. Gut für einen schnellen technischen Blick; dieser Viewer bietet zusätzlich Layerfarben, Attributfelder, Kachelstatistik, Prüfungen und Exporte.
  3. In MapLibre GL JS. Binden Sie die pmtiles-Bibliothek ein, registrieren Sie das Protokoll und lassen Sie eine Vektorquelle auf pmtiles://https://example.com/datei.pmtiles zeigen. Mit einem Stil (zum Beispiel den Protomaps-Basiskartenstilen) entsteht eine fertige, schnelle Webkarte. So werden die meisten PMTiles-Karten veröffentlicht.
  4. In QGIS. Eine QGIS-Version mit GDAL 3.8 oder neuer öffnet eine .pmtiles-Datei über den PMTiles-Treiber von GDAL: Layer → Layer hinzufügen → Vektorlayer hinzufügen, dann die Datei wählen. Jeder Kachel-Layer wird ein Vektorlayer. Gut, wenn Sie die Daten mit anderen GIS-Daten kombinieren wollen.
  5. Mit dem Kommandozeilenwerkzeug pmtiles. Das Programm go-pmtiles zeigt den Header („pmtiles show“), schneidet ein Gebiet aus („pmtiles extract“), wandelt aus MBTiles um („pmtiles convert“) und liefert das Archiv als z/x/y-Kacheln aus („pmtiles serve“).
  6. Als MBTiles. Wenn ein Werkzeug nur MBTiles liest, wandeln Sie das Archiv mit „pmtiles convert datei.pmtiles datei.mbtiles“ um. Die Kacheln bleiben gleich; für die andere Richtung gibt es auf dieser Seite einen kostenlosen MBTiles-zu-PMTiles-Konverter.

Eines ist überall gleich: Ein PMTiles-Archiv enthält Daten, keinen Stil. Jede App entscheidet selbst, wie sie die Layer färbt. Dieser Viewer wählt Farben nach den Layernamen, damit Sie den Aufbau sehen, ohne zuerst einen Stil zu schreiben.

Wie der Viewer ein PMTiles-Archiv liest und die Kacheln zeichnet

Ein PMTiles-Archiv zu öffnen braucht fünf Schritte: den Header lesen, die Kartenposition in eine Kachel-ID umrechnen, die ID in den Verzeichnissen suchen, die Bytes mit einer Range-Anfrage holen und die Kachel entpacken, dekodieren und zeichnen. Hier ist genau, was passiert, mit den Zahlen der Pariser Probe.

1. Der Aufbau des Archivs und der 127-Byte-Header

Ein PMTiles-v3-Archiv hat fünf Abschnitte in fester Reihenfolge. Die ersten 127 Bytes sind der Header: das magische Wort „PMTiles“, die Version, Offset und Länge jedes anderen Abschnitts, Kachelzahlen, Kompression, Kacheltyp, Zoombereich, Ausdehnung und Mittelpunkt. Der Viewer liest mit einer Anfrage die ersten 16.384 Bytes, die immer Header und Wurzelverzeichnis enthalten:

Bytes 0–126       Header          "PMTiles" + Version 3 + Offsets, Zahlen, Zoom, Ausdehnung
Wurzelverzeichnis muss vor Byte 16.384 enden
JSON-Metadaten    name, attribution, vector_layers, …
Blattverz.        optional, für große Archive
Kacheldaten       die Kacheln, eine nach der anderen

Pariser Probe     Wurzel 127 + 142 Bytes   Metadaten 269 + 870 Bytes
                  Kacheldaten 1.139 + 2.929.805 Bytes   24 Kacheln, Zoom 0–12
                  Ausdehnung 2.197266, 48.748945, 2.460938, 48.922499

Koordinaten werden als ganze Zahlen in Einheiten von 10⁻⁷ Grad gespeichert, 2,197266° also als 21972660. Der Viewer rechnet sie zurück und zoomt die Karte auf die Ausdehnung.

2. Von z/x/y zu einer Kachel-ID: die Hilbert-Kurve

PMTiles gibt jeder Kachel der Welt eine Nummer, die Kachel-ID. Zuerst kommen alle Kacheln von Zoom 0, dann alle von Zoom 1 und so weiter. Innerhalb einer Zoomstufe folgen die Kacheln einer Hilbert-Kurve, einer Linie, die jede Kachel besucht und Nachbarn nah beieinander hält:

erste ID von Zoom z = (4^z − 1) / 3       0, 1, 5, 21, 85, …
Kachel-ID = erste ID von Zoom z + Hilbert-Index d(x, y)

Zoom 1:  1/0/0 → 1   1/0/1 → 2   1/1/1 → 3   1/1/0 → 4

Paris    12/2074/1409
         erste ID von Zoom 12 = (16.777.216 − 1) / 3 = 5.592.405
         d(2074, 1409)        = 14.248.941
         Kachel-ID            = 19.841.346

Weil die Hilbert-Kurve benachbarte Kacheln auch in der ID-Reihenfolge nah hält, liegen die Kacheln einer Stadt in der Datei dicht beieinander. Eine Karte, die über eine Stadt verschoben wird, liest dann benachbarte Bytebereiche, was Caches und CDNs gut verarbeiten.

3. Verzeichnisse: Einträge mit Lauflänge und Blattverzeichnisse

Ein Verzeichnis ist eine sortierte Liste von Einträgen. Jeder Eintrag sagt: Ab dieser Kachel-ID nutzen so viele Kacheln hintereinander (Lauflänge) die Bytes an diesem Offset mit dieser Länge. Die Liste wird spaltenweise als Varints gespeichert, die Kachel-IDs als Differenzen, und dann mit gzip komprimiert. Das sind die ersten vier Einträge der Pariser Probe, die Elternkacheln der Stadtkachel bei Zoom 0 bis 3:

Eintrag      Kachel-ID   Lauflänge   Offset     Länge
0/0/0                0       1              0     65.269
1/1/0                4       1         65.269     76.322
2/2/1               18       1        141.591    124.909
3/4/2               75       1        266.500    116.768

gespeichert  24 | 0, 4, 14, 57 | 1, 1, 1, 1 | 65269, 76322, … | 1, 0, 0, …
             Anzahl  ID-Differenzen  Lauflängen  Längen         Offsets (0 = direkt nach der vorigen Kachel)

Lauflänge 0  → der Eintrag zeigt auf ein Blattverzeichnis, nicht auf eine Kachel

Eine Lauflänge über 1 ist der Weg, auf dem PMTiles dieselbe Kachel kostenlos viele Male speichert: Zehntausend gleiche Meereskacheln werden zu einem Eintrag. Passt das Wurzelverzeichnis nicht in 16 KB, werden die Einträge auf Blattverzeichnisse verteilt, und die Wurzel zeigt nur noch auf sie. Um eine Kachel zu finden, durchsucht der Viewer die Wurzel, folgt höchstens drei Blattebenen und speichert jedes gelesene Verzeichnis zwischen.

4. Nur lesen, was gebraucht wird: Range-Anfragen

Bei einer URL ist jeder Lesevorgang eine HTTP-Range-Anfrage, bei einer lokalen Datei ein Ausschnitt des File-Objekts. In beiden Fällen kostet das Öffnen einen Lesevorgang für Header und Wurzel, einen für die Metadaten und danach einen je Kachel (plus ein Blattverzeichnis beim ersten Besuch eines Gebiets):

GET /florence.pmtiles
Range: bytes=0-16383                 → 206 Partial Content   Header + Wurzel
Range: bytes=525-22237               → 206                   JSON-Metadaten
Range: bytes=22238-456635            → 206                   Kachel 0/0/0

Server braucht   Accept-Ranges: bytes, Status 206 für einen Bereich
                 CORS: Access-Control-Allow-Origin für Ihre Seite
                 ein ETag, damit eine ersetzte Datei bemerkt wird

Ignoriert der Server den Range-Header und schickt die ganze Datei mit Status 200, oder blockiert CORS die Anfrage, sagt der Viewer das in klaren Worten. Diese beiden Einstellungen sind der übliche Grund, warum eine PMTiles-Karte auf dem Laptop läuft und im Web scheitert.

5. Die Kacheln zählen: das Durchlaufen der Verzeichnisse

Für den Reiter Kacheln liest der Viewer das ganze Wurzelverzeichnis und, wenn sie zusammen höchstens 64 MB groß sind (8 MB bei einer URL), alle Blattverzeichnisse mit einem Lesevorgang. Er entfaltet jeden Lauf und teilt ihn mit der ersten ID jeder Zoomstufe nach Zoomstufen auf:

Zoom der Kachel-ID t = größtes z mit (4^z − 1) / 3 ≤ t
Kacheln je Zoom     = Σ Lauflängen in dieser Zoomstufe
Größe je Zoom       = Σ Lauflänge × Länge
Abdeckung           = Kacheln / 4^z

Ersparnis durch Deduplizierung = 1 − tile_contents_count / addressed_tiles_count

Die Summen werden dann mit den drei Zahlen im Header verglichen (adressierte Kacheln, Kacheleinträge und Kachelinhalte). Eine Abweichung heißt, dass ein fehlerhaftes Werkzeug das Archiv geschrieben hat oder es abgeschnitten ist. Bei Archiven in Planetengröße, deren Blattverzeichnisse Hunderte MB groß sind, entfällt dieser Schritt, und die Karte funktioniert trotzdem.

6. Die Vektorkachel entpacken und dekodieren

Der Header sagt, wie die Kacheln komprimiert sind. Gzip wird mit dem eingebauten DecompressionStream des Browsers entpackt. Heraus kommt eine Mapbox Vector Tile, eine Protocol-Buffers-Nachricht, die derselbe Decoder wie im Vektor-MBTiles-Viewer dieser Seite liest:

Varint   300 = 1010 1100  0000 0010  → 0101100 + 0000010 × 128 = 300
Zigzag   0 → 0,  −1 → 1,  1 → 2,  −2 → 3      n = (z >>> 1) ^ −(z & 1)

Befehl = (Anzahl << 3) | id     MoveTo = 1, LineTo = 2, ClosePath = 7
9  = MoveTo 1 Punkt     18 = LineTo 2 Punkte     15 = ClosePath

Polygonring Fläche > 0  Außenring,  Fläche < 0  Loch

Attributnamen und -werte werden einmal je Layer gespeichert, und jedes Objekt behält nur Indexpaare. Deshalb bleiben OpenStreetMap-Kacheln mit Tausenden Gebäuden bei etwa 100 bis 200 KB. Der Decoder wurde an mehr als 350.000 Objekten mit dem Referenz-Decoder von Mapbox verglichen, ohne einen Unterschied.

7. Zeichnen, Overzoom und Trefferprüfung

Jede Kartenkachel ist eine Leinwand von 256 × 256 Pixeln (512 auf hochauflösenden Bildschirmen). Kacheleinheiten, 0 bis 4096 quer, werden in Pixel umgerechnet. Hinter der letzten Zoomstufe wird die Elternkachel vergrößert und verschoben. Ein Klick wird in Kacheleinheiten umgerechnet und gegen die Objekte geprüft:

Maßstab = 256 × f / extent        f = 2^(z_Karte − z_Daten)
Versatz = (x mod f, y mod f) × 256

Punkt     Treffer bei Abstand ≤ 7 px
Linie     Treffer bei Abstand zu einem Segment ≤ 5 px
Polygon   Treffer, wenn ein Strahl vom Klick die Ringe ungerade oft schneidet

Weil die Daten Vektoren sind, werden Linien bei jedem Maßstab neu gezeichnet und bleiben scharf. Beschriftungen folgen dem Attribut min_zoom, das Protomaps und viele Planetiler-Builds jedem Objekt geben: Ein Name erscheint erst ab dieser Zoomstufe, und Ortsnamen haben bei wenig Platz Vorrang vor POI-Namen. Ein schneller Test mit dem umgebenden Rechteck überspringt die meisten Objekte vor der genauen Klickprüfung, deshalb antworten auch dichte Stadtkacheln sofort.

8. Das Größenbudget je Kachel

Große Kacheln machen Karten langsam: Jede muss geladen, entpackt und dekodiert werden, bevor etwas erscheint. tippecanoe begrenzt Kacheln standardmäßig auf 500 KB, und dieselbe Grenze ist bei Vektorkachel-Diensten weit verbreitet. Der Viewer nimmt jede gespeicherte Kachellänge aus den Verzeichnissen und markiert Zoomstufen, die darüber liegen:

gespeicherte Größe = Länge im Verzeichniseintrag    Bytes, komprimiert
mittlere Größe     = Größe je Zoom / Kacheln je Zoom
Richtwert          größte Kachel < 500 KB  (512.000 Bytes)

Florenz (pmtiles.io)   größte Kachel 0/0/0 = 434.398 Bytes  → OK

In OpenStreetMap-PMTiles-Dateien sind die größten Kacheln oft die der kleinen Zoomstufen, die ein ganzes Land oder einen Kontinent enthalten, und die dichten Stadtzentren bei Zoom 12 bis 14. Die Liste der größten Kacheln führt Sie direkt dorthin.

Anzeige
Anzeige

PMTiles und die Exportformate im Detail

Was in einem PMTiles-Archiv steckt, wie es sich von MBTiles unterscheidet und was jeder Download aus diesem Viewer enthält.

Vektor-PMTiles .pmtiles

Ein PMTiles-v3-Archiv mit Kacheltyp MVT. Jede Kachel ist eine gzip-komprimierte Mapbox Vector Tile mit benannten Layern. Die JSON-Metadaten enthalten meist name, attribution, description und eine Liste vector_layers mit den Feldern jedes Layers. Mit Planetiler erstellte Archive speichern zusätzlich die Erstellungszeit und Replikationsdaten von OpenStreetMap.

metadata = {
  "name": "Paris, OpenStreetMap sample",
  "attribution": "© OpenStreetMap contributors",
  "vector_layers": [
    { "id": "roads", "minzoom": 3, "maxzoom": 12,
      "fields": { "kind": "String", "kind_detail": "String",
                  "name": "String", "min_zoom": "Number", … } } ]
}

Eine Datei, kein Server, jede Größe von einer Stadt bis zum ganzen Planeten. Es braucht ein Programm, das Range-Anfragen beherrscht (MapLibre mit der pmtiles-Bibliothek, OpenLayers, Leaflet-Plugins, QGIS oder diesen Viewer), und einen Stil, damit es wie eine fertige Karte aussieht.

Raster-PMTiles .pmtiles

Derselbe Aufbau, aber die Kacheln sind Bilder: PNG, JPEG, WebP oder AVIF. Der Stil steckt in den Pixeln, die Karte lässt sich also weder umgestalten noch abfragen und wird hinter ihrer letzten Zoomstufe unscharf.

Der Kacheltyp im Header unterscheidet die beiden. Dieser Viewer schickt Raster-Archive zum PMTiles-Viewer dieser Seite, der für Bilder gebaut ist.

PMTiles und MBTiles im Vergleich .pmtiles / .mbtiles

Beide enthalten dieselben Kacheln. MBTiles ist eine SQLite-Datenbank und braucht ein Programm oder einen Server, der SQL ausführt; PMTiles ist eine einfache Datei mit eigenem Index, aus der ein Browser einzelne Kacheln über HTTP lesen kann. PMTiles dedupliziert außerdem gleiche Kacheln über Lauflängen und ordnet die Kacheln entlang einer Hilbert-Kurve.

Nutzen Sie MBTiles zum Bearbeiten und für Werkzeuge, die es erwarten, und PMTiles zum Veröffentlichen im Web. Beim Umwandeln bleibt jede Kachel Byte für Byte gleich.

GeoJSON (Ansicht) .geojson

Alle Objekte der sichtbaren Layer in den Kacheln, die die aktuelle Ansicht abdecken, bei der aktuellen Datenzoomstufe, als FeatureCollection nach RFC 7946 in WGS84. Jedes Objekt behält seine Attribute und bekommt _layer und _tile dazu. Polygone werden mit ihren Löchern gruppiert.

{ "type": "Feature", "id": 35184380521390,
  "properties": { "kind": "highway", "kind_detail": "motorway", "name": "Avenue de Paris",
                  "min_zoom": 4, "_layer": "roads", "_tile": "11/1037/705" },
  "geometry": { "type": "LineString",
                "coordinates": [[2.3650217, 48.7375971], [2.3645496, 48.7386726], …] } }

Objekte sind an den Kachelrändern geschnitten, so wie sie gespeichert sind. Ein Export umfasst höchstens 64 Kacheln; zoomen Sie für ein kleineres, genaueres Gebiet hinein. Prüfen Sie bei OpenStreetMap-Daten die ODbL-Lizenz, bevor Sie einen Ausschnitt weiterverwenden.

PNG (Ansicht) .png

Ein Bild der Vektor-Layer, wie sie im Kartenfenster aussehen, mit weißem Hintergrund, einer Titelleiste mit Name und Zoomstufe und der Quellenangabe aus den Metadaten.

Gut für Dokumentation oder eine schnelle Vorschau. Die Hintergrundkarte ist nicht enthalten, es gibt also keine fremden Bildrechte zu beachten.

Header und Metadaten (JSON) .json

Der vollständige PMTiles-Header (Offsets, Längen, Zahlen, Kompression, Kacheltyp, Zoom, Ausdehnung und Mittelpunkt), die JSON-Metadaten, die Verzeichnisstatistik je Zoomstufe und die in den Kacheln gefundenen Layer.

Nützlich, um zwei Builds eines Archivs zu vergleichen oder die Liste vector_layers in einen MapLibre-Stil zu übernehmen.

Kachel (.pbf) .pbf

Die einzelne Vektorkachel unter Ihrem Klick, entpackt, genau so, wie MapLibre sie erhält. Der Dateiname enthält ihr z/x/y.

Geben Sie sie an andere Werkzeuge weiter (zum Beispiel vt2geojson oder einen Protobuf-Viewer), um eine Kachel genau zu untersuchen.

Technischer Bericht .html

Eine HTML-Seite mit Zusammenfassung des Archivs, Kartenvorschau, jeder Prüfung, der vollständigen Header-Tabelle, den Metadaten, den Layern mit Geometrietypen und Feldern, den Kacheln je Zoomstufe, den größten Kacheln, Empfehlungen und Hinweisen zur Nutzung.

Er lässt sich sauber als PDF drucken. Hängen Sie ihn an ein Ticket oder eine Lieferung, damit der Empfänger sieht, was im Archiv steckt, ohne es zu öffnen.

Alle Exporte entstehen in Ihrem Browser aus dem geöffneten Archiv. Nichts wird an diese Seite geschickt.

Wer einen Vektor-PMTiles-Viewer nutzt

PMTiles hat das Karten-Hosting von Kachelservern auf einfache Dateien verlagert, daher müssen heute viele Menschen in diese Dateien hineinsehen.

  1. Webkarten-Entwickler. Prüfen Sie ein Archiv, bevor Sie einen MapLibre-Stil schreiben: welche Layer es gibt, wie die Felder heißen, ab welcher Zoomstufe Daten erscheinen. Öffnen Sie die Produktions-URL, um vor dem Start zu sehen, ob Range-Anfragen und CORS funktionieren.
  2. OpenStreetMap-Mapper und Datennutzer. Sehen Sie sich einen OpenStreetMap-PMTiles-Ausschnitt von Protomaps oder aus einem Planetiler-Build an, klicken Sie Straßen, Gebäude und Orte an und sehen Sie genau, welche OSM-Tags in den Kacheln gelandet sind.
  3. GIS-Analysten. Bestätigen Sie, dass eine Ausgabe von tippecanoe, Planetiler oder „pmtiles convert“ die richtigen Layer, Attribute und den richtigen Zoombereich enthält, und übergeben Sie sie mit dem Bericht.
  4. DevOps- und Cloud-Teams. Testen Sie einen Bucket auf S3, R2 oder Google Cloud Storage: Der Viewer zeigt CORS-Fehler, fehlende Range-Unterstützung und fehlende ETags in klaren Worten, und die Prüfungen finden zu große Kacheln und nicht geclusterte Archive.
  5. Herausgeber von Daten. Prüfen Sie Quellenangabe, Ausdehnung, Mittelpunkt und Beschreibung, bevor Sie PMTiles-Karten veröffentlichen, damit Nutzer die richtige Quellenangabe und den richtigen Startausschnitt bekommen.
  6. Offline- und Feldkartierung. Prüfen Sie, ob ein mit „pmtiles extract“ geschnittenes Archiv das richtige Gebiet und die richtigen Zoomstufen abdeckt, bevor Sie es auf ein Gerät ohne Netz kopieren.
  7. Studierende und Lehrende. Sehen Sie, wie cloud-native Karten funktionieren: Schalten Sie das Kachelraster ein, vergleichen Sie Kachelgrößen über die Zoomstufen, lesen Sie den Header und verfolgen Sie eine Kachel-ID durch die Verzeichnisse.
  8. Support und Fehlerberichte. Zeigt eine PMTiles-Karte eine Lücke, finden Sie die Kachel, laden Sie sie als .pbf und hängen Sie sie mit dem Bericht an das Ticket.

Häufige Fragen zu PMTiles

Die 20 Fragen, die am häufigsten zu PMTiles-Dateien und diesem Viewer gestellt werden.

1. Was ist eine PMTiles-Datei?

PMTiles ist ein Archivformat in einer einzigen Datei für Kartenkacheln, entwickelt von Protomaps. Es enthält die Kacheln aller Zoomstufen und einen kompakten Index (die Verzeichnisse), sodass ein Programm jede einzelne Kachel mit einer HTTP-Range-Anfrage holen kann. Sie können es auf einfachem statischem Speicher ablegen und ohne Kachelserver als Karte nutzen.

2. Wie öffne ich eine PMTiles-Datei?

Für einen schnellen Blick legen Sie sie in diesem Viewer ab oder fügen ihre URL ein: Nichts wird installiert oder hochgeladen. Für eine Webkarte nutzen Sie MapLibre GL JS mit dem pmtiles-Protokoll. QGIS öffnet sie als Vektorlayer, wenn es GDAL 3.8 oder neuer nutzt. Das Kommandozeilenwerkzeug pmtiles zeigt den Header und wandelt in MBTiles um. Der Abschnitt „Wie öffnet man eine PMTiles-Datei?“ oben vergleicht alle Möglichkeiten.

3. Ist dieser PMTiles-Viewer kostenlos?

Ja. Er ist kostenlos, ohne Konto, ohne Tageslimit und ohne Wasserzeichen in den Exporten. Alles läuft in Ihrem Browser, es gibt also keine Serverkosten, die weitergegeben werden müssten.

4. Wird meine Datei hochgeladen?

Nein. Eine lokale Datei wird mit der File-API des Browsers stückweise gelesen, und die Kacheln werden in Ihrem Tab dekodiert und gezeichnet. Wenn Sie eine URL öffnen, holt Ihr Browser die Teile direkt von diesem Server; diese Seite bekommt die Daten nie. Nur eine Hintergrundkarte, falls Sie eine einschalten, wird von ihrem Anbieter geladen.

5. Wie groß darf das Archiv sein?

Es gibt keine feste Grenze. Der Viewer lädt nie die ganze Datei, nur Header, Verzeichnisse und die sichtbaren Kacheln, daher öffnet sich ein Planeten-Archiv von mehreren GB so schnell wie ein kleines. Bei sehr großen Archiven entfällt die Kachelstatistik je Zoomstufe, weil schon ihre Verzeichnisse Hunderte MB groß sind.

6. Warum öffnet sich meine PMTiles-URL nicht?

Fast immer liegt es an CORS oder an Range-Anfragen. Der Server muss Anfragen von Ihrer Seite erlauben (Header Access-Control-Allow-Origin) und nur die angefragten Bytes mit Status 206 zurückgeben. Cloud-Buckets brauchen eine CORS-Regel für GET und HEAD; bei manchen CDNs muss das Zwischenspeichern von Bytebereichen eingeschaltet werden. Die Fehlermeldung im Viewer sagt, welche der beiden Bedingungen fehlt.

7. Was sind OpenStreetMap-PMTiles?

PMTiles-Dateien aus OpenStreetMap-Daten, etwa die Protomaps-Basiskarte (Layer earth, water, landuse, landcover, roads, buildings, pois, places, boundaries, transit) oder Builds im OpenMapTiles-Schema aus Planetiler. Sie können tägliche Planeten-Builds laden oder eine Region ausschneiden. Sie stehen unter der ODbL-Lizenz und brauchen die Angabe „© OpenStreetMap contributors“.

8. Was ist der Unterschied zwischen PMTiles und MBTiles?

Beide speichern dieselben Kacheln. MBTiles ist eine SQLite-Datenbank, die ein Programm oder einen Kachelserver zum Lesen braucht; PMTiles ist eine einfache Datei mit eigenem Index, die ein Browser über HTTP lesen kann. PMTiles speichert gleiche Kacheln außerdem nur einmal. Wandeln Sie mit „pmtiles convert“ oder dem MBTiles-zu-PMTiles-Konverter dieser Seite um, die Kacheln bleiben gleich.

9. Kann ich hier Raster-PMTiles ansehen?

Diese Seite ist für Vektorkacheln gebaut. Öffnen Sie ein Raster-Archiv (PNG-, JPEG-, WebP- oder AVIF-Kacheln), erkennt der Viewer es am Header und verweist Sie auf den PMTiles-Viewer dieser Seite, der Bildkacheln anzeigt.

10. Was bedeutet „geclustert“?

Ein geclustertes Archiv speichert die Kacheln in der Reihenfolge der Kachel-IDs, nahe Kacheln auf der Karte liegen also auch in der Datei nahe beieinander. Programme können Nachbarn dann zusammen holen, und CDN-Caches arbeiten besser. Archive von „pmtiles convert“, tippecanoe und Planetiler sind geclustert.

11. Warum muss das Wurzelverzeichnis in 16 KB passen?

Damit eine Anfrage nach den ersten 16.384 Bytes immer Header und Wurzelverzeichnis zusammen liefert. Ein Programm weiß dann nach einem einzigen Hin und Her, wo jede Kachel oder jedes Blattverzeichnis liegt. Ist die Wurzel größer, ist die Spezifikation verletzt, und viele Programme scheitern. Der Reiter Prüfungen testet das.

12. Was ist eine Kachel-ID?

Eine Nummer für jede Kachel der Welt. Erst kommen alle Kacheln von Zoom 0, dann von Zoom 1 und so weiter; innerhalb einer Zoomstufe folgen die Kacheln einer Hilbert-Kurve. Die Kachel 12/2074/1409 in Paris hat zum Beispiel die ID 19.841.346. Die Verzeichnisse ordnen diesen IDs Bytebereiche zu.

13. Was ist Deduplizierung in PMTiles?

Viele Kacheln sind gleich, zum Beispiel offenes Meer oder leeres Land bei großen Zoomstufen. PMTiles speichert so eine Kachel einmal und lässt viele Kachel-IDs darauf zeigen, bei langen Strecken mit Lauflängen. Der Header zählt adressierte Kacheln und eindeutige Kachelinhalte; der Viewer zeigt, wie viel Platz das spart.

14. Was bedeutet Overzoom?

Ein Kachelsatz hat eine letzte Zoomstufe, bei OpenStreetMap-Daten oft 14 oder 15. Zoomen Sie weiter hinein, nutzt der Viewer diese Kacheln weiter und zeichnet sie größer. Weil Vektordaten neu gezeichnet werden, bleiben Linien scharf. Deshalb gehen Basiskarten selten über Zoom 15 hinaus.

15. Warum sind Objekte an Kachelrändern geschnitten?

Jede Vektorkachel enthält nur die Teile von Objekten, die in ihr liegen, plus einen kleinen Rand. Eine lange Straße wird in mehreren Stücken gespeichert, eines je Kachel, und ein Renderer zeichnet sie nebeneinander, sodass der Schnitt unsichtbar ist. Im GeoJSON-Export bleiben die Stücke getrennt, jedes mit einem Attribut _tile.

16. Kann ich PMTiles in GeoJSON umwandeln?

Für ein Gebiet ja: Zoomen Sie dorthin und drücken Sie „GeoJSON (Ansicht)“. Exportiert werden die sichtbaren Layer aus bis zu 64 Kacheln. Für ein ganzes Archiv exportieren Sie besser aus den Originaldaten, weil Kacheln vereinfacht und an den Rändern geschnitten sind.

17. Kann ich eine PMTiles-Datei hier bearbeiten?

Nein, der Viewer liest nur. Um die Daten zu ändern, bearbeiten Sie die Quelle und bauen das Archiv mit tippecanoe oder Planetiler neu. Um nur die Metadaten zu ändern, nutzen Sie „pmtiles edit“ aus dem Kommandozeilenwerkzeug.

18. Welche Werkzeuge erzeugen Vektor-PMTiles?

tippecanoe (aus GeoJSON, CSV und FlatGeobuf), Planetiler (aus OpenStreetMap, auch in den Schemas von Protomaps und OpenMapTiles), GDAL 3.8 und neuer sowie „pmtiles convert“ aus einer MBTiles-Datei. Der Reiter Archiv-Info zeigt das Erstellungswerkzeug, wenn die Metadaten es nennen.

19. Was ist MLT und warum wird es nicht angezeigt?

MLT (MapLibre Tile) ist ein neueres Vektorkachelformat mit spaltenweiser Kodierung und besserer Kompression. PMTiles kann es mit Kacheltyp 6 speichern. Dieser Viewer dekodiert nur Mapbox Vector Tiles (MVT) und sagt Ihnen, wenn ein Archiv MLT enthält; MapLibre GL JS kann solche Archive anzeigen.

20. Funktioniert es auf Handy oder Tablet?

Ja, in jedem aktuellen Browser unter iOS, Android, Windows, macOS und Linux. Das Öffnen über eine URL eignet sich auf Handys besonders gut, weil nur die sichtbaren Kacheln geladen werden. Nutzen Sie die Vollbildversion für mehr Platz.

Spezifikationen, Software und Datenquellen

Der Viewer baut auf offenen Spezifikationen, offener Software und offenen Daten auf:

  • PMTiles (Protomaps) · BSD-3-Clause
    Spezifikation PMTiles v3 und JavaScript-Bibliothek pmtiles von Protomaps: Aufbau des Archivs, Hilbert-Kachel-IDs, Verzeichnisse und das Lesen von Header, Verzeichnissen und Kacheln aus einer Datei oder URL.
  • Spezifikation Mapbox Vector Tile: Protobuf-Aufbau, Geometriebefehle und Umlaufregeln, denen der Decoder folgt.
  • Leaflet 1.9 · BSD-2-Clause
    Interaktive Karte und die Canvas-Rasterebene, die die Kacheln zeichnet.
  • OpenStreetMap · ODbL 1.0
    Kartendaten in der Pariser Probe und im Florenz-Beispiel: © OpenStreetMap contributors, unter der Open Database License.
  • Protomaps Basemap and pmtiles.io · BSD-3-Clause / ODbL
    Basiskartenschema der Probe und das Florenz-Beispielarchiv auf pmtiles.io.
  • Optionale Hintergrundkarten: eigene Vektorkacheln, gehostet von KONAKTIVE, mit CARTO und OpenStreetMap als Ausweichlösung, sowie Esri World Imagery.

Das Durchlaufen der Verzeichnisse, der Vektorkachel-Decoder, der Renderer, die Prüfungen und alle Exporte wurden für diese Seite geschrieben und laufen vollständig in Ihrem Browser.

Verwandte Werkzeuge für Kacheln und GIS-Dateien

Die Prüfungen folgen den Spezifikationen PMTiles v3 und Mapbox Vector Tile 2.1 sowie üblicher Praxis; eine bestandene Prüfung garantiert nicht, dass jede Karten-App das Archiv annimmt. Sample data © OpenStreetMap contributors (ODbL), Protomaps. Optional base maps © OpenStreetMap contributors, Protomaps (hosted by KONAKTIVE), CARTO, Esri.

Muhammad Gulraiz Khan, GIS-Experte und Gründer von KONAKTIVE und OnlineMapMaker.com

Über den Autor

Muhammad Gulraiz Khan

GIS-Experte & Berater · Gründer, KONAKTIVE

Muhammad Gulraiz Khan ist ein GIS-Experte mit über einem Jahrzehnt Berufserfahrung in der Bereitstellung geografischer Lösungen für den Energiesektor, darunter Projekte für die Weltbank, die International Finance Corporation (IFC) und USAID. Er hat OnlineMapMaker.com aufgebaut, um professionelle Kartierungswerkzeuge kostenlos und für jeden zugänglich zu machen.

Anzeige
Anzeige