<Insert Picture Here> Auf den Ort kommt es an Geodaten und die Oracle-Plattform 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 Entwicklung der Funktionalität Oracle11g Spatial Oracle10g •Oracle Maps •3D-Support • Google Integration Spatial •Raster Data Management •Topology & Networking •Spatial Analysis and Mining Oracle9i Spatial Oracle8i Spatial Oracle 7.3.3 Spatial Oracle7 Keine GeodatenFunktionalität 1994 •Coordinate Transformation •Linear Referencing •Spatial Replication •Spatial Partitioning •Object Data type •Circles, Arcs •R-Tree Indexing •Topology/Distance Operators •Points, Lines, Polygons •Quad-Tree indexing •Spatial Operators 1995 1999 2002 2003 2007 2011 Oracle Spatial: OGC Simple Features Geometrische Elemente Point Line string Polygon Polygon with hole Arc line string Compound polygon Compound line string Self-crossing line strings Optimized polygons Self-crossing polygons Oracle Spatial: Dreidimensional Geometrische Elemente einfach zusammengesetzt Triangulated Irregular Network (TIN) zusammengesetzt Punktwolke (Point Cloud) Oberflächen einfach Körper Oracle Spatial Objektrelationale Implementierung • Datentyp SDO_GEOMETRY Tabelle Gemeinde ID NAME NUMBER 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 Oracle Spatial SQL Operatoren • Enge SQL-Integration • "Topologische Operatoren" • Inside Contains • Touch Disjoin • Covers Covered By • Equal Overlap Boundary Inside • "Dinstanz-Operatoren" • Within Distance • Nearest Neighbor Within Distance Spatial Operatoren Operator Entspricht MASK in SDO_RELATE SDO_INSIDE mask=inside SDO_CONTAINS mask=contains SDO_COVERS mask=covers SDO_COVEREDBY mask=coveredby SDO_OVERLAPS mask=overlapbdyintersect+overlapbdydisjoint SDO_OVERLAPBDYINTERSECT mask=overlapbdyintersect SDO_OVERLAPBDYDISJOINT mask=overlapbdydisjoint SDO_TOUCH mask=touch SDO_EQUAL mask=equal SDO_ANYINTERACT mask=anyinteract SDO_ON mask=on Oracle Spatial SQL Funktionen • Rückgabe: SDO_GEOMETRY • • • • • • • Union Difference Intersect XOR Buffer Centroid ConvexHull / ConcaveHull Original Union Difference Intersect • Rückgabe: NUMBER • • • • Length Area Distance Volume XOR Nützliche Funktion: SDO_BUFFER • Einfache Geometrien • Zusammengesetzte Geometrien Räumliche SQL-Abfragen Ein Beispiel • Welche Bundesländer grenzen an NRW? select l1.name from laender l1, laender l2 where l2.name='NRW' and sdo_relate( l1.grenze, l2.grenze, 'mask=touch' )='TRUE' Kombinierte Abfragen • Welche Kunden mit Umsatz sind in Brandenburg? SQL> 2 3 4 5 6 7 select name, umsatz from customers c, geo_laender gl where sdo_relate( c.geometry, gl.geometry, 'mask=anyinteract' ) = 'TRUE' and gl.feature_name='Brandenburg' and umsatz is not null and umsatz > 0 NAME UMSATZ ------------------------------ ---------Freie Tanke 4876 Marhoul 4798 Tankstelle Schönefeld 4598 Tankstelle Dreieck Havelland 7896 : : SDO_JOIN: Räumliche Layer zusammenführen • Beispiel Finde zu jedem Kunden anhand der Position das Postleitzahlengebiet heraus! select rowid1 as KUNDEN_ROWID, rowid2 as PLZ_ROWID from table( sdo_join( 'KUNDEN', 'GEOMETRY', 'PLZ_GEBIETE', 'GEOMETRY', 'mask=anyinteract' ) ) Spatial Index Aufbau des R-Tree-Index a root R b S c R a d S b c d root Zeiger auf Geometrien Verarbeitung einer räumlichen Abfrage Ausführung einer räumlichen Abfrage Layer Data Primary Filter Spatial Index Spatial Column Index retrieves area of interest Reduced Data Set Secondary Filter Spatial Functions Spatial function determines Exact result Exact Result Verarbeitung einer räumlichen Abfrage Ausführung einer räumlichen Abfrage mit internen Optimierungen Layer Data Primary Filter Spatial Index Spatial Column Index retrieves area of interest Reduced Data Set Secondary Filter Exact Result Spatial Functions Exact Result Spatial function determines Exact result Abfrageverarbeitung: Ein Beispiel Welche "Pipelines" sind im "grünen Bereich?" • Primärfilter (Index) vergleicht MBR, also zuviele Ergebnisse • Interne Optimierung (Inneres MBR) liefert "sichere" Kandidaten • Exakte Berechnungen nur noch, wo wirklich nötig Oracle Spatial Koordinatensysteme • Über 4.000 Koordinatensysteme • • • • • Geodätisch Kartesisch als Projektion Kartesisch ("Non-Earth") Eigene Koordinatensysteme möglich Tabelle MDSYS.CS_SRS • PL/SQL-Paket SDO_CS • Koordinatensystem-Transformationen • EPSG-Unterstützung ab Version 10.2 Unterstützung der Google-Projektion • Koordinatensystem: EPSG 3785 • Google approximiert die Erde als Kugel (Spherical Math) SQL> select wktext from cs_srs where srid=3785; WKTEXT -----------------------------------------------------PROJCS["Popular Visualisation CRS / Mercator", GEOGCS [ "Popular Visualisation CRS", DATUM ["Popular Visualisation Datum (EPSG ID 6055)", SPHEROID ["Popular Visualisation Sphere (EPSG ID 7059)", 6378137.0, 1000000000000.0]], PRIMEM .... Geocoding mit Oracle Spatial • Umwandlung von Adressen in Koordinaten … … und rückwärts (REVERSE GEOCODING) 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', NUL L, NULL, 'München', 'München', 'BAYERN', 'DE', NULL, NULL, N ULL, NULL, '25', 'RIES', 'STRASSE', 'F', 'F', NULL, NULL, 'L ', ,5, 52901891, '????#ENUT?B281CP?', 1, 'DEFAULT', 11,53673 4, 48,1800773, '???10101010??401?') 1 Zeile wurde ausgewählt. Oracle Spatial: Rasterdaten Vektordaten Vektorkoordinaten -74.1651749, 41.339141 -74.1651749, 41.339141, -73.4284481, 40.678193, -72.9792214, 41.686228 -74.1651749, 41.339141, -74.1651749, 39.559004, -72.9792214, 39.559004, -72. 9792214, 41.339141 Rasterdaten Georeferenzierung Raster "Spatial-Extent": Zuordnung des Rasters zu einem Koordinatensystem X Y Breitengrade National Park Restaurant Längengrade Oracle GeoRaster in Aktion http://www.geoproxy.de Linear Referencing (LRS) • "Measure values" werden mit Punkten entlang eines Geometrieobjektes assoziiert • Linien • Zusammengesetzte Linien • Polygone • Typischerweise proportional zur Entfernung des Punktes vom Start (55,20,60) (30,10,27) (5,10,0) (50,15,53.8) (45,10,44) (15,5,11.2) (40,5,38) Ein Beispiel: Straßenmanagement Tabelle STRASSE ID (Street ID) Accident # ID UNFAELLE M Sign # ID M SCHILDER LRS geometry Speed ID Start M End M BEHINDERUNGEN Condition ID Start M End M STRASSENZUSTAND Ein Beispiel: Straßenmanagement Tabelle BEHINDERUNGEN Beispiel "Straßenmanagement" Linear Referencing ist einfach ... • SQL zur Berechnung der Stau-Segmente select a.name, s.art, sdo_lrs.convert_to_std_geom( sdo_lrs.clip_geom_segment( sdo_lrs.convert_to_lrs_geom(a.geometry), s.start_km * 1000, s.ende_km * 1000 ) ) geometry from geo_autobahn a, stau s where a.name = s.autobahn Geodaten: Visualisierung ...? Visualisierung der Geodaten Oracle MapViewer • Karten-Rendering für ... Vektordaten, Rasterdaten, Netzwerke, Topologien • Unterstützung für WMS (Client / Server) • Java-Architektur • Installation per Standard-Deployment (J2EE) • Lizenz: Oracle Fusion Middleware Map Request Map Response J2EE-Container Datenbank Karten definieren: Map Builder Kartendefinitionen • Ablage in der Datenbank • USER_SDO_MAPS • USER_SDO_STYLES • USER_SDO_THEMES • USER_SDO_CACHED_MAPS • Bearbeiten mit MapBuilder oder mit SQL per Skript • Besonderheiten bei Export / Import beachten Oracle MapViewer: Oracle Maps! • Kartendarstellung state-of-the-art • • • • Drag & Drop Einfaches Zoom In & Zoom Out Hinzufügen neuer Elemente Dynamisches Einblenden weitere Informationen • AJAX-Technologie • Plattformunabhängig Java, .NET, PHP, Oracle APEX, … • Basiert auf JavaScript Oracle Maps Aufbau einer Karte (vereinfacht) Karten in Oracle MAPS • Basis: Map Tile Layer • • • • Im Voraus erstellte Kacheln – zusammengesetzt eine Karte Beliebige Projektionen möglich (Datenbank!) Cache Management manuell oder automatisiert Externe Datenquellen möglich (WMS-Server) • Individualisiert durch Feature Of Interest Layers • Hier kein Caching: Informationen kommen direkt aus der Datenbank • Zusätzliche Informationen im Information Window • Anbindung externer Systeme (BI Server) möglich • Externe Datenquellen (WMS) möglich AJAX in Oracle Maps JavaScript Client-API Und dann war da noch ... Oracle has "NAVTEQ on board" • NAVTEQ-Daten kostenlos im OTN verfügbar • Spatial-Format (Import via Data Pump) • Map-Definitionen für Map Viewer enthalten • Download hier: http://www.oracle.com/technology/software/htdocs/ distlic.html?url=http://www.oracle.com/technology/ software/products/mapviewer/htdocs/navlic.html • FAQ hier: http://www.oracle.com/technology/products/spatial/ pdf/navteq_faq.pdf 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