<Insert Picture Here> Oracle12c Locator und Oracle12c Spatial Was ist neu? Carsten Czarski und Hans Viehmann Oracle Deutschland B.V. & Co KG Oracle: Offene Geodaten-Plattform • Native Datentypen in der Datenbank • 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 Oracle Locator und Oracle Spatial Linien Punkte Polygone Geocoding Routing Web Services (OGC) Spatial and Graph e1 f1 e3 e2 n2 f2 n1 e4 Rasterdaten Netzwerke Topologien 3D Oracle Geodaten-Plattform Die Strategie • Location-Enabling der Oracle-Produkte • Basis: Locator, Spatial and Graph, FMW MapViewer • Beispiele: Oracle BI Suite, eBusiness Suite, Primavera, OTM, Oracle Event Processing und mehr ... • Intensive Partnerschaften • In Deutschland und weltweit • ISV, SI, Datenlieferanten • Commitment zu Standards • OGC, SQL, ISO TC-211, TC-204 Neue Geodaten-Features • Unterstützung parametrisierer Kurven (NURBS) • Erweiterte 3D und Point Cloud Funktionen Contour Generation, Auslösungs-Pyramiden • Neue Funktionen für Rasterdaten: Local Raster Algebra, Virtual Mosaic • Neue Funktionen für Netzwerk-Datenmodell: Time-Based Analysis, Nokia Traffic Patterns • Verbesserte Performance • Spatial Vector Performance Acceleration • Interne Optimierungen • Oracle MapViewer MapViewer Editor, Maps HTML5 API Oracle Spatial Entwicklung der Funktionalität Oracle12c Spatial Oracle11g Spatial • NURBS • Raster Algebra • HTML5 Maps • 3D-Support • Google Integration Oracle10g Spatial • Network Data Model (Routing) • Geocoding • Raster Data Management Oracle9i Keine GeodatenFunktionalität Oracle7 Spatial •Coordinate Transformation •Linear Referencing Oracle8i Spatial •Data type: SDO_GEOMETRY •R-Tree Indexing •Topology/Distance Operators 1998 2001 2003 2008 2013 Vector Performance Acceleration "Turbo-Charger"-Feature der Spatial-Option • Performanceverbesserungen für eine Reihe von Spatial-Operationen und –Funktionen • Nutzung erfordert die Spatial Option • Datenbankparameter • SPATIAL_VECTOR_ACCELERATION • ALTER SESSION oder ALTER SYSTEM • Standardmäßig abgeschaltet alter session set spatial_vector_acceleration = true; alter system set spatial_vector_acceleration = true; Vector Performance Acceleration "Turbo-Charger"-Feature der Spatial-Option Union Operations: 5-10x DML single insert: 3x Spatial and Graph option Performance Improvements Coordinate System Transformations: 40-50% General DML operations: 30-40% Vector Performance Acceleration "Turbo-Charger"-Feature der Spatial-Option Join: 50-100x Touch: 50x Spatial and Graph option Performance Improvements Contains, Overlaps: 50x Complex masks: 50x Oracle Spatial: OGC Simple Features Geometrische Elemente Punkt Linenzug Kreisbogen Zus.ges. Linienzug Polygon Polygon "mit Loch" Zus.Ges. Polygon Optimiertes Polygon Parametrisierte Kurve Parametrisierte Kurven Non-Uniform Rational B-Spline (NURBS) • Repräsentation nahezu beliebiger Freiform-Geometrien • Kontrollpunkte und Knoten "steuern" die Form der Kurve • Darstellung komplexer Objekte mit wenigen Daten • Typische Beispiele: Kurven, Autobahnzufahrten • Unterstützung in der Datenbank • • • • • Abbildung als SDO_GEOMETRY WKT/WKB/GML Konvertierungsfunktionen Räumliche Indizierung / Spatial Operators Validierungen Funktionen zur Konvertierung in "klassische" Linienzüge (Approximation) • Nicht unterstützt für geodätische Koordinatensysteme NURBS Unterstützung Ein Beispiel SDO_GEOMETRY( 2002, 31468, NULL, SDO_ELEM_INFO_ARRAY( 1, 2, 3 ), SDO_ORDINATE_ARRAY ( 3, 7, 0, 0, 1, -50, 100, 1, 20, 200, 1, 50, 350, 1, 80, 200, 1, 90, 100, 1, 30, 0, 1, 11, 0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1 ) ) -- Zweidimensionaler Linienzug -- Koordinatensystem -- 1,2,3 = NURBS-Kurve ----- Grad der Kurve (3=Kubisch) "d" Es gibt 7 Kontrollpunkte "m" 1. Kontrollpunkt : ------ 7. Kontrollpunkt Der Knotenvektor hat 11 Elemente = d + m + 1 Normalisierter Knotenvektor Start bei 0 - Ende bei 1 Ansteigend NURBS Unterstützung Ein Beispiel Oracle Spatial: Dreidimensional Geometrische Elemente einfach zusammengesetzt Triangulated Irregular Network (TIN) zusammengesetzt Punktwolke (Point Cloud) Oberflächen einfach Körper Point Cloud Contour Generation • PL/SQL Funktion in SDO_PC_PKG FUNCTION CREATE_CONTOUR_GEOMETRIES RETURNS SDO_GEOMETRY_ARRAY Argument Name Typ In/Out Defaultwert? ------------------------------ ----------------------- ------ -------PC SDO_PC IN SAMPLING_RESOLUTION NUMBER IN ELEVATIONS SDO_ORDINATE_ARRAY IN REGION SDO_GEOMETRY IN Weitere neue 3D-Features • Auflösungspyramiden für TINs und Point Clouds • Steuerung durch Attribute in den INIT-Funktionen • Hilfreich für Visualisierungen – analog Rasterdaten • Neue Clipping-Funktion • Bessere Performance für große Datenmengen • Arbeitet ohne Spatial Index • Kann stark parallelisieren • Neue Point-in-Polygon-Funktion • Metadaten-Framework für Visualisierungswerkzeuge 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 Rasterdaten: Virtual Mosaic • Bereitstellung eines "virtuellen Mosaiks" auf Basis vorhandener Georaster-Objekte • Keine persistente Speicherung mehr nötig • Georaster-Operationen on-the-fly möglich • Virtuelles Mosaik als Grundlage für Raster-Algebra Local Raster Algebra • Algebra zur Manipulation von Rasterdaten • Erlaubt Berechnung neuer Rasterkacheln anhand von Formeln und "Input-Rasterkacheln" • Grundsätzlich 4 Manipulationsarten • local, focal, zonal und global • Oracle12c unterstützt Local Raster Algebra • Zellenweise Anwendung der Formeln • PL/SQL-Schnittstelle SDO_GEOR_RA • Unterstützt 4 Raster Algebra Funktionen: cell value based conditional queries; cell value based conditional updates; arithmetic operations; raster classification/segmentation Local Raster Algebra Local raster algebra wendet die gleiche Operation Punkt für Punkt für jedes Pixel der Rasterkachel an Z = (X+ 500)/(Y+ 100) X, Y: Input Raster Z: Output Raster Raster Algebra Syntaxbeispiel declare geor_src SDO_GEORASTER; -- source 3-band image geor_dst SDO_GEORASTER; -- result 3-band image begin select georaster into geor_src from georaster_table where georid = 1; select georaster into geor_dst from georaster_table where georid = 2 for update; sdo_geor_ra.findcells ( geor_src, '(({0}>10)&({0}<50)&{1}>=100)&({1}<150)&({2}>200)&({2}<245)', null, geor_dst, null, 'false', 'parallel=4' ); update georaster_table set georaster = geor_dst where georid = 2; end; Historical Temperature Analysis Ein weiteres Beispiel … • A collecion of 33 years of global temperature data for each month. In total, 396 layers stored in 1 georaster object: 1. The values are in Kelvin, which is converted to Fahrenheit 2. Generate the Average (mean) temperature for each month 3. Compute the Mean Absolute Deviation per Month (the mean difference from the average across 33 years for each month). • use PL/SQL program to generate all expressions on the left and execute the rasterMathOp operations. -- converting Kelvin to Fahrenheit '({ 0} -273.15)* 9/5+ 32‘ -- compute average temperature for a month (January) '({ 0} + { 12} + { 24} + { 36} + { 48} + { 60} + { 72} + { 84} + { 96} + { 108} + { 1 20} + { 132} + { 144} + { 156} + { 168} + { 180} + { 192} + { 204} + { 216} + { 228} + { 240} + { 252} + { 264} + { 276} + { 288} + { 300} + { 312} + { 324} + { 336} + { 348} + { 360} + { 372} + { 384} )/33‘ -- compute mean absolute deviation for a month (January) ‘(abs({ 1,0} -{ 0,0} )+ abs({ 1,0} -{ 0,12} )+ abs({ 1,0} -{ 0,24} )+ abs({ 1,0} { 0,36} )+ abs({ 1,0} -{ 0,48} )+ abs({ 1,0} -{ 0,60} )+ abs({ 1,0} { 0,72} )+ abs({ 1,0} -{ 0,84} )+ abs({ 1,0} -{ 0,96} )+ abs({ 1,0} { 0,108} )+ abs({ 1,0} -{ 0,120} )+ abs({ 1,0} -{ 0,132} )+ abs({ 1,0} { 0,144} )+ abs({ 1,0} -{ 0,156} )+ abs({ 1,0} -{ 0,168} )+ abs({ 1,0} { 0,180} )+ abs({ 1,0} -{ 0,192} )+ abs({ 1,0} -{ 0,204} )+ abs({ 1,0} { 0,216} )+ abs({ 1,0} -{ 0,228} )+ abs({ 1,0} -{ 0,240} )+ abs({ 1,0} { 0,252} )+ abs({ 1,0} -{ 0,264} )+ abs({ 1,0} -{ 0,276} )+ abs({ 1,0} { 0,288} )+ abs({ 1,0} -{ 0,300} )+ abs({ 1,0} -{ 0,312} )+ abs({ 1,0} { 0,324} )+ abs({ 1,0} -{ 0,336} )+ abs({ 1,0} -{ 0,348} )+ abs({ 1,0} { 0,360} )+ abs({ 1,0} -{ 0,372} )+ abs({ 1,0} -{ 0,384} ))/33’ Raster Algebra: Ein Beispiel Durchschnittstemperatur im Juli Geocoding mit Oracle Spatial • Umwandlung von Adressen in Koordinaten … … und rückwärts (REVERSE GEOCODING) select sdo_gcdr.geocode( 'ODF_EU_Q312', 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, '????#EN UT?B281CP?', 1, 'DEFAULT', 11,536734, 48,1800773, '???10101010??401?') 1 Zeile wurde ausgewählt. Neue Geocoder-Features • SRID-Unterstützung • Optimiertes Sprach-Handling • Reverse Geocoder braucht kein Land mehr als Input • Optimierungen für Point-Addressing Oracle Spatial Network Data Model • Network Data Model • Datenmodell zur Speicherung von Netzwerken (Graphen) • Explizite Speicherung von Knoten und Kanten • Attributierung auf Ebene der Knoten • Load-On-Demand API • Netzwerkbasierte Lösungen (Tracing & Routing) • • • Transport und Logistik Außendienst-Steuerung Location-based Services und Telematik Netzwerkanalyse Netzwerkoperation durchführen • Analysen auf Netzwerkdaten in der Oracle-Datenbank • Java Entwicklerschnittstelle • ShortestPath, ReachableNodes, ComputeTSP • Eigene Kostenfunktionen zur Optimierung try { oPath = oNetAnalyst.shortestPathDijkstra( new PointOnNet(piStartNode), new PointOnNet(piEndNode), (piUseConstraint==1?oCons:null) ); SpatialSubPath ssb = oNet.readSpatialSubPath(osmPath); long[] linkids = oPath.getReferencePath().getLinkIds()); } Am Beispiel Schnellste, mögliche Route! Zeitbasierte Netzwerkanalyse • Dynamische Link-Kosten • Kosten eines Links nun abhängig vom Zeitpunkt des Erreichens • Entsprechende Daten im Netzwerk • Out-of-the-Box Unterstützung: • Nokia Traffic Patterns (ODF) 10 PM 8 AM Geodaten: Visualisierung ...? Visualisierung Oracle MapViewer, Editor und Oracle Maps • Karten-Rendering Vektordaten, Rasterdaten, Netzwerke, Topologien • MapViewer Editor • Unterstützung für WMS, WFS • Java-Architektur • • • • Installation per Standard-Deployment (J2EE) QuickStartKit auf Basis Oracle GlassFish Lizenz: Oracle Fusion Middleware Aktuelle Version 11.1.1.7 Oracle Maps • Kartendarstellung state-of-the-art • Drag & Drop, einfaches Zoom In & Zoom Out • Verschiedenste Datenquellen Oracle-Datenbank, WMS, Bing Maps, Nokia, Digital Globe u.v.m. • Dynamisches Einblenden weiterer Informationen • Hinzufügen neuer Elemente durch den Anwender • HTML5 API Oracle Maps: HTML5 API • Komplett neu entwickelte Browser API • • • • Neueste HTML5 Features Hervorragende Unterstützung von Tablets und mobilen Geräten Wesentlich bessere User Experience Verlagerung des Renderings (teilweise) zum Client • Achtung: Browser • • • • Firefox Safari Chrome IE: Erst ab IE9 Oracle Maps in Application Express Nutzung per APEX Plugin Oracle MapViewer Editor • Webbasierter Geodaten-Editor • Editieren auf Geometrie- und TopologieEbene (Gemeinsame Grenzen) • Multiuser-Unterstützung • Versionierung via Workspace Manager 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, Vector Acceleration • Oracle MapViewer / Oracle Maps • Oracle Application Server • Alle Editionen (JE, SE-1, SE, EE) • 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