Das Navi in der Datenbank I: Oracle11g has NAVTEQ on

Werbung
<Insert Picture Here>
Das Navi in der Datenbank
Oracle11g has NAVTEQ on Board
Carsten Czarski
Oracle Deutschland B.V. & Co KG
Oracle: Die offene Geodatenbank
• Native Datentypen
• Vektordaten und Rasterdaten (Satellitenbilder)
• Offene Zugriffe mit SQL, Java, .NET, ...
• Enge Integration zwischen Sachdaten und Geodaten
• Offen und Standardkonform
• Unterstützt von allen GIS-Systemen
GIS 1
SQL
SQL
GIS 2
“Spatial enabled”
Business Intelligence
Eigene Abfragen
Offene Geodaten – offene Plattform!
Fachliche
Komponenten
Konkrete Lösungsapplikation
Fachliche Lösungen
Oracle Application Server
MapViewer
3rd-Party
Oracle Maps
Kartendarstellung
WMS Dienste
Routenberechnung
Web Service
Oracle Application Server
Geodaten
Sachdaten
Oracle Database
andere
Daten
Geodaten / Räumliche Abfragen
Räumliche Indizes
Verschneidungen
Daten-Manipulationen
Oracle Spatial
Objektrelationale Implementierung
• Datentyp SDO_GEOMETRY
Tabelle Gemeinde
ID
NUMBER
NAME
VARCHAR2
SDO_GTYPE
SDO_SRID
SDO_POINT
SDO_ELEM_INFO
SDO_ORDINATES
GRENZE
SDO_GEOMETRY
NUMBER
NUMBER
SDO_POINT_TYPE
SDO_ELEM_INFO_ARRAY
SDO_ORDINATE_ARRAY
ODF Dataset installieren
Transportable Tablespace
• NAVTEQ liefert Oracle-Datendateien aus
• Betriebssystem-Copy auf den Datenbankserver
• Spatial-Indizes vorberechnet
• Installation der Metadaten (Data Dictionary)
• 150GB ODF EU Dataset: ~ 15 – 20 Minuten
NAVTEQ
Download ODF
Daten-Datei expdat.dmp
Daten-Datei expdat.dmp
ODF-Daten einspielen: Vorgehensweise
• Dateien auspacken und kopieren
• Meta-Daten importieren
impdp
dumpfile=expdat.dmp directory=dumpdest
transport_datafiles=/space2/oradata/usercp.dbf
logfile=odf_import.log
• Tablespaces READ WRITE setzen
• Zusätzliche Operationen (Installation Guide beachten)
• Spatial Indizes initialisieren
• Styles, Themes und Maps für Kartendarstellung kopieren
• Netzwerk-Metadaten einrichten
ODF Daten einspielen: Tipps
• Von NAVTEQ vorgeschlagenes Schema akzeptieren
• ODF_EU_Q310 für Dataset Q3/2010
• ODF_EU_Q111 für Dataset Q1/2011
 Mehrere Datasets gleichzeitig möglich
• Anderen Connect-User verwenden
• Bspw. GEOCODE
• SELECT-Privilegien vergeben (GRANT)
• Private oder öffentliche Synonyme einrichten
 Austausch des Datasets damit transparent möglich
ODF Teil I: Map Display
• Daten für Kartendarstellung
• Tabellen mit Präfix MAP, NTC und WOM
• Darstellungsvorschriften für Oracle MapViewer enthalten
• Oracle Locator auf Datenbankseite ausreichend
ODF Daten Teil II: Geocoding
• Umwandlung von Adressen in Koordinaten …
• Tabellen mit Präfix GC
• Geocoder ist Teil der Spatial Option
select sdo_gcdr.geocode(
'ODF_EU_Q111',
sdo_keywordarray('Riesstr. 25','München'),
'DE',
'DEFAULT'
) as geocode from dual
/
GEOCODE
----------------------------------------------------------------------------SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Riesstrasse', NULL, NULL,
'München', 'München', 'BAYERN', 'DE', NULL, NULL, NULL, NULL, '25',
'RIES', 'STRASSE', 'F', 'F', NULL, NULL, 'L', ,5, 52901891,
'????#ENUT?B281CP?', 1, 'DEFAULT', 11,536734, 48,1800773, ???10101010??401?')
Geocoder
Ablauf des
Geocoding
Referenzdaten
NAVTEQ ODF
Postalische
Adresse
Koordinaten und
Adresskorrekturen
Parsing
Adressstrukturen
Fehlertolerante
Suche
Straßen,
Platz und
Ortsnamen
Erzeugung
der Koordinate
Geometrien
PL/SQL Funktionen für den Geocoder
• SDO_GCDR.GEOCODE
Liefert ein Ergebnis als SDO_GEO_ADDR-Objekt zurück – dieses enthält …
• die (korrigierte) Adresse,
• die Koordinate
• den Matchvektor mit Qualitätinformationen
• SDO_GCDR.GEOCODE_ALL
Empfohlene Funktion: Liefert ein SDO_GEO_ADDR-Array mit allen
passenden Geocoding-Ergenissen zurück.
• SDO_GCDR.GEOCODE_AS_GEOMETRY
Liefert nur ein SDO_GEOMETRY-Objekt mit der ermittelten Koordinate.
Qualitätssicherung mit dem Matchvector
• String mit einer Länge von 17 Stellen
• Jede Position entspricht einem Adresselement wie
"Straße", "Hausnummer", "Ort", …
Wert
Bedeutung
0
MATCHED
Angegebenes Adresselement passt zu den Daten
1
ABSENT
Element nicht angegeben und nicht ersetzt
2
CORRECTED
Angegebenes Element wurde durch orrigiertes
ersetzt.
3
IGNORED
Angegebens Element passte nicht und wurde
ignoriert
4
SUPPLIED
Element wurde nicht angegeben und vom Geocoder
ermittelt.
Point Adressing Feature
• Geocoding anhand von Hauskoordinaten
Position 3 im Matchvektor steht
• Tabelle GC_ADDRESS_POINT_NVT
für Point Adress.
• Wird vom Geocoder genutzt,
sobald vorhanden
Eine "0" steht für eine gefundene
Hauskoordinate
• Für Deutschland: 19.160.328
Einträge (ODF Q1/2011)
select sdo_gcdr.geocode(
user, sdo_keywordarray('Adalperostr 80' ,'Ismaning'), 'DE', 'DEFAULT'
) as GEOCODE
from dual;
GEOCODE
---------------------------------------------------------------------------SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Adalperostrasse', NULL, NULL,
'Ismaning', 'Ismaning', 'BAYERN', 'DE', '85737', NULL, '85737', NULL, '80',
'ADALPERO', 'STRASSE', 'F', 'F', NULL, NULL, 'R', ,5, 737273516,
'??X?#ENUT?B281CP?', 1, 'DEFAULT', 11,68466, 48,22957, '??010101010??404?')
Reverse Geocoding mit Oracle Spatial
• Umwandlung einer Koordinate in eine Adresse ...
SQL> select sdo_gcdr.reverse_geocode(
'ODF_EU_Q111',
sdo_geometry(2001, 8307, sdo_point_type(11.5, 48.2, null), null, null),
'DE'
) as GEOCODE
from dual;
GEOCODE
-----------------------------------------------------------------SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Am Blütenanger', NULL,
NULL, NULL, 'München', 'Bayern', 'DE', '80995', NULL, '80995', NULL,
NULL, 'AM BLÜTENANGER', NULL, 'F', 'F', NULL, NULL, 'R', ,048815353,
782916555, '', 1, 'DEFAULT', 11,4998663, 48,2003543, '???11141114??404?')
1 Zeile wurde ausgewählt.
Koordinaten
Geocoder
Ablauf des
Reverse
Geocoding
Adresse
Referenzdaten
NAVTEQ ODF
Finde
Road Segment
Geometries
Ermittle
Hausnummer
Geometries
Suche
Adressdetails
Street and
place names
ODF Daten Teil III: Routing
• Tabellen NODE, EDGE, PARTITION und SIGN_POST
• Nutzung mit Oracle Routing Engine sofort möglich
• Auch direkter API Zugriff auf das Netzwerk
• Einmaliges Einrichten nach Daten-Installation
NAVTEQ ODF Routing Dataset
Oracle Routing Engine in Aktion
Oracle Routing Engine
• Routenberechnung im Netzwerk
• Basisdaten in NAVTEQ ODF enthalten
• Java-Architektur
• Routing Engine selbst läuft
in der Mittelschicht
• Netzwerk liegt in der
Datenbank
• Kommunikation mit XML
über HTTP
• Teil der Spatial Option
Routing Engine: Kommunikation
Routing-Netzwerk im ODF-Dataset
• Enge Integration mit dem Geocoder
GEOCODE
-----------------------------------------------------------------SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Am Blütenanger', NULL,
NULL, NULL, 'München', 'Bayern', 'DE', '80995', NULL, '80995', NULL,
NULL, 'AM BLÜTENANGER', NULL, 'F', 'F', NULL, NULL, 'R', ,048815353,
782916555, '', 1, 'DEFAULT', 11,4998663, 48,2003543, '???11141114??404?')
select start_node_id, end_node_id, length, name
from NDM_EU_Q111_LINK$
where link_id = 782916555
START_NODE_ID END_NODE_ID
LENGTH NAME
------------- ----------- ---------- ------------------------59509700
851457063
476,16 Am Blütenanger
1 Zeile wurde ausgewählt.
Netzwerk in der Datenbank
• Auch direkte Netzwerkoperationen möglich
• Routing mit eigenen, speziellen Anforderungen
• Eigene Kostenbetrachtungen
• Gesperrte Gebiete
• Teil der Spatial-Option
• Java-API
LogicalSubPath routePath = osmNetAnalyst.shortestPathDijkstra(
new PointOnNet(piStartNode),
new PointOnNet(piEndNode),
myNetworkConstraintObject
);
Netzwerkberechnung: Shortest Path
Netzwerkberechnung: Shortest Path
Nun mit einer gesperrten Zone
Oracle Spatial-Technologie
Lizensierung
• Oracle Locator
• Alle Editionen (XE, SE-1, PE, SE, EE)
• Oracle Spatial
• Lizenzpflichtige Option (EE)
Geocoding, Rasterdaten, Topology Data Model,
Network Data Model, Linear Referencing …
• Oracle MapViewer
• Oracle Fusion Middleware – Alle Editionen
• Welche Funktionen enthält der "Locator"?
Oracle Spatial Developers' Guide, App. B
[email protected]
http://tinyurl.com/apexcommunity
http://sql-plsql-de.blogspot.com
http://oracle-text-de.blogspot.com
http://oracle-spatial.blogspot.com
http://plsqlexecoscomm.sourceforge.net
http://plsqlmailclient.sourceforge.net
Twitter: @cczarski @oraclebudb
Herunterladen