OpenStreetMap Daten in Oracle Spatial - doag.org · OpenStreetMap Daten in Oracle Spatial DOAG, SIG...
Transcript of OpenStreetMap Daten in Oracle Spatial - doag.org · OpenStreetMap Daten in Oracle Spatial DOAG, SIG...
OpenStreetMap Daten in Oracle Spatial
DOAG, SIG Oracle Spatial Potsdam, 15. März 2011
Markus Lindner, CISS TDI
• OpenStreetMap• Modellierung• Verwendung in Oracle
Gliederung
• CISS ist Partner von Navteq und Tele Atlas• Gestiegenes Kunden-Interesse an
OpenStreetMap• Erste konkrete Anfrage:
OpenStreetMap -> GDF• Viele Projekte mit Navteq und Tele Atlas Daten
Warum überhaupt überhaupt OpenStreetMapOpenStreetMap ??
OpenStreetMap
• Open Source Projekt- OpenStreetMap hat das Ziel, freie
geographische Daten über Straßen, Eisenbahnen, Flüsse, Wälder, Häuser und alles andere, was gemeinhin auf Karten zu sehen ist, zu erfassen. Diese Daten stehen allen Benutzern lizenzkostenfrei zur Verfügung, um daraus zum Beispiel Straßen-, Wander- oder Fahrradkarten, Routenplaner oder andere wissenswerte Informationen zu erstellen.
Was ist OpenStreetMap ?
OpenStreetMap
Was ist OpenStreetMap ?
OpenStreetMap
• Verfügbarkeit- Visualisierung (Dienst) - Routing (Dienst) beta!- Export-Datei (XML-Format)
- Vorgefertigte Datenbestände tagesaktuell verfügbar
- Tools für den eigenen Export
OpenStreetMap
Was ist OpenStreetMap ?
• Export Format OSM Dateien (XML)- 3 unterschiedliche Features - Jedes Feature hat Attribute (id,timestamp,
user, bei nodes: lon, lat) - Ways bestehen aus Verweisen auf nodes- Relations bestehen aus member mit
unterschiedlichen Rollen (roles)- Zu jedem Feature können Tags weitere
Informationen enthalten
OpenStreetMap
Was ist OpenStreetMap ?
• Export Format OSM Dateien (XML)- Nodes (Koordinaten)
- Tags (Informationen zur Art des Knoten)
- Ways- Nodes (Verweise auf die Nodes)- Tags (Informationen zur Art der Way)
- Relations- Member (Way, Node, Relation)- Role - Tags (Informationen zur Art der Relation)
OpenStreetMap
Was ist OpenStreetMap ?
<node id="26372994" lat="50.7242657"lon="7.0639045" user="dachefte" uid="133419"visible="true" version="6" changeset="1896824"timestamp="2009-07-21T17:30:41Z"><tag k="highway" v="traffic_signals"/>
</node>
Node
OpenStreetMap
<way id="5942943" user="dahlberg" uid="17848" visible=" true" version="3"changeset="3176699" timestamp="2009-11-21T15:06:23Z" >
<nd ref="38942096"/><nd ref="48912671"/><nd ref="567916837"/><nd ref="48912664"/><nd ref="48912676"/><nd ref="567916829"/><nd ref="48912678"/><nd ref="31497769"/><tag k="highway" v="residential"/><tag k="name" v="Von-Weichs-Straße"/>
</way>
Ways
OpenStreetMap
<relation id="401701" user="EvanE" uid="184969"visible="true" version="1" changeset="3793978"timestamp="2010-02-04T21:57:14Z">
<member type="way" ref="15241577" role="outer"/><member type="way" ref="49530953" role="inner"/><tag k="type" v="multipolygon"/>
</relation>
Relations
OpenStreetMap
<tag k="type" v="multipolygon"/><tag k="highway" v="residential"/><tag k="name" v="Von-Weichs-Straße"/><tag k="footway:right.sloped_curb.end" v="0.03"/>
Tags
OpenStreetMap
• Highway example• Railway• Waterway• Landuse• Amenity• Leisure• Natural• Type• Name• ... (>20.000)
Tags
OpenStreetMap
• OpenStreetMap• Modellierung• Verwendung in Oracle
Gliederung
Warum Modellierung ?
• Import von XML in Oracle Spatial• Verschiedene Philosophien und Techniken
der Darstellung- OSM Renderer vs. MapViewer
• Unterschiedliche Nutzungen der Daten- Netzwerk Datenmodell- Schöne Karte
Was wollen wir erreichen ?
• Befüllen des Oracle Netzwerk Datenmodells
• Datengrundlage für eine schöne Karte• Import aller Informationen• Harmonisierung der Daten
NDM - Was wird benötigt ?
• Straßen (klassifiziert)• Kreuzungen• Knoten – Kanten – Modell• Richtung von Strassen• Partitionen
Karte – was wird benötigt ?
• Verschiedene Ebenen mit Flächen• Verschiedene Ebenen mit Linien• Verschiedene Ebenen mit Punkten
- MapViewer kann innerhalb einer Ebene unterschiedliche Symbole visualisieren
- GIS Systeme sind etwas beschränkter• Übersichtliche Datenstruktur für jede Ebene
- Verkürzt die Ladezeiten• Sammeltabellen für Tags
- Vollständigkeit
Einfacher (naiver) Ansatz
• Pro OSM Feature ���� Oracle Tabelle• Pro Tag ���� Spalte in Tabelle
3 Tabellen mit > 20.000 Spalten ???
Schnittstelle (Konfiguration)
<?xml version="1.0" encoding="UTF-8"?>
<cfg version="1.0">
<StandardTag name="highway"/>
<SubTag name="oneway"/>
<StandardTag name="railway"/>
<StandardTag name="leisure"/>
<StandardTag name="building"/>
<StandardTag name="type"/>
<StandardTag name="amenity"/>
<StandardTag name="boundary"/>
<StandardTag name="landuse"/>
<StandardTag name="waterway"/>
<StandardTag name="name"/>
</cfg>
Datenmodellierung
OSM Objekt
<way id="4339305" user="RoToRa" uid="9781" visible="tru e" version="18"changeset="4196252" timestamp="2010-03-21T20:23:13Z" >
<nd ref="26402294"/>
<nd ref="26474356"/>
<nd ref="588385279"/>
<nd ref="588385280"/>
<tag k="highway" v="tertiary"/>
<tag k="lanes" v="2"/>
<tag k="name" v="Graurheindorfer Straße"/>
<tag k="oneway" v="yes"/>
<tag k="created_by" v="Potlatch 0.10f"/>
</way>
Datenmodellierung
CITRA ObjekteFACDEF = WAY_____001
ATTSEG = WAY_____001
1 ID F(1) :4339305
4 USER C(32) :RoToRa
5 VISIBLE C(5) :true
6 CHANGESET C(32) :4196252
7 TIMESTAMP C(32) :2010-03-21T20:23:13Z
100 highway C(255) :tertiary
101 name C(255) :Graurheindorfer Straße
102 oneway C(255) :yes
77 EDGE_ID F(1) :11
77 EDGE_ID F(1) :12
77 EDGE_ID F(1) :13
PICTURE
LINE = WAY_____001
7.0948316 50.7464279
7.0948848 50.7466028
7.0948989 50.7466487
7.0947607 50.7467545
ENDFAC
FACDEF = WAYTAG__001
ATTSEG = WAYTAG__001
1 WAY_ID F(1) :4339305
2 TAG_NAME C(255) :created_by
3 TAG_VALUE C(255) :Potlatch 0.10f
PICTURE
ENDFAC
FACDEF = WAYTAG__001
ATTSEG = WAYTAG__001
1 WAY_ID F(1) :4339305
2 TAG_NAME C(255) :lanes
3 TAG_VALUE C(255) :2
PICTURE
ENDFAC
Datenmodellierung
• CITRA Schnittstelle• Problem: Ways und Nodes kein echtes Knoten-
Kantenmodell• Lösung: Schnittstelle erzeugt echte Edges für
(highway)-Ways
Schnittstelle
Datenmodellierung
Datenmodellierung
Datenmodellierung
Datenmodellierung
Datenmodellierung
Datenmodellierung
Datenmodellierung
OSM Objekt
<way id="4339305" user="RoToRa" uid="9781" visible="tru e" version="18"changeset="4196252" timestamp="2010-03-21T20:23:13Z" >
<nd ref="26402294"/>
<nd ref="26474356"/>
<nd ref="588385279"/>
<nd ref="588385280"/>
<tag k="highway" v="tertiary"/>
<tag k="lanes" v="2"/>
<tag k="name" v="Graurheindorfer Straße"/>
<tag k="oneway" v="yes"/>
<tag k="created_by" v="Potlatch 0.10f"/>
</way>
Datenmodellierung
CITRA ObjekteFACDEF = WAY_____001
ATTSEG = WAY_____001
1 ID F(1) :4339305
4 USER C(32) :RoToRa
5 VISIBLE C(5) :true
6 CHANGESET C(32) :4196252
7 TIMESTAMP C(32) :2010-03-21T20:23:13Z
100 highway C(255) :tertiary
101 name C(255) :Graurheindorfer Straße
102 oneway C(255) :yes
77 EDGE_ID F(1) :11
77 EDGE_ID F(1) :12
77 EDGE_ID F(1) :13
PICTURE
LINE = WAY_____001
7.0948316 50.7464279
7.0948848 50.7466028
7.0948989 50.7466487
7.0947607 50.7467545
ENDFAC
FACDEF = EDGE____002
ATTSEG = EDGE____002
1 ID F(1) :11
2 WAY_ID F(1) :4339305
3 FROM_NODE F(1) :26402294
4 TO_NODE F(1) :26474356
PICTURE
LINE = EDGE____002
7.0948316 50.7464279
7.0948848 50.7466028
ENDFAC
FACDEF = EDGE____002
ATTSEG = EDGE____002
1 ID F(1) :12
2 WAY_ID F(1) :4339305
3 FROM_NODE F(1) :26474356
4 TO_NODE F(1) :588385279
PICTURE
LINE = EDGE____002
7.0948848 50.7466028
7.0948989 50.7466487
ENDFAC
Datenmodellierung
• CITRA Schnittstelle• Kann OSM Exporte in Größenordnung 3-3,5 GB
(Berlin: 180 MB, England: 3.1 GB)• Variiert in Abhängigkeit Anzahl Nodes• Begrenzt durch Java VM und Hauptspeicher
• CITRA Namen sind momentan fix• Weitere Konfigurationsmöglichkeiten denkbar
Schnittstelle
Datenmodellierung
Die Konvertierung in 3 Schritten
CITRA
Modellierungswerkzeuge
Syntaktische Konvertierungund Klassifikation von Daten
Syntaktische Konvertierungund Konsistenzprüfung
Basierend auf dem CITRA-Format
Die Implementierung
CITRA
Quelle
Test
Analyse
Report Report
Ziel
Report Report
Geometrische Operationen
Modifizierung von Attributen
Aufwertung der Topologie
...
• Alphanumerische Daten
• Geometrie ...... z.B. Bearbeitung von Flächen
• Modifikation von Objekten
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA®- Modellierungswerkzeuge
CITRA Konzept
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
Uferstr. 15a
Uferstr.
15
a
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
NAYY 3x25 1987NAYY 3x25 2003
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Alphanumerische Daten
• Geometrie
• Modifikation von Objekten
• Bearbeitung von Flächen
• Bildung von Relationen
• Bildung von Topologien
• Analyse der CITRA-Datensätze
• Das offene CITRA-Format ermöglicht den Aufbau und d ie Integration individueller Lösungen
• Plausibilitätsprüfung
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Sachdaten- Umbenennung von Feldern- Aufbereitung von Inhalten- Generierung von Defaultwerten- Abbildung auf zulässige Werte- Aufteilen, Zusammenfügen von
Sachdaten - Umlautkonvertierung
• Geometrie- Umwandlung von graphischen Primitiven - Umrechnung von Referenzpunkten - Nachbildung von Zeichenmethoden - Erzeugung von Präsentationsgraphik
Uferstr. 15a
Uferstr.
15
a
Text A9f1..y Text
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Flächenbearbeitung- Überführung verschiedener Flächendatenmodelle - Flächenbildung unter verschiedenen
Voraussetzungen - Zuordnen von Repräsentanten- Zuordnung von Zentroiden zu den zugehörigen Flächen- Umsetzung von verschiedenen Repräsentationen von Inseln und Exklaven
• Herstellen von Beziehungen- Zusammenführen von Geometrie und Sachdaten eines Objekts - Beziehungen zwischen Objekten- Einfangen von Texten- Identifizieren von Textblöcken
NAYY 3x25 1987NAYY 3x25 2003
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Erzeugung von Topologie- Suche nach Overshoots- Finden von fehlenden Knoten- Generierung von Knoten- Herleitung von Knotentypen aus dem toplogischen Zusammenhang- Prüfen auf Konsistenz zu topologischen Regeln- Zusammensetzen von Liniensegmenten entsprechend topologischer Regeln
• Objekte modifizieren- Trennen- Verschmelzen- Vervielfältigen- Löschen- Umbenennen
CITRA Konzept
CITRA®- Modellierungswerkzeuge
• Analyse von CITRA -Dateien- Statistik- Generierung von Konfigurationsdateien- Visualisierung mit dem SVG-Viewer
• Plausibilitätsprüfungen- Wichtiger Beitrag zur Qualitätssicherung- Funktionalität zur automatischen Fehlerkorrektur
• Offenes Format ermöglicht Erstellung und Einbau von Individuallösungen
CITRA Konzept
CITRA®- Modellierungswerkzeuge
Beispiel CITRA Format
CITRA Konzept
FACDEF = BUILDING3507483.870 5397436.0103507483.870 5397436.010
ATTSEG = PUBLIC_BLDG1 TYPE C(3) :0152 BUILT_IN C(4) :186711 STR_CODE C(5) : 524912 NUMBER C(4) : 1416 ADDRESS C(33) :14, Mildenhall Road
PICTURELINE = BLDG_AREA
3507479.540 5397436.6903507481,220 5397437.0503507480.780 5397439.4603507489.590 5397441.1703507491.280 5397432.1003507480.690 5397430.0603507479.540 5397436.690
SYMB = CENTROIDANGLE = 281
3507483.870 5397436.010FTEXT = NUMBER
ANGLE = 281FLDID = 12
3507483.870 5397436.010TEXT = DESCRIPTION
3507487.230 5397434.050'Town Hall'ENDFAC
• Nodes werden einfach modelliert• Die Schnittstelle unterscheidet zwischen Nodes
ohne <Tag> und Nodes mit <Tag>• Nodes mit Tag sind POI• POI werden je nach Bedeutung des <Tag>
umbenannt• Nodes ohne Tag sind nur für NDM wichtig
Nodes
CITRA
• Ways können mehrere <Tags> haben• Beispiel: highway und railway• ���� Verdoppeln der Geometrie notwendig
Ways
CITRA
<way id="4365197" user="mike67" uid="49785" visible="tr ue" version="6"changeset="4044699" timestamp="2010-03-05T21:14:14Z" >
<nd ref="26402290"/> ....
<tag k="highway" v="secondary"/>
<tag k="name" v="Kölnstraße"/>
<tag k="oneway" v="yes"/>
<tag k="railway" v="tram"/>
<tag k="ref" v="L 300"/>
</way>
• Ways bilden Polylinien und Polygone • Bei Enklaven/Exklaven gibt es eine Relation mit
dem type multipolygon
<relation id="22522" user="DaBear" uid="31059" visible ="true"version="1" changeset="600786" timestamp="2008-07-26T 12:00:41Z">
<member type="way" ref="15241876" role="outer"/><member type="way" ref="25778555" role="inner"/><tag k="type" v="multipolygon"/>
</relation>
Ways
CITRA
• Zusammenfassen der Ways eines Multipolygons zu einem Objekt
• Aber: einzelne Ways eines Multipolygons können unterschiedliche Bedeutungen haben
• Der Typ des äußeren Rings gibt den Typ des gesamten Polygons vor
• Wenn ein innerer Ring einen anderen Typ hat, wird dieser dupliziert
Ways
CITRA
Ways (Fehler)
CITRA
Ways
CITRA
Ways (korrekt)
CITRA
• Modellieren Beziehungen zwischen Objekten, aber auch Objekte selbst
• Für Darstellung wichtige Relationen (Multipolygone)
• Informative Relationen (Route für S -Bahn-Linien)• Manöver (Abbiege-Verbote etc...)
Relationen
CITRA
• >20000 unterschiedliche <Tags>• „ungültige Namen“
<tag k="footway:right.incline" v="1.0%"/>
• Einheitlichkeit ? <tag k=„amenity" v=„school"/><tag k=„school" v=„yes"/>
Attribute
CITRA
• Open Street Map• Modellierung• Verwendung in Oracle
Gliederung
• AREAAMENITY• AREALANDUSE• AREALEISURE• AREAWATER• BUILDING• AREANATURE• TRAFFIC• OTHER_OBJECTS
Oracle Tabellen mit Ways(Areas)
Datenmodell
• STREETS• RAILWAY• BOUNDARY
Oracle Tabellen mit Ways(Polylines)
Datenmodell
• POI_RAILWAY• POI_TRAFFIC• POI_RESTRNT• POI_AMENITY• POI_PARKING• POI_WATER• POI_PETROL• POI_BANK• POI_NATURE• POI_LANDUSE• POI_LEISURE
Oracle Tabellen mit Nodes (Points)
Datenmodell
• RELATIONS• RESTRICTIONS• WAYTAGS• NODETAGS• RELTAGS
Oracle Tabellen ohne Geometrie
Datenmodell
• OSM_NODE$• OSM_LINK$• OSM_PATH$• OSM_PLINK$
Oracle Tabellen für Netzwerk-Datenmodell
Datenmodell
Netzwerk Datenmodell
• Spatial Netzwerk ohne LRS SDO_GEOMETRY• Spatial Netzwerk mit LRS SDO_GEOMETRY• Spatial Netzwerk mit SDO_TOPO_GEOMETRY• Logisches Netzwerk ohne Geometrie
Oracle
Netzwerk Datenmodell
• Benutzer/Schema anlegen• Anlegen der Datenstrukturen• Daten importieren• Metadaten erzeugen• Testen/Validieren
Oracle
• Partitionieren !• Objekte auf der Grenze
- Nodes Ok (Constraint)- Ways Ok (Edge Ids konfigurierbar)
• Directed oder Not-Directed
Netzwerk Datenmodell
Oracle
Anlegen der Datenstrukturen
• Verwendung von Oracle Funktionen zum erzeugen der Tabellen
• Erzeugen der Tabellen durch eigene Scripte
Oracle
Anlegen der Datenstrukturen
SDO_NET.CREATE_SDO_NETWORK(<name>,<Hierachie-Level>,<Directed>,<node with cost> );
--- anlegen der Netzwerk - TabellenEXEC SDO_NET.CREATE_SDO_NETWORK('OSM',9,True,FALSE) ;
--- eigene Spalten für ID aus OpenStreetMapALTER TABLE OSM_NODE$ ADD (OSM_ID NUMBER);ALTER TABLE OSM_LINK$ ADD (OSM_ID NUMBER);
--- Sequenz wird con CITRA verwendetcreate sequence LINK_SEQ;
Oracle
Daten importieren
• CITRA
Oracle
Metadaten
insert into USER_SDO_GEOM_METADATAvalues('OSM_NODE$', 'GEOMETRY',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT( 'X', -360, 360, 0.000001 ),MDSYS.SDO_DIM_ELEMENT( 'Y', -360, 360, 0.000001 ) ) ,4326 );
... OSM_LINK$, OSM_PATH$
Oracle
Validieren
SDO_NET.VALIDATE_NETWORK(<name>,<check_data>)
--- Validieren des Netzwerkesselect SDO_NET.VALIDATE_NETWORK('OSM','True') from dua l;
Oracle
Oracle
Karte
• Benutzer anlegen• Anlegen der Tabellen• Daten importieren• Metadaten erzeugen
Oracle
Anlegen der Tabellen
Oracle
Daten importieren
Oracle
Oracle
Das war‘s!
Haben Sie Fragen?
CISS TDI GmbHBarbarossastraße 36 •••• 53489 Sinzig
Tel.: +49 2642 97 80 [email protected] •••• www.ciss.de
Die abgebildeten Daten wurden mit freundlicher Genehmigung von der KDZ Westfalen-Süd und den
Landesvermessungen NRW, RP zur Verfügung gestellt.