![Page 1: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/1.jpg)
Pipelinebasierte Erzeugung von Karten
Thomas Skowron
![Page 2: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/2.jpg)
Previously „Überblick über Rendering-
Techniken und Software“ FOSSGIS-Konferenz 2017
![Page 3: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/3.jpg)
Status Quo
![Page 4: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/4.jpg)
OSM Planet
PostgreSQL
Renderer
Flaschenhals
Flaschenhals
Operativer Aufwand
![Page 5: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/5.jpg)
PostgreSQL
Brauchen wir das Alles?
+ SQL + ACID, MVCC & Transaktionen + Indizes + Rollenmanagement + skriptbar + failover + …
- Performance (PostGIS) - operativer Aufwand - Speicherbedarf
![Page 6: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/6.jpg)
Gegenvorschlag: |
![Page 7: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/7.jpg)
Gegenvorschlag: parse | map-reduce | render
![Page 8: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/8.jpg)
Schritt 1
OSM Daten in Geodaten wandeln
![Page 9: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/9.jpg)
Schritt 2
Filtern
![Page 10: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/10.jpg)
Schritt 3
Daten mappen
![Page 11: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/11.jpg)
Schritt 4
Ins Zielformat konvertieren
![Page 12: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/12.jpg)
Aber wie?
![Page 13: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/13.jpg)
Mit Tools, die jeweils genau eine Sache tun
![Page 14: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/14.jpg)
und einem portablen Datenformat
![Page 15: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/15.jpg)
Wie wärs mit Shapefiles?
![Page 16: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/16.jpg)
Wie wärs mit Shapefiles?
![Page 17: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/17.jpg)
Was bräuchte ein geeignetes Format?
![Page 18: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/18.jpg)
Performance lineares Schreiben, paralleles Lesen
![Page 19: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/19.jpg)
Skalierbar kleine bis riesige Datensätze
![Page 20: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/20.jpg)
Tagstruktur Attributtabellen, nein Danke!
![Page 21: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/21.jpg)
Zukunftskompatibel gerüstet für Änderungen
![Page 22: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/22.jpg)
Shapefile
Performance mäßig
Skalierbar nein, 2 GB Limit
Tagstruktur nein
Zukunftskompatibel nein
![Page 23: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/23.jpg)
GeoJSON
Performance mäßig
Skalierbar mäßig, singlethreaded
Tagstruktur ja
Zukunftskompatibel begrenzt
![Page 24: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/24.jpg)
GeoPackage
Performance schlecht (SQLite)
Skalierbar mäßig
Tagstruktur ja
Zukunftskompatibel ja
![Page 25: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/25.jpg)
Performance
Flexibilität
![Page 26: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/26.jpg)
Wir brauchen Mut zu Neuem. Ohne Änderung kein Fortschritt.
![Page 27: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/27.jpg)
Wie müsste ein neues Format aussehen?
• binär • Blöcke, streambar • einzelner Stream, nicht mehrere Dateien • nicht SQLite • nicht obskur • offen und erweiterbar
![Page 28: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/28.jpg)
Vorschlag
![Page 29: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/29.jpg)
![Page 30: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/30.jpg)
Basierend auf Protocol Buffers und WKB
![Page 31: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/31.jpg)
Offene Spezifikation unter https://thomas.skowron.eu/spaten/
![Page 33: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/33.jpg)
Etwa 50% kleiner als GeoJSON*
* YMMV
![Page 34: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/34.jpg)
Version 0
![Page 35: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/35.jpg)
Feedback & Input erwünscht
![Page 36: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/36.jpg)
Ziel?
![Page 37: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/37.jpg)
grandine-spatialize -in planet.osm.pbf -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14
![Page 38: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/38.jpg)
osmium export -f spaten planet.osm.pbf | gradine-converter -mapping roads.yml |
grandine-tiler -out tiles/roads/ -zoom 14
(noch nicht)
![Page 39: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/39.jpg)
osmium export -f spaten planet.osm.pbf | your-tool-here -fancify |
magic-renderer
(noch nicht)
![Page 40: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/40.jpg)
Austauschbarkeit von Tools
![Page 41: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/41.jpg)
Was fehlt?
![Page 42: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/42.jpg)
Ein Markup, das Normalisierung und
Umwandlung von Daten vereinfacht
![Page 43: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/43.jpg)
Beispiel
LineString(10 20, 10 21, …)
highway=primary max_height=11“2’
LineString(10 20, 10 21, …)
@layer=transportation class=primary max_height=3.4
![Page 44: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/44.jpg)
„Simple things should be simple, complex things
should be possible.“Alan Kay
![Page 45: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/45.jpg)
- src: key: railway value: "*" dest: - {key: "@layer", value: "transportation"} - {key: "class", value: "railway"} - {key: "maxspeed", value: "$maxspeed", type: int}
Filterkriterium
Ausgabe
TypenumwandlungÜbernahme des Wertes
![Page 46: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/46.jpg)
Da geht noch was! HELP NEEDED
![Page 47: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/47.jpg)
Zukunft
![Page 48: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/48.jpg)
Größere Flexibilität mit weniger Programmieraufwand
![Page 49: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/49.jpg)
Schnelleres Verarbeiten von Daten mit weniger Hardware
![Page 50: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/50.jpg)
Weniger „Points of Failure“
![Page 51: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/51.jpg)
Es ist noch viel zu tun Datenformat, Tools, Markup, …
![Page 52: Pipelinebasierte Erzeugung von Karten basierte Verarbeitung von... · gradine-converter -mapping roads.yml | grandine-tiler -out tiles/roads/ -zoom 14 (noch nicht) osmium export -f](https://reader035.vdocument.in/reader035/viewer/2022062607/605e8a4ca6ca5d4fc80510f2/html5/thumbnails/52.jpg)
Lasst uns die Zukunft gemeinsam bauen!