Verschiedene Renderer und Technologien für die Darstellung...

Post on 18-Jul-2020

0 views 0 download

Transcript of Verschiedene Renderer und Technologien für die Darstellung...

Verschiedene Renderer und Technologien für die Darstellung von Geodaten

Renderer

● Rendern = (allg.) Darstellung oder Berechnung von grafischen Inhalten

● Für OSM existieren verschiedene Renderer, um Geodaten zu visualisieren:– OSMarender

– Mapnik

– Geotools (u.a. benutzt von geoserver)

– Kosmos

● Renderer lassen sich i. A. nicht an den produzierten Karten unterscheiden– ... in der Regel aber schon

(Wdh.) Osmarender

(Wdh.) OSMarender

● OSMarender ist ein Satz an XSLT-Regen für die Erzeugung von SVG-Vektorkarten

● SVG-Dateien können Beispielsweise im Webbrowser oder (besser) mit Inkscape betrachtet werden

● Wie die Daten kartographisch dargestellt werden, läßt sich selbst bestimmen

Rendern mit Osmarender

.svg

.xslZeichen-Regeln(Rules)

.osm

.png

XSLT-Prozessor

SVG-Renderer

Osmarender

OSMarender

● Vorteile:– Plattformunabhängig

– Setzt auf offene Standards (XML, XSLT)

– Erzeugt Vektordaten

● Nachteile:– Osmarender ist komplex und rechenaufwändig! ->

Nur für kleine ausschnitte geeignet● Lösung: Tiles@Home

Kosmos

Kosmos

● OSM-Renderer für OSM-Benutzer● Leichtgewichtig● Interaktive Benutzung● Kein DB-Support● Nur Windows● Main-Feature:

– Styles sind Wikiseiten, die automatische geparsed werden (http://wiki.openstreetmap.org/wiki/Kosmos_General_Purpose_Rules)

– "democratize" rendering of OSM

Mapnik

Mapnik

● Unabhängig von OSM entwickelt -> Verwendung anderer Datenformate

● Erzeugt ausschließlich Bitmaps● Für die Darstellung am Bildschirm konzipiert

(Hohe Auflösungen werden pixelig)● In C++ implementiert, daher schnell(er als

Osmarender)

Rendern mit Mapnik

.osm

.png

osm2pgsql

Mapnik

PostGIS

osm.xml world_boundaries

(Wdh.) PostGIS einrichten

Kommandozeile:

createdb osm

createlang plpgsql -d osm

psql osm -f lwpostgis.sql

psql osm -f spatial_ref_sys.sql

Sprachunterstützung aktivieren

OSM-Daten direkt in DB importieren

● Mapnik „versteht“ OSM-XML nicht direkt● Daten müssen in PostGIS-DB liegen● Das Tool osm2pgsql übernimmt den Import von

OSM-XML nach PostGIS● Import:

osm2pgsql -d osm daten.osm

● Datenbank muss (z.Z.) lokal installiert sein

Worldboundaries

● Problem: Küstenlinien und Ländergrenzen sind nicht in der OSM-DB

● Mapnik benötigt diese Informationen jedoch für kleine Zoomstufen: – http://artem.dev.openstreetmap.org/files/world_boundaries.tar.bz2

– Die Datei enthält Shapefiles.

Mapnik (für OSM) downloaden

Kommandozeile:

svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik

Subversion-Repository

Karte rendern mit Mapnik

● Mapnik wird zum Großteil über Umgebungsvariablen gesteuert

Kommandozeile:

source ./set-mapnik-env

./customize-mapnik-map >$MAPNIK_MAP_FILE

./generate_tiles.py

./generate_image.pyosm.xml

Muß angepasst werden (db, boundaries,

Muß ebenf. Angepasst werden

(Bbox, Zoom)

Mapnik-Tile-Server

● Mapnik stellt neben einem Renderer auch einen Tile-Server

● Standard-Ansicht von OSM basiert auf einen Mapnik-Tile-Server

● Tiles sind „Kacheln“, die zu Karten zusammengefügt werden

● Tiles werden in einem Cache gespeichert, damit nicht für jeden Request eine neue Karte gerendert werden muss

● Mapnik-Tiles: http://tile.openstreetmap.org/z/x/y– z = Zoom-Level; x,y = Tile-Koordinate

Aktualität

● Wenn sich die Geodaten ändern, müssen ggf. Tiles neu brechnet werden

● Ausgelieferte Tiles werden neu berechnet, wenn sie zum Zeitpunkt der Auslieferung älter als 3 Tage sind

● Wurden Tiles länger als 28 Tage nicht ausgeliefert, wird zunächst ein leeres Tile zurück gegeben („more OSM comming soon“)

● Problem: Aktualität der Karten nicht sonderlich hoch

Status-Abfrage

● Mapnik-Tile-Status-Abfrage:– http://tile.openstreetmap.org/z/x/y.png/status

● Z = Zoom-Level; x,y = Tile-Koordinate

● Anforderung von Neuberechnung:– http://tile.openstreetmap.org/z/x/y.png/dirty

Tiles@Home

● OSMarender ist langsam● Verteiltes Programm um Karten mittels

OSMarender zu erstellen● Verteilte Architektur:

– 1 Server, der Requests zum Rendern von Tiles verteilt

– X Clients, die ihre Rechenkapazität zur Verfügung stellen, um die Tiles tatsächlich zu rendern und dem Server zur Verfügung zu stellen

How it works

● Wenn sich Daten in der OSM-DB ändern, wird ein Request zum Re-Rendern des Tiles in eine Warteschlange des T@H-Servicers eingereit

● Clients arbeiten die Requests des Servers ab und liefern ein Tile-Set (versch. Zoom-Stufen) zurück, aus denen die Slippy Map erstellt wird

● Üblicherweise dauert es 2-4 Stunden bis änderungen in der DB sichtbar sind

Tile-Sets

● Ein Render-Request wird immer für ein Tile in Zoomstufe 12 formuliert

● Ein Client liefert ein Tile-Set zurück● Ein Teil-Set besteht immer aus den Tiles der

Zoomstufen 12-17, also max. 1365 PNG-Dateien

● (1 Tile auf ZS 12, 4 Teils auf ZS 13, 16 Teils auf ZS 14, ... )

ZoomstufenKacheln Speicher

0 1 1 40075 km1 4 5 20038 km2 16 21 10019 km3 64 85 5009 km4 256 341 2505 km5 1024 1365 1252 km6 4096 5641 626 km7 16384 21845 313 km8 65536 87381 157 km9 262144 349525 78 km10 1 Mio. 1 Mio. 39 km11 4 Mio. 6 Mio. 20 km12 17 Mio. 22 Mio. 10 km13 67 Mio. 89 Mio. 5 km14 268 Mio. 358 Mio. 2 km15 1 Mrd. 1 Mrd. 1 km16 4 Mrd. 6 Mrd. 611 m17 17 Mrd. 23 Mrd. 305 m18 69 Mrd. 92 Mrd. 152 m

Zoomstufe Kacheln kumul. Speicher kumul. Kachelbreite5 kb 5 kb

20 kb 25 kb80 kb 105 kb

320 kb 425 kb1 mb 2 mb5 mb 7 mb

20 mb 27 mb82 mb 109 mb

328 mb 437 mb1 gb 2 gb5 gb 7 gb

21 gb 28 gb84 gb 112 gb

336 gb 447 gb1 tb 2 tb5 tb 7 tb

12 tb 29 tb86 tb 115 tb

344 tb 458 tb

Zoom-Level

● (Ein Render-Requests an tah-Clients ist immer Zoom-Level 12)

● Zoom-Level 12 - 17 werden implizit immer mitgerendert und als Tile-Set zum Server gesendet

● Zoom-Level 8 – 11 werden erstellt, in dem reduzierte OSM-Daten (OsmXAPI) gerendert werden

● Zoomlevel 0 - 7 werden vom Server durch Zusammenfassen aus den Tiles der vorherigen Zoomlevel generiert

tah-API

● Tiles abfragen:– http://tah.openstreetmap.org/Tiles/tile/z/x/y

● z = Zoomlevel; x,y = Koordinaten der Kachel

● Request senden:– http://tah.openstreetmap.org/Request/create/?x=1&y=2&priority=2

● X,Y sind Tile-Bezeichner (Koordinate) mit Zoomlevel 12, Priorität ist 2 ( Höchste Priorität 1, Neidrigste 3)

Manuelles Rendern

● Fehler können es notwendig machen, Re-Rendering manuell anzustoßen:– http://informationfreeway.org

● r = Re-Rendern● i = Informationen

● Slippy-Map-Plugin (JOSM)

Anwendungen auf OSM

OpenCyclemap

Cyclemap-Key

OpenCycleMap

● http://www.opencyclemap.org/● Internationale Karte für Fahrradfahrer,

basierend auf OSM-Daten● National Cycle Network cycle routes, other

regional and local routes,other cycling specific features, such as:– Dedicated Cycle tracks and lanes

– Bicycle parking

– Contours and Hill Colouring

– Bike shops

OpenCycleMap

● OpenCycleMap nutzt Metainformationen von Geodaten für Fahrradfahrer, um angepasste Karten zu erstellen

● Tagging-Schema für Fahrrad-Relevante Geodaten: http://wiki.openstreetmap.org/wiki/Cyclemap

● => Eigene Render-Rules und sorgfältiges Tagging der Geodaten erlauben Erstellung von Karten gemäß individueller Anforderungen

Openrouteservice

OpenRouteService

● http://www.openrouteservice.org● Entwickelt von der Universität Bonn :-)● Routinganwendung auf Basis von OSM-

Geodaten● Fahrrad, Fußgänger und PKW-Routing● Zusätzlich:

– POI-Suche (Wo ist die nächste Bank?)

– Erreichbarkeitsanalyse

OpenRouteService

● Vorraussetzung für OpenRouteService:– Korrektes und Vollständiges Tagging (Fahrradweg?)

– Relationen (Einbahnstraßen, Abbiegevorschriften)

– Korrekte Topologie (Überlappung statt Kreuzung?)

Openstreetbugs

OpenStreetBugs

● http://openstreetbugs.appspot.com/● Neue Anwendung, um Fehler in OSM zu

markieren (mit der Hoffnung, dass sie jemand fixed )