Oracle Locator, Spatial und Oracle MapViewer: Ein Überblick

Werbung
<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
Herunterladen