We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

OSM-Daten mit Vektortiles erfolgreich nutzen

00:00

Formal Metadata

Title
OSM-Daten mit Vektortiles erfolgreich nutzen
Title of Series
Number of Parts
77
Author
License
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Das OpenMapTile-Projekt bietet zahlreiche Möglichkeiten für den Umgang mit Vektor- und Rasterdaten. Speziell für den Umgang eines Kartendienstes aus OpenStreetMap-Daten werden verschiedene Lösungen bereitgestellt. Dieser Vortrag bietet einen Überblick über den Einsatz und Prozessierung bis zur Einbindung von Vektortiles in einer Webkarte.
CONSULTANT <Datenbank>DemosceneData conversionServer (computing)Client (computing)Vector graphicsService (economics)DatabaseDownloadPHPTerminal equipmentCache (computing)Vector graphicsVECTOR <Programm>Service (economics)PHPServer (computing)VolumenvisualisierungRaw image formatOpen sourceWebsiteClient (computing)Zoom lensDirection (geometry)Continuous trackGeomaticsDatabaseSphereComputer scienceWEBRandLecture/Conference
PHPVector graphicsServer (computing)PHPZoom lensComputer animation
PHPCache (computing)Bulletin board systemMetadataVector graphics
InternetdienstUniform resource locatorVector graphicsWeb pageVector graphicsServer (computing)KanteFile viewerComputer animation
Server (computing)Instanz <Informatik>Uniform resource locatorZoom lensVector graphicsCache (computing)
9 (number)Uniform resource locatorWEBInstanz <Informatik>IP addressPlug-in (computing)Level (video gaming)SphereClient (computing)File viewerVector graphicsWeb browserCache (computing)
Uniform resource locatorMIDIServer (computing)Client (computing)Open sourceError messageVersion <Informatik>XMLProgram flowchartComputer animation
SphereComputer animation
Server (computing)Client (computing)Open sourceWEBComputer animation
TOUR <Programm>Lösung <Mathematik>Cross-site scriptingMobile appLevel (video gaming)WEBLecture/Conference
DDE
Transcript: German(auto-generated)
Herzlich willkommen, Freunde der Open-Street-Map-Community. Auch der zweite Vortrag in diesem Track geht über Open-Street-Map. Ihn haben wir eingesammelt 2014 bei der Foskis in Berlin.
Da ist er bei uns kleben geblieben und seit 2015 vortragsmäßig unterwegs. Damals war er noch Student, inzwischen ist er professionell als Geoinformatiker unterwegs. Das ist Robert Klemm und er erzählt uns, wie wir jetzt unsere Daten,
die wir ja meist nur als Rastledaten verarbeiten, jetzt auch mit Vector-Teils nutzen können. Ich wünsche viel Spaß beim Vortrag. Danke. Hört man mich? Ja, ne? Ist das Mikro an? Ja, ne?
Ich spreche mal ein bisschen lauter. Herzlich willkommen. Ich wurde ja schon gut anmoneriert, da brauche ich ja nicht mehr viel zu erzählen. Ich bin Robert Klemm, komme aus Berlin, habe den weiten Weg hierher gefunden.
Ich habe an der Beuth studiert, Geoinformatik und Kartografie und eigentlich schon ein bisschen länger in der OSM-Community unterwegs. Seit ein paar Jahren sitze ich auch bei der Werku in Berlin und bin unter anderem für den OSM-Demo-Style zuständig. Ich entwickle den ein bisschen weiter und halte den auf dem laufenden Stand.
Genau, ich möchte kurz unter anderem zu Vector-Teils was erzählen. Es kam ja in den letzten Jahren, auch heute und die letzten Tage, waren ja auch Vorträge Richtung Vector-Teils hier auf der Vosges vertreten. Ich hatte die letzten Jahre das ein bisschen beobachtet,
auch weil ich ja aus dem Bereich Rastledaten komme und dachte, ich hätte mal Bock auf die Geschichte und habe mir die Situation angeguckt. Ich habe gesehen, es gibt viele Vector-Teils-Server. Es wurden ja auch hier auf der Vosges ein paar schon vorgestellt. Ich habe jetzt nur ein paar namhafte aufgezählt, es gibt noch viel mehr.
Ich dachte, es gibt sehr viele Vector-Teils-Server. Ich probiere mal einen aus, der auch auf der Vosges 2016 vorgestellt wurde. Ich hatte eben auch die Motivation, das mal zu testen.
Auch der Hintergrundgedanke, ich möchte schnell laden, ich will auch Speicherplatz sparen und wollte das einfach mal ausprobieren und nutzen. So ist auch der Vortrag gestaltet, dass ich versucht habe, das aufzusetzen. Ich habe verschiedene Clients ausprobiert, das zum Laufen gebracht
und habe das unter anderem auch in Kugels zum Laufen gebracht, wie man Vector-Teils auch da rendern kann bzw. angucken kann. Genau, noch mal kurz, basicmäßig, die Vector-Kacheln, die wurden quasi schon durch den Mapbox-Standard aufgesetzt
und haben eigentlich die Initiation, dass die Vektordaten klar getrennt werden von einem Rendern der Rastadaten und die Vektordaten an sich her relativ klein sind von der Datenmenge. Und man hier quasi nur noch die reinen Rohdaten hat mit den Metadaten, die an den Client vom Server auch versendet werden über XYZ-Schema
und der Client die einzelnen Kacheln entgegen, so wie auch bei Rastateils. Aber hier übernimmt der Client das Rendern an sich und baut die ganzen Kacheln zusammen und rendert quasi die Vektordaten zu meinem Style um und das passiert alles im Client.
Der Server liefert nur noch aus, in dem Fall gibt es auch verschiedene Lösungen, wo auch serverseitig die Vektordaten gecached werden. In dem Fall ganz klassisch, man hat jetzt bei den Vektordaten, hat sich die Struktur auch ein bisschen geändert, man hat die Vektordaten an sich als Stamm, also als Säule,
man hat die Style-Definition, die über Mapbox Style durch die Definition generiert werden, die müssen generiert werden und benötigt man und an anderen braucht man einen Client, der quasi diese Vektor-Teils interpretieren kann und zusammensetzen und rendern kann.
In dem Fall namhaft habe ich schon mehrmals gesagt Mapbox GL, in dem Fall, OpenLayers kann das auch und das sind sozusagen die drei Säulen, auf denen man sich bei dem Thema Vektordaten ein bisschen bewegt und das war als Grundlage.
Wie gesagt, ich habe schon gesagt, ich komme aus dem Bereich Rastadaten und momentan benutzen wir auch bei der Werkgruppe so die Architektur bzw. den Aufbau, mal ganz abstrakt dargestellt, dass man die OSM-Brotdaten runterlädt, man hat einen Importer, wir benutzen hauptsächlich Impossen, es gibt natürlich auch OSM-TOPG-SQA und Pi-OSNUM und man importiert quasi die OSM-Daten
aus dem Rohdatenfile in eine Datenbank und hat dann zum Schluss einen Renderer, der die Rastadaten quasi cached oder aufbereitet auf den Server hinterlegt, die über einen Dienst dann abgefragt werden kann. Bei den Vektordaten sieht das ein bisschen anders aus, ich habe das hier mal abstrakt dargestellt,
hier am Augenmerk steht im Posten auch nochmal zur Diskussion, weil ich mich für einen entschieden habe, das habe ich natürlich vergessen zu sagen, ich habe mich für Open Vector Tiles entschieden und habe mir die ganze Architektur angeguckt,
Open Vector Tiles natürlich benutzt auch Impossen, fand ich natürlich sehr schön, weil man bestimmte Architektur-Sachen übernehmen kann aus dem alten Rastasystem
und braucht das nur ein bisschen erweitern. In dem Fall benutzt Open Vector Tiles ein lokales Caching, wo dann über ein Embed Tiles Cache die Vektordaten gecached werden und somit auch offline fähig sind, die Vektordaten.
Genau, ich habe mir das mal alles angeguckt, grob zu Open Vector Tiles. Das Projekt an sich kann man sich auf GitHub angucken, es gibt eine sehr ausführliche Dokumentation, ich wollte jetzt nicht ganz klar genau in Open Vector Tiles in das Projekt reingehen, weil die Dokumentation auf der Website an sich her von den Leuten ist sehr ausführlich,
man findet sich auch sehr gut zurecht, ich habe jetzt einfach nur schematisch ein paar Sachen rausgepickt und mir ist aufgefallen, das Open Vector Tiles Projekt an sich her bietet einen PHP Tiles Server an, den man nutzen kann, der ist Open Source und den Tiles Server GL.
Und habe jetzt hier nun mal die Schlagwörter untergeschrieben, bei PHP Tiles Server braucht man an sich ja nur PHP als System und kann den PHP Tiles Server einfach auf dem Server hinterlegen, da ist natürlich schön, wenn man schon PHP irgendwo zu laufen hat auf dem Server, man muss nicht die ganze Infrastruktur umbauen.
Bei Tiles Server GL sieht das ein bisschen anders aus, da braucht man Docker dafür, muss man natürlich dann erstmal auf dem Server installieren, das ist jetzt auch kein Hexenwerk an sich, aber man muss natürlich immer das in Betracht ziehen. Und ich habe jetzt mal kurz die Schlagwörter aufgeschrieben, was man braucht, bei der Tiles Server GL Geschichte hat man das Glück, dass man einen Shellscript hat,
man wird quasi durch das Shellscript durchgeleitet und kann für bestimmte Regionen gleichzeitig die OSM-Daten runterladen, man hat quasi so nice to have, also man klickt einfach einmal den Befehl durch und zum Schluss kommt ein MB Tiles raus, MB Cache, wo die ganze Region bis Zoom Level 14 gesiedelt werden,
also man muss nichts machen, man muss eigentlich kurz für 10 Minuten mal Kaffee trinken gehen und man hat quasi seine Vector-Daten vorgecached. Diesen Cache an sich her, den kann man natürlich über den Tiles Server anzeigen lassen, aber dafür gibt es auch PHP Tiles Server und kann den einfach dahinter legen,
an einer bestimmten Stelle und PHP Tiles Server greift darauf zu und rendert das. Wie sieht das ungefähr aus? Ich habe jetzt einfach mal diesen PHP Tiles Server gestartet, wenn man den über localhost 80 in dem Fall eben aufruft, dann wird automatisch, weil PHP Tiles Server auf dem Verzeichnis guckt,
werden alle MB Tiles ausgelesen und wird jetzt hier als Übersicht dargestellt. Das ist jetzt nur schematisch, ich habe hier zwei MB Tiles, das sind zwei unterschiedliche Zoom-Stufen, einmal im Zoom Level 14 und einmal 22. Weil ich testen wollte, wie die Generalisierung in den unteren Zoom-Stufen ist
und ja, fand das sehr interessant, dass das an einem Anhieb alles funktioniert und man einen schnellen Tiles Server hat. Man klickt dann auf einen MB Tiles drauf, dann öffnet quasi so ein Inspector-Modus und man sieht jetzt hier die ganzen Vektordaten mit ihren Metadaten aus dem MB Cache.
Und die werden jetzt hier schon dargestellt als Inspector-Modus, man kann es ein bisschen rüber havern und man sieht eben die ganzen Metadaten rechts unten im Feld. Zusätzlich rechts als Informationshilfe hat man gleich für die mailbox.ga und OpenLayers 3 ein Preview-Viewer drin und wenn man unten auf Preview oder Fullscreen klickt oder auf Source,
dann wird auch gleichzeitig die TileJSON-Adresse angezeigt, die man in den Kleinen nutzen kann. Wie sieht das jetzt bei Tiles Server GL aus? Wenn ich den jetzt über Docker starte, dann kann ich über Port 8080 die Webseite aufrufen,
also wie gesagt ein relativ einfaches Paket und er startet automatisch mit zwei vordefinierten Styles. Das ist einmal diesen OS in Bright und den Plotantech Basic, das ist von der Firma, die das betreut,
ein Vektor-Style und man kann den auch gleichzeitig über den Viewer ansprechen, kann sich angucken, man hat hier die Möglichkeit auch über Tiles Server GL auch Rasterdaten gleichzeitig zu generieren. Also dieser Tiles Server kann Vektor und Raster gleichzeitig. Wie sieht das ungefähr aus?
Ich habe jetzt, damit es schnell geht, Berlin genommen. Hier zum Beispiel ein Screenshot, man sieht jetzt nicht so krass den Unterschied, aber wenn man genauer hinguckt, sieht man, dass das Rasterdaten sind, weil wir hier ganz klare Kantenlinien haben von den einzelnen Tiles. Wenn man jetzt hier mal mit Berlin in den, hier ist der Mittelpunkt und wenn man jetzt hier mal guckt,
hier fehlt ein bisschen was an der Schrift und man sieht jetzt hier, dass genau hier quasi eine Kante durchgeht und somit erkennt man automatisch, dass das Rasterdaten sind. Und das gleiche habe ich jetzt für die Vektordaten ausprobiert
und man sieht jetzt hier, dass man hier keine klaren Kanten hat, man hat auch das Schriftbild sieht ein bisschen anders aus, es wird viel mehr gerendert und dargestellt und das sind so die kleinen Unterschiede, aber an sich her sind die Styles identisch und man kann das sofort nutzen, was mich natürlich auch sehr überrascht hat und auch gefreut hat, weil es ja fertig ist.
OpenMapTiles bietet unter anderem auch noch einen anderen Docker-Container, also es ist ein Verbund, eine Familie muss man dazu sagen, mit verschiedenen Tools, unter anderem den MapPutnik, den kann man sich auch starten lassen und der startet dann automatisch über einen Docker und über eine URL,
einfach Logos 88 eintippen und dann findet man den MapPutnik und in dem Fall wird er automatisch mit diesem Standard-Style definiert, das sind jetzt nicht meine Vektordaten, weil die von der offiziellen Quelle kommen. Ich wollte einfach mal testen, ja, ich möchte gerne meine Vektordaten oder meinen Style an sich her bearbeiten,
weil hier im MapPutnik wird einfach, wie bei TimeMill, wird einfach dieser Style generiert und erzeugt. Da habe ich jetzt einfach in den Sources geguckt, aha, was es hier hinterlegt und man hat oben die Teil-JSON-URL und die habe ich einfach ausgetauscht mit meiner lokalen Instanz und wollte dann mal gucken, wie es aussieht, man sieht, okay, es fehlen ein paar Kacheln,
ist ja auch berechtigt, weil aus dem Cache werden natürlich nur die Berlin-Daten ausgelesen und in bestimmten Zoom-Stufen fehlen eben einfach die Kacheln dazu. Wenn ich jetzt natürlich weiter raussuche und mir die Welt angucke, dann sieht man auch die ganze Welt oder halb Europa, weil das ja diese Quartals sind.
Aber in dem Fall habe ich eben, mein MB-Cache ist 23 MB groß und habe komplett meine ganzen Vektordaten von Berlin drin und kann bis runtergehen in Zoom Level 14 und sehe alles. Dann dachte ich mir, cool, ich habe einen Client, ich habe einen Editor, es funktioniert.
Wie mache ich das jetzt? Ich habe gesehen, in letzter Zeit gibt es auch in einem Kugels-Projekt auch ein Kugels-Plugin, das ist dieses Vektor-Teils-Plugin und dachte, hm, wenn es da funktioniert überall, dann probiere ich es doch mal in Kugels aus. Hab dann einfach mir das Plugin geschnappt, habe es installiert in Kugels 3.12
und habe in dem Fall einfach hier die Adresse geändert, also auf meine lokale Instanz. Man muss dazusagen, man muss sich dann vorfeld über den Teil ServerGL, zeigt ja das mit an oder man geht in den Webclient rein und drückt F12, dann sieht man auch die URL für diese ganzen Schriften und Icons,
die URL, die kann man sich dann rausziehen. Die muss man dann hier hinterlegen. In dem Fall ist klassisch hier ein Viewer hinterlegt, der auf diesen Mapbox GL Schema zugreift und holt sich quasi die kompletten Vektordaten. Man hat im Hintergrund, man sieht es hier auch schon, die ganzen Layer, die hinterlegt sind und die Zoom-Stufen.
Die liest er sich aus den Metadaten, aus den MB-Teils aus, aus dem Cache und das wird in Kugels einfach mal ausgelesen und er lädt einmal komplett durch. Das kann natürlich auf die Zoom-Größe, auf den Extend in Kugels eine Zeit dauern, bis alle Karren geladen werden. Die werden aber auch nur einmal geladen und dann bleibt das im Cache, so wie der Browser das natürlich lokal auch macht.
Dann, wenn er fertig geladen ist, dann lädt Kugels das dann ein. Man sieht hier schon einen kleinen Unterschied. Vorher habe ich Schriften und Icons gesehen. Das ist mir gestern auch aufgefallen, dass das Plugin noch nicht ganz so sauber läuft. Vielleicht habe ich auch einen Fehler gemacht, aber die URLs stimmen alle,
weil ich das im Parallel im OpenLayers Client und im Mapbox GL Client ausprobiert habe. Hier fehlen eben die Schriften, die sind hier klassisch mit einem Fragezeichen versehen. Das ist natürlich schön. Wo sind wir hier? Das könnte man als Quiz nehmen, aber was man hier sehr schön sieht, das Kugels Plugin baut automatisch einen Layer-Baum auf und baut,
wie man das im Apothek auch sieht, die ganzen Layer auf und rendert natürlich auch dementsprechend den Style und die Vektordaten. Das Gleiche habe ich jetzt natürlich mit einem anderen Style ausprobiert. Der sieht dann so aus. Man sieht hier auch ganz gut, dass auch die Schriften fehlen.
Vielleicht muss man da nochmal in eine Python-Version gucken, was da für Fehlermeldungen kommen. Dann war es das eigentlich. Ich habe jetzt beides mal ausprobiert. Ich bin total zufrieden. Es soll auch zukünftig in Kugels diese Vector-Teils-Geschichte weiter vorangetrieben werden,
so wie ich das jetzt gelesen habe. Ich hoffe, dass auch durch die Open-Source-Community, auch in der Kugels-Branche, dass auch da mehr Entwicklung eingebaut wird. Ja, kurze Zusammenfassung. Das ist ein Open-Source-Projekt des Open-Map-Teils. Es hat ein eigenes Schema.
Man kann eben MB-Teils nutzen. Man muss nicht komplett die ganze Infrastruktur aufbauen. Man generiert einmal die MB-Teils, kann die nutzen. Das Open-Map-Teils unterstützt quasi Self-hosting. Also man wird quasi durch Dokumentation angeleitet, wie man selbst sowas hostet. Man hat einen Editor, der dabei ist. Man hat verschiedene Teilserver, die man sofort nutzen kann.
Und ich kann das sofort auch woanders nutzen, meinem Vector-Datensatz. Einziger Knackpunkt ist dieser Vector-Teil-Reader in Kugels. Da, wie gesagt, hatte ich kurz erläutert mit der Schrift. Das wird noch nicht so richtig dargestellt. Das sind so meine Erfahrungen, die ich da gesammelt habe. Ich bin total zufrieden. Vielleicht werde ich in Zukunft auch mehr auf Vector-Daten-Styling umschalten
und nicht mehr Raster machen. Genau. Nur kurz die Links dazu. Und gibt es denn Fragen? Ja, spannender Vortrag, Robert. Und jetzt ist das Plenum wieder gefragt.
Gibt es irgendwelche Wortmeldungen? Hier vorne, danke. Du hast ja gesagt, du hast mit Rasterdaten angefangen. Genau. Die Stil-Sprachen sind ja völlig unterschiedlich für Raster- und Vector-Teils. Richtig. Kato CSS ist die Raster-Datenebene.
Klar, man muss sich erst mal damit zurechtfinden. Und bei den Vector-Daten sind wir in JSON-Format komplett unterwegs. Das heißt, ich muss nochmals bei Null anfangen? In dem Fall bei Null. Aber wenn du bestehende Projekte hast, kannst du die in Mapbox Studio transformieren. Bei Time-Projekten, bei den ganz alten,
da muss man quasi mehrere Umwege gehen. Also bei Mapbox Studio das in TM2 umformatieren, das ganze Projekt. Und dann wiederum gibt es eine Tour von Open-Map-Teils, das TM2, das ist Time-Mill-2-Format, in Vector-Teils automatisch umformatiert.
Weitere Wortmeldungen? Da hinten, einmal bitte. Danke. Wie werden dann da Übergänge doch wieder zu Raster-Formaten? Also wenn ich meine Lösungen zu Vector-Teils aufsetze und sage, ich brauche jetzt aber einen Export heraus, um den in eine Textverordnung einzusetzen, die halt damit nichts anfangen kann, gibt es da Übergänge, dass ich sage, renne mir das dann in 600 dpi, PMG oder wie auch immer raus?
Ja, also der Teilserver unterstützt HQ, also die Retina-Geschichten, und da hätte man die Möglichkeit auf bestimmte, also das sind ja, also diese Teilgröße ist ja auf 256 beschränkt, und 512 wäre die nächste Stufe, das wäre die Retina-Geschichte, und darüber hätte man die Möglichkeit,
eben auf viel Druckformat oder größere Auflösungsformate eben das anzeigen zu lassen. Weitere Fragen aus dem Plenum? Nein, alles geklärt. Dann nochmal vielen Dank Robert für deinen spannenden Vortrag.
Danke.