Neuer Dienst: Server für OSM Vektorkacheln

Bei meinen Experiment zu Aktueller Stand und weiterer Plan - #5 von opatut habe ich festgestellt, dass Vektorkacheln eine ganz tolle Sache sind, denn sie erlauben sehr flexible Erstellung von Kartendarstellungen, mit sogenannten „Map Styles“ (siehe z.B. Styles | Mapbox Studio manual | Mapbox).

Für solche Vektorkacheln gibt es viele proprietäre Dienste, die welche bereitstellen. Das finden wir doof.

Darum habe ich (testweise) einen Tileserver auf unserem Server aufgesetzt. Für diesen generiere ich die Vektorkacheln im OpenMapTiles Format. Diese sind dann kompatibel mit den Standard-Styles, die z.B. in Maputnik (einem Map-Style-Editor) verfügbar sind, und die dann abgewandelt werden können für eigene Bedürfnisse.

Ich halte das für relativ sinnvoll, da wir ja stark positionsbezogene Daten haben und in Zukunft hoffentlich viele Visualisierungen ebendieser ermöglichen wollen. Genau mit der gleichen Technik können wir übrigens unsere eigenen erfassten Daten veröffentlichen und zum einfachen Visualisieren anregen – mehr dazu im oben verlinkten Post.

Die Kacheln sind verfügbar unter der folgenden URL (Zoom 0 bis 14). Wer möchte, kann damit schon losspielen. Eventuell ändern sich die URLs aber noch, dann poste ich das hier.

https://portal.openbikesensor.org/basemap/data/basemap/{z}/{x}/{y}.pbf

Ich importiere gern weitere Bezirke/Regionen/Bundesländer… so lange wir genug Kapazität haben. Schreibt einfach hier eine Antwort, wenn ihr eure Region abgebildet haben wollt (gern mit Geofabrik Link). Im Moment ist importiert:

  • DACH (Deutschland, Österreich und Schweiz)

Ich werde in den nächsten Tagen mein Vorgehen für diesen Stand dokumentieren, damit andere das ebenfalls mit pflegen können, wenn sie wollen. Bisher habe ich aber hauptsächlich OpenMapTiles anhand der Readme ohne viel Abweichung eingesetzt :wink:

LG Paul

3 „Gefällt mir“

Das ist eine Hervorragende Idee, mit dem browserbasierten Overlay stoßen wir in Darmstadt schon an die Browsergrenze für die „measurements“ Darstellung. Stellst du dir vor, dass die Auswertungen dann als Teil der Map tiles ausgeliefert werden, als extralayer von positionsgefiltertem json mit rendering im Browser, oder als extra-Layer von (transparenten) tiles?

Meine Vorstellung wäre ja, dass man irgendwann verschiedene Layer an-und ausknipsen kann „oh hier wird immer eng überholt“ - „Wo denn“ - „Machen wir mal die Messwerte an“ - „Ah an der Ecke Daimlerstraße wo der Radweg so schlecht verschwenkt ist“ - „Aber weiter südlich dann nicht mehr, warum denn, mach mal das Fahrhäufigkeitslayer an“ - „die OBS-Fahrer weichen weiter südlich auf die Fahrradstraße aus, und dort wird nicht überholt“.

Je nach dem wie schwer es ist, die Auswertungen zu schreiben, könnten die Instanzen ihre selbstgebauten Auswertungen als (z.b. python)- Pakete oder module schreiben und untereinander austauschen.

Ja, ersteres ist der Fall, so fast – es ist kein JSON mehr, sondern irgendwas effizientes :wink: Das sind dann sogenannte Vektorkacheln, also gekachelte (nach Zoom und Bereich vorgefilterte und vorprojizierte) Geometriedaten, die dann im Browser gerendered werden. Daher braucht es auch keine „Transparenz“ darin, denn es sind keine richtigen Bilddaten. Die Bibliothek verwendet aber WebGL, damit macht es auch nix, tausende von Punkten oder komplexe Linienzüge zu rendern.

Meine Vorstellung wäre ja, dass man irgendwann verschiedene Layer an-und ausknipsen kann

Nicht nur das – wenn die Daten verfügbar sind, kannst du sie dir in einen beliebigen Map-Style-Editor (z.B. Maputnik) laden und selbst die Ansicht verändern, z.B. die Farbskala anpassen, oder welcher Wert als Grundlage für die Einfärbung genommen werden soll (mean/median/min/max/… was halt in den Daten verfügbar ist), und so weiter. Deinen erzeugten Style sollst du dann natürlich per Pull-Request zurück in die Software spielen können, wenn er auch für andere einen Mehrwert bietet, z.B. weil er eine bestimmte Fragestellung gut beantwortet.

könnten die Instanzen ihre selbstgebauten Auswertungen als (z.b. python)- Pakete oder module schreiben und untereinander austauschen

Die Auswertung anzupassen ist nicht wirklich schwer, wäre nach meinem bisherigen Plan im „OpenMapTiles“ Layer Format zu machen (also eigentlich PostgreSQL queries und Funktionen), und wäre genauso Teil der Software, per PR miteinander geteilt. Ich denke es sollte eine derartige „Baseline“ geben, damit die verschiedenen Instanzen untereinander kompatibel bleiben. Was du dann selbst noch oben drauf verfügbar machst ist natürlich dir überlassen.


Zurück zum Thema: Dieser Post geht eigentlich darum, dass ich für die „Basemap“, also OpenStreetMap ohne OBS-Daten, eine Dienst aufgesetzt habe, der Vektorkacheln (Straßen, Wege, Flächen, Gebäude, Gewässer, POIs, …) anbietet. Damit lässt sich „nur“ der „Hintergrund“ unserer Auswertungsmap rendern. Wir trennen das bewusst, da es ja ganz unterschiedliche Datenquellen sind. Die Map-Bibliotheken können dann aber alle diese zwei Quellen in einem Style vereinen und gemischt zum rendern verwenden (aka Straßen aus der OSM-basierten Quelle, Events aus der OBS-basierten Quelle).

1 „Gefällt mir“

FYI die URL hat sich geändert.

Alt

https://portal.openbikesensor.org/tiles/data/basemap/{z}/{x}/{y}.pbf

Im Post oben stand ganz falsch das hier drin:

https://portal.openbikesensor.org/data/basemap/{z}/{x}/{y}.pbf

Neu:

https://portal.openbikesensor.org/basemap/data/basemap/{z}/{x}/{y}.pbf

Hoffentlich bald

Wenn ich die Domain eingerichtet bekomme, schiebe ich das noch einmal nach:

https://tiles.openbikesensor.org/data/basemap/{z}/{x}/{y}.pbf

Die neue URL ist jetzt eingerichtet.

https://tiles.openbikesensor.org/data/basemap/{z}/{x}/{y}.pbf
# bzw.
https://tiles.openbikesensor.org/data/basemap.json

Das ganze kann man auch schön auf https://tiles.openbikesensor.org inspizieren.

Im Moment sind Baden-Würrtemberg Daten importiert. Ich erweitere das gerade auf ganz DE. Da der Server unglaublich langsam ist, habe ich eine SSD mit USB-Sata-Adapter an meinen Laptop gehängt, darauf openmaptiles installiert, und damit generiere ich jetzt die .mbtiles und lade sie dann nur noch hoch. Sind dann auch ein paar GB, aber ist immer noch schneller als das auf dem Server zu generieren.

Ich evaluiere auch gerade flatmap als alternative zu OpenMapTiles für die Basemap, es kann zwar keine Incremental Updates, ist aber viel schneller und effizienter im generieren ganzer Snapshots. Für DE sollte das in ca. 1h durchlaufen, schätze ich. Dann mache ich einfach alle paar Wochen abends mal ein Update der OSM-Daten für die Basemap, das ist erstmal vertrebar – bis wir uns mehr Hardware leisten können :smiley:

Update: Jetzt ist ganz DACH drin!

7 „Gefällt mir“