Suche anfängerfreundlichen Stack für Vektortiles

Hallo,

ich bin Webentwickler und möchte für die Kontaktseiten meiner Kunden Stadtpläne erzeugen.

Dank der sehr gelungen Schritt für Schritt Anleitung auf https://switch2osm.org ist es mir schon gelungen, Rastertiles für eine Karte von Berlin zu rendern und sie über einen gewöhnlichen Web-PHP-Account auszuliefern und sie mit Leaflet anzuzeigen.

Aber die Zukunft scheint den Vector-Tiles und Web-GL zu gehören und ich würde gerne etwas ähnliches mit Vectortiles erreichen.

Ich habe Kenntnisse in Linux, Docker, Java, Node, JS, PHP und habe schon öfteren Karten mit Leaflet erstellt. Ich finde haufenweise Wiki-Artikel und Auflistungen dutzender Tools, aber wenig was mir wirklich weiterhilft. Vor lauter Bäumen sehe ich keinen Wald mehr und auch nach stunden langer Recherche nicht das gefunden, was ich brauche. Die Vielzahl von Tools, Standards und Entwicklungen überfordern mich.

Könnt ihr mir einen Toolstack empfehlen, der zu meinen Anforderungen passt (siehe unten)? Oder könnt ihr mir vielleicht sogar eine gute Schritt-für-Schritt-Anleitung nennen, mit den ich ein Stack zum Rendern und Anzeigen von Vektortiles aufsetzen kann? Gerne auch in Englischer Sprache.

Meine Anforderungen sind folgende:

  • Ich will nach Möglichlkeit OpenSource-Tools verwenden, am besten solche, die gut dokumentiert und einfach zu benutzen sind und die unter Linux laufen.
  • Als Gebiet soll eine Großstadt wie Berlin oder Hamburg mit Umgebung angezeigt werden.
  • Auf höheren Zoomstufen sollten Staßennamen, Hausnummern und Haltestellen von Bussen und Bahnen verzeichnet sein
  • Ich möchte die Karten stylen können, damit sie optisch zur jeweiligen Webseite passen
  • Ich will schon aus Datenschutzgründen keine Tiles oder Daten von kommerziellen Anbietern beziehen.
  • Ich habe keinen vollwertigen Server, möchte die Tiles auf meinem Rechner rendern und dann auf einem gewöhnlichen PHP-Web-Account hosten.
  • Aktualität ist nicht ganz so wichtig. Ich denke es genügt die Daten alle ein bis zwei Jahre zu aktualisieren. Es macht mir nichts aus den Rendering-Prozess dann nochmal komplett zu durchlaufen.
  • Unterstützung für Zombie-Browser wie den IE brauche ich nicht aber die Karten sollten auch auf etwas älteren Smartphones einigermaßen laufen.

Vielen Dank schon mal für Eure Hilfe und auch für die tolle Arbeit, die die OSM-Community hier leistet

Das mit der Aktualität mag auf niedrigen Zoom-Leveln funktionieren, aber spätestens bei den Haltestellen sehe ich da einen Zielkonflikt. Ok, die Haltepunkte von Bahnen sind in der Regel ortsfest, aber wenn ich mir alleine anschaue welche, teils mehrfache, Verschiebungen von Bushaltestellen und ganzen Buslinien es in den letzten zwei Jahren in meinem näheren Umkreis gegeben hat … :open_mouth:

Ich habe hier daheim einen Umgebungsplan an der Wand, vor allem für Gäste, und drucke den mindestens zweimal im Jahr neu aus um ihn auf den aktuellen Stand zu bringen. Zugegeben: nicht nur wegen Baustellen und Haltestellen-Änderungen, sondern auch wegen der Fluktiationen in Einzelhandel und Gastronomie.

Aber alle ein bis zwei Jahre erscheint mir dann doch deutlich zu lang. Und wenn man sich auf einzelne Städte beschränken will dann sollte auch der Aufwand nicht besonders groß sein das regelmäßiger zu aktualisieren …?

Sollte sich in der Nähe des Kunden etwas Gravierendes ändern und bspw eine Haltestellen dauerhaft verlegt werden, eine Straße umbenannt oder neu gebaut werden, sollte man die Aktualisierung natürlich vorziehen.

Aber es geht ja aber nur darum, die Anfahrt zu beschreiben. Für diesen Zweck muss vor allem die nähere Umgebung korrekt verzeichnet sein. Wenn der Update-Prozess einfach ist und sich gut automatisieren lässt, etwa über ein Skript, kann der gerne häufiger erfolgen, sofern der Kunde bereit ist, den Aufwand zu bezahlen.

Da könnte Tilemaker gut passen. Das ist wohl die einfachste Art Vector Tiles ohne Datenbank direkt aus einem PBF-Extrakt per Kommandozeilen-Tool zu erzeugen.

Vortrags-Video frisch von der FOSSGIS 2021 Konferenz:
VectorTiles mithilfe von Tilemaker erstellen und nutzen

Alterativ OpenMapTiles, siehe Quickstart.

Hallo,

Tilemaker ist nur eine Software zur Erstellung der Tiles. Sie benötigt noch ein Schema, welche Features in welche Layer der Vektortiles sollen. Tilemaker liefert für OpenMapTiles eine Beispiel-Konfiguration mit. Vergiss nicht, die erforderlichen Shapefiles (es sind teilweise dieselben wie bei OSM Carto) vor dem Start herunterzuladen und an der passenden Stelle zu platzieren.

Ressourcenbedarf, den ich mit dem aktuellen Master neulich gemessen habe (ohne Shapefiles, maximale Anzahl an Threads):

  • Deutschland: 37 GB RAM, 0:58 h (Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz, 508 GB RAM)
  • Europa: 216 GB RAM, 7:32 h mit Cache auf einer NVMe-SSD (Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz, 508 GB RAM)
  • Europa: 240 GB RAM, 2:54 h mit Cache auf einer NVMe-SSD (AMD EPYC 7452 32-Core Processor, 512 GB RAM)
  • Welt: 370 GB RAM, 17:52 h mit Cache auf einer NVMe-SSD (AMD EPYC 7452 32-Core Processor, 512 GB RAM)

Zum Schreiben der Vektortiles macht Tilemaker intensiven Gebrauch von Multithreading. Die CPU war die Schwachstelle.

Tilemaker erstellt eine MBTiles-Datei, die du zum einfachen Ausliefern mit einem Webserver in eine z/x/y.pbf-Dateistruktur überführen musst.

Rastertiles haben den Vorteil, dass sie wenig CPU auf dem Client benötigen. Ich kann an der Lautstärke meines Laptop-Lüfters hören, welche Kartentechnologie eingesetzt wird.

Viele Grüße

Michael

EDIT: Kaputten Satzbau repariert.

Vielen Dank für die Antworten!

Ich hab auch schon bei den Rastertiles bemerkt, dass das Rendern lange dauert. Für Berlin auf meinem PC ca. 8 Stunden. Werde mir Tilemaker und das verlinkte Video mal ansehen.

Was empfiehlt ihr für die Darstellung in der Webseite? MapLibre?

Das die CPU auf dem Endgerät so stark belastet wird war mir nicht klar. Läuft das Eurer Erfahrung nach auf einem drei viere Jahre alten, besseren Smartphone, sagen wir bspw. auf einem iPhone 7 oder einem Samsung Galaxy S7?

Noch ein Frage: Die JSON-Style Dateien scheinen recht komplex. Welches Tool würdet ihr empfehlen um die zu bearbeiten?

Das verlinkte Video war sehr hilfreich und hat die meisten meiner Fragen beantwortet. Vielen Dank! MapLibre sollte gehen und Maputnik fürs Stylen. Nach der 12fach Faustregel sollten meine 16GB Ram für Berlin+Brandenburg bzw. Hamburg+Schleswig-Holstein+Niedersachsen reichen.

Wie kriegt man in Maputnik Hausnummern angezeigt?

Gute Frage! Aber hier ist jedenfalls ein Beispiel zum Nachbauen, bei dem das zu klappen scheint:

https://blog.kleunen.nl/blog/tilemaker-generate-map

Werde das heute im laufe der Tages mal versuchen. Ich nehme an, das geht nur, wenn man die höhren Zoomlevel mitrendert - was wiederum heißt, dass Tilemaker sehr viel RAM benötigt, zumal der Speicherplatzbedarf mit dem Zoomlevel exponentiell wächst. In dem Artikel ist ein Tool verlinkt, mit dem man den Speicherplatzbedarf für die Tiles abschätzen kann. Laut dem verlinkten Video soll man diese Größe mit 12 mulitiplizieren um den benötigten RAM zu berechnen. Vielleicht tut’s auch Swapbereich auf einer gewöhnlichen Sata-SSD?

Danke!

https://blog.kleunen.nl/blog/tilemaker-generate-map/netherlands_style.json nehmen, nach housenumber suchen und den Eintrag dann zusammenklicken. Läuft :slight_smile:

Dafür gibt’s Cloud. Ich hab auch Zugriff auf Maschinen mit 512 GiB RAM im Büro. Für Europa reicht’s.

Es liegen immernoch Größenordnungen zwischen RAM-Geschwindigkeit und SSD.

:cool: Danke auch!

Ich hab hier leider nur 16 GB - Aber mir reichen wie gesagt Gebiete wie Hamburg oder Berlin und die Kiste kann ruhig über Nacht laufen. Falls acht Stunden nicht reichen oder häufiger Anfragen nach (aktualisierten) Karten kommen denke ich über mehr RAM oder eine Cloud-Lösung nach.