PMTiles: Vektorkacheln im Einsatz für die Feuerwehr
Rose Mathelier
Seit 2019 begleitet Camptocamp die Agence du Numérique de la Sécurité Civile (ANSC) bei der Entwicklung von NexSIS, dem Informationssystem für Feuerwehr und Zivilschutz, das mittlerweile bei 20 Feuerwehr- und Rettungsdiensten (SIS) im Einsatz ist.
In NexSIS spielt die Kartografie eine zentrale Rolle. Alarme, Einsätze, Fahrzeuge: Alles ist georeferenziert. Eine aktuelle, gut lesbare und leistungsfähige Basiskarte ist daher entscheidend, um kontextuelle Informationen bereitzustellen, die bei der Bewältigung von Notfällen manchmal kritisch sind.
Dieser Artikel gibt einen Erfahrungsbericht zur Erstellung einer Vektor-Basiskarte, die über PMTiles bereitgestellt wird, von den ersten Tests bis zur funktionalen Integration in die NexSIS-Plattform.
Experimentieren
Warum eine neue Basiskarte?
Eine berechtigte Frage. NexSIS bietet bereits mehrere Basiskarten – warum also eine weitere hinzufügen?
NexSIS bietet seinen Nutzerinnen und Nutzern mehrere ergänzende Hintergrundkarten, die über GeoServer Cloud bereitgestellt werden und auf Daten in einer PostGIS-Datenbank basieren. Eine dieser Karten basiert auf den globalen Daten von OpenStreetMap. Der Import dieser grossen Datenmengen ist relativ komplex und zeitaufwendig. Diese Aufgabe wird daher manchmal zugunsten dringenderer Arbeiten zurückgestellt, und in der Folge veralten die Daten, wodurch das Risiko steigt, wichtige Informationen zu übersehen.
Basiskarten auf Basis externer Dienste sind ebenfalls verfügbar, doch deren Verfügbarkeit kann nicht garantiert werden, da der Dienst nicht unter unserer Kontrolle steht. Für ein systemkritisches System ist das daher keine tragfähige Lösung.
Warum das Format PMTiles?
PMTiles ist ein Format aus dem Protomaps-Ökosystem, das eine Pyramide gekachelter Daten – Raster oder Vektor – in einer einzigen Datei (myfile.pmtiles) mit einem optimierten internen Index speichert. Diese Datei kann sogar Daten für die gesamte Erde enthalten.
Eine PMTiles-Datei ist in der Regel mit einem Stil im Mapbox-Style-Format verknüpft.
Der grosse Vorteil dieser Lösung ist die Vereinfachung der Updates: Es muss nur eine einzige Datei neu generiert werden, ohne Datenbankschreibvorgänge, bei minimalen Speicherkosten.
Zudem bietet das Vektorformat eine flüssigere Darstellung sowie umfangreichere Möglichkeiten zur Anpassung.
Machbarkeit validieren
Um diese Arbeiten zu starten, haben wir ein kleines OpenLayers-Projekt (die in NexSIS verwendete Kartenbibliothek) umgesetzt, mit zwei Zielen: Den Inhalt einer PMTiles-Datei auf der Karte darzustellen und einen Stil darauf anzuwenden.
In OpenLayers existieren zwar mehrere Tools zum Lesen und Anzeigen von Kacheln, doch die Integration von Stilen ist komplexer, da das Mapbox-Style-Format (der Standard für Vektorkacheln) nicht nativ unterstützt wird.
Die Lösung fanden wir in bestehenden Camptocamp Projekten mit der Bibliothek ol-maplibre-layer. Dieses Werkzeug ermöglicht es uns, eine MapLibre-Schicht in eine OpenLayers-Karte zu integrieren und so PMTiles (und Vektorkacheln allgemein) besser zu unterstützen.
Strukturieren
Integration ins Projekt
NexSIS stellt standardmässig eine OpenStreetMap-Hintergrundkarte in seinen operativen Karten bereit. Sie ist daher die am häufigsten genutzte, aber auch die komplexeste in der Aktualisierung. Glücklicherweise bietet Protomaps PMTiles-Dateien an, die auf OSM-Daten basieren, regelmässig erzeugt werden und mit verschiedenen zugehörigen Styles verfügbar sind. Dadurch können wir sie als Grundlage für eine neue OSM-Hintergrundkarte verwenden, ohne eigene PMTiles generieren zu müssen.
Die PMTiles-Datei wird in einem Object Storage gespeichert. Um einen direkten Zugriff zu verhindern, verwenden wir einen Tile-Server, der den Inhalt der Datei über eine klassische TMS-(XYZ)-API bereitstellt.
Für diesen Anwendungsfall haben wir Martin eingesetzt, eine Lösung aus dem MapLibre-Ökosystem. Martin unterstützt verschiedene Quelltypen (insbesondere rasterbasierte PMTiles) und bietet die Möglichkeit, Caching zu nutzen.
Die finale Architektur sieht wie folgt aus: (Frontend-Service für PMTiles mit ol-maplibre-layer, API-Proxy für Styles/Sprites/Fonts, Martin Tile Server, S3 Storage).
Bereitstellung
Um Darstellung und Performance unter realen Bedingungen zu testen, haben wir die Basiskarte in NexSIS optional verfügbar gemacht; sie wird angeboten, ist aber nicht standardmässig aktiviert.
So können wir die Architektur in produktiven Umgebungen validieren, ohne den Betrieb zu stören.
Die Nutzer:innen sind eingeladen, das neue Tool in ihrem eigenen Tempo zu testen und Feedback zu geben, während die Entwicklungsteams parallel die Netzwerknutzung überwachen. Die bisherigen Tests und Metriken zeigen eine akzeptable Performance und bestätigen den Start weiterer Arbeiten zur inhaltlichen Erweiterung dieser Basiskarte.
Anreichern
Stil anpassen
Die Nutzer:innen sind es gewohnt, mit der OSM-Basiskarte zu arbeiten (sowohl in Bezug auf Daten als auch Darstellung). Daher wollen wir deren visuelle Eigenschaften – wie dargestellte Inhalte, Farben und Symbole – möglichst beibehalten, da zu starke Veränderungen irritieren und die Effizienz beeinträchtigen könnten.
Es ist daher sinnvoll, den Stil so anzupassen, dass er dem OpenStreetMap-Rendering möglichst nahekommt.
Links der ursprüngliche OSM-Stil. Rechts die laufende Arbeit, um ihn in einem an PM Tiles angepassten Mapbox-Stil nachzubilden.
Neue Information hinzufügen: Schummerung (Hillshading)
Die Schummerung stellt das Relief visuell dar, indem Schatteneffekte simuliert werden. Dadurch wird die Karte realistischer und besser lesbar, insbesondere in bergigen Regionen – ein klarer Vorteil etwa in Gebieten wie Südkorsika, der ersten Region, die NexSIS eingesetzt hat.
Wie bereits erwähnt, können mit PMTiles auch Rasterdaten bereitgestellt werden. So können wir eine zweite Datei (hillshade.pmtiles) anbieten, die ebenfalls über Martin als Kacheln ausgeliefert wird. Die Quelldatei wird vom Open-Source-Projekt Mapterhorn bereitgestellt.
Die Schattierung ermöglicht es den Nutzern, die Morphologie des Geländes genauer zu erfassen.
Fazit
Diese Arbeiten rund um PMTiles eröffnen zahlreiche technische Möglichkeiten für eine breitere Nutzung von Vektorkacheln in NexSIS sowie für eine weitergehende Anpassung von Basiskarten.
Vor allem bringen sie zwei wesentliche Verbesserungen: Eine moderne, flüssige und anpassbare Darstellung sowie eine vereinfachte Aktualisierung, die es ermöglicht, stets aktuelle Daten bereitzustellen und gleichzeitig die Datenverantwortlichen von einer komplexen und zeitintensiven Aufgabe entlastet.
Karriere
Sie sind daran interessiert, in einer inspirierenden Umgebung zu arbeiten und sich unseren motivierten und multikulturellen Teams anzuschliessen?