210 likes | 349 Views
Datenstrukturen und Algorithmen in Open Street Map. Modul: Algorithmische Geometire Von: Elisabeth Lehmann 12INB-P. Inhalte. Was ist OpenStreetMap ? Das Konzept Datenstrukturen in OSM Node Way Relation Tags OSM-Format. 4 ) Algorithmen Allgemeine Vorgehensweise
E N D
Datenstrukturen und Algorithmen in Open Street Map Modul: Algorithmische Geometire Von: Elisabeth Lehmann 12INB-P
Inhalte • Was ist OpenStreetMap? • Das Konzept • Datenstrukturen in OSM • Node • Way • Relation • Tags • OSM-Format 4)Algorithmen • Allgemeine Vorgehensweise • Abstraktionsverfahren • Dijkstra-Algorithmus/beidseitiger Dijkstra • HISPA-Algorithmus • A*-Algorithmus • ContractionHierarchies 5) Quellen
1) Was ist OpenStreetMap? • ein 2004 gegründetes Projekt einer freien Weltkarte • Sammlung von verschiedenen Daten, welche selbst erhoben werden -> darf lizenzkostenfrei eigesetzt und beliebig weiterverarbeitet werden
2) Das Konzept • das Routing (Wegwahlfunktion) steht im Vordergrund • optisches darstellen von Straßenattributen • Aufgabengebiete für die Funktionalität • geografische Rohdaten • Anwendungsprogrammierung • Rendering • Beispiel: OSMarelmon
3) Datenstrukturen in OSM a) Node • kleinstes OSM-Objekt • bilden Gerüst der OSM-Karte • Bestimmen zum Beispiel Verläufe von Straßen, Umrisse von Grundstücken, Ecken von Häusern • repräsentieren GPS-Punkte • besitzen ID, Breitengrad und Längengrad, Versionsnummer, Zeitstempel • Changeset-ID enthält letztes Bearbeitungsdatum des Knoten (mit dazugehöriger User-ID)
b) Way • ein Way besteht aus mindestens zwei Knoten • verknüpft diese miteinander • stellen jegliche Arten von Verbindungen zwischen Punkten her (in Array gespeichert) • zum Beispiel Uferverläufe oder Straßen • mit gleichem Knoten als Start-und Endpunkt entstehen Flächen • gleiche Metatags wie Nodes (ohne Breiten-und Längengrad) • einzelnen Knoten als Referenztags eingebunden
<wayid="9714974" version="16" timestamp="2012-06-28T23:41:09Z" changeset ="122312034" uid="1999074" user="perihel"> <ndref="304335953"/> <ndref="1563547869"/ > <ndref="1396523373"/ > <ndref="13878099"/> </way>
c) Relation • größter und umfassendster Datentyp in OSM • erfassen komplexer und abstrakter Formen • Zum Beispiel Abbiegevorschriften Buslinien • besitzt Referenzen (Member genannt)auf Konten, Wege und andere Relationen
<relationid="1239081" version="2" timestamp="2012-06-28T20:41:04Z" changeset ="122312034" uid="1999074" user="perihel"> <member type="node" ref="867397262„ role="stop"/> <member type="node" ref="213127" role="platform"/> <member type="way" ref="19012912" role=""/> <member type="relation" ref="09278124" role=""/> </relation>
d) Tags • Datenstrukturen bieten Metatags und vom Benutzer frei handhabbare Tags • vor dem Endtag wird Benutzer die Möglichkeit geboten, selbst definierte Tags einzufügen • bestehen aus key-value-Paaren • (wobei key angibt, was Relation beschreibt) <tag k="maxspeed:winter" v="60">
e) OSM-Format • Speicherung sämtlicher Daten in OSM XML • Minimal-und Maximalfunktionen können verwendet werden • Reihenfolge der Objekte: • Knoten • Wege • Relationen, deren Referenzen und Tags • einfach lesbar, systemunabhängig, nur Parser muss vorhanden sein • durch Größe der Dateien Kompression nötig • zum Beispiel planet.osmmit 400GB komprimiert, komprimeirt nur 29GB
4) Algorithmen • viele verschiedene Algorithmen, da unterschiedliche Funktionen angefragt werden • Hauptteil bildet die Routen-Planung • jedoch auch im Bereich der Geschwindigkeitsmessung oder von Höhenunterschieden
a) allgemeines Vorgehen • sammeln der Attribute zu jedem OSM-Objekt • Speichern der Koordinaten des Knoten • Knoten beim Einlesen des Weges gespeichert • Bestimmen des geeignet Weges • ungeeignete Wege verwerfen • zulässige Richtung und Geschwindigkeit bestimmen • Weg bestimmen
b) Abstraktionsverfahren • graphen-ähnliche Darstellung bestehend aus Segment-Node(analog Knoten), Segment (gerichtete Verbindungen), Restriction(nicht nutzbare Verbindungen) • Segment-Nodes und Segments können jedoch nicht einfach als Knoten bzw. Kanten des Graphen verwendet werden -> Restrictions müssen berücksichtigt werden
c) Dijkstra-Algorithmus (1959) • Bestimmung des kürzesten Weges unter Berücksichtigung des Kantengewichts (zum Beispiel der benötigten Zeit) • Problem bei der Routenplanung: die kürzeste Strecke ist nicht unbedingt die schnellste ->mehrere Attribute pro Kante eingefügt (Entfernung [km], sondern auch Zeit [min]) • О(E + V *log(V)) • V=Knotenmenge, E=Kantenmenge
d) HISPA-Heuristik • Hierarchicalshortestpath • sucht kürzesten Weg von zwei Endknoten zu Knoten der obersten Hierarchieebene im Umkreis mit gegebenen Radius • Zum Beispiel von Stadt zu Autobahnkreuz
e) A*-Algorithmus Finde den kürzesten von Arad nach Buadpest
f) ContractionHierarchies • Routing-Algorithmus derzeitige Grundlage für mobile Navigation • bei westeuropäischen Straßennetz etwa 20.000mal schneller als Dijkstra • Suchanfragen in unter 1ms beantwortet • wenn nur Distanz und nicht Route abgefragt wird, verbraucht sogar Datenstruktur weniger Speicherplatz
Quellen • http://www.fim.uni-passau.de/fileadmin/files/lehrstuhl/sauer/geyer/BA_SebastianBrunner_-201308.pdf • ftp://ftp.informatik.uni-stuttgart.de/pub/library/medoc.ustuttgart_fi/DIP-3232/DIP-3232.pdf • http://tobias-knerr.de/bachelorarbeit/Bachelorarbeit.pdf • http://cvpr.uni-muenster.de/teaching/ws05/kiWS05/script/KI-Kap04-2.pdf • http://www.openstreetmap.de/faq.html#was_ist_osm