Geodaten und Karten in APEX So einfach wie noch nie! Carsten Czarski ORACLE Deutschland B.V. & Co KG Follow me on Twitter: @cczarski
Geodaten und Karten in Anwendungen Geodaten in Tabellen: Wie speichert man Punkte, Linien und Polygone? Visualisierung als Karte Wie kommt man an Geodaten? Geocoding Datenanbieter Geodaten verarbeiten: SQL, PL/SQL Umkreissuche Nächste Nachbarn Räumliche Verschneidungen
1) Karte
2) Geocoder
2) Geocoder
3) Räumliche Abfragen
3) Räumliche Abfragen
Ab APEX 4.2.5: Sample Geolocation Showcase
Da war doch noch was... Oracle Confidential Internal/Restricted/Highly Restricted 9
Da war doch noch was... 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 (JE, SE-1, SE, EE) Welche Funktionen enthält der "Locator"? Oracle Spatial Developers' Guide, App. B Oracle Confidential Internal/Restricted/Highly Restricted 10
Geodaten in APEX-Anwendungen Schritt 1: Geodaten speichern...
Eine Tabelle für Geodaten erstellen Datentyp für räumliche Daten: SDO_GEOMETRY Nimmt Punkte, Linien, Polygone und komplexere Geometrien auf Spatial Know-How in der Datenbank: Indizierung, Abfragen und Verarbeitung create table my_spatial_images( id number(10) not null, image blob, thumbnail blob, file_name varchar2(200) not null, mimetype varchar2(200), geometry sdo_geometry, exif xmltype, datetime timestamp with time zone, constraint my_spatial_images_pk primary key (id) )
Zusätzliche Aufgaben für Geodaten-Tabellen Metadaten eintragen Index erzeugen Zwingend erforderlich für räumliche Abfragen begin -- create metadata for spatial table -- coordinates are lon/lat and over the whole world apex_spatial.insert_geom_metadata_lonlat( p_table_name => 'MY_SPATIAL_IMAGES', p_column_name => 'GEOMETRY' ); end; / create index MY_SPATIAL_IMAGES_SX on MY_SPATIAL_IMAGES (GEOMETRY) indextype is MDSYS.SPATIAL_INDEX /
Zeilen einfügen SDO_GEOMETRY-Instanzen erzeugen select sdo_geometry(2001, 4326, sdo_point_type(-122.33, 47.61, null), null, null) from dual; SDO_GEOMETRY ------------------------------------------------------------------ SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(-122.33, 47.61, NULL), NULL, NULL) select apex_spatial.point(-122.33, 47.61) from dual; SDO_GEOMETRY ------------------------------------------------------------------ SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(-122.33, 47.61, NULL), NULL, NULL)
Komplexere Geometrien: Linien, Polygone Lines sdo_geometry( 2002, 4326, null; sdo_elem_info_array(1,2,1), sdo_ordinate_array(10,50, 10.1,50, 10.1,50.1) ) Polygons sdo_geometry( 2003, 4326, null; sdo_elem_info_array(1,1003,1), sdo_ordinate_array( 10.0,50.0, 10.1,50.0, 10.1,50.1, 10.0,50.1, 10.0,50.0 ) )
Geodaten in APEX-Anwendungen Visualisierung als Karte
Oracle MapViewer und Oracle Maps Geodaten in der Datenbank als Karte darstellen Installationsvarianten für APEX Eigene Oracle FMW MapViewer Installation Oracle elocation Service maps.oracle.com nutzen APEX Customers sind lizensiert! USE IT! APEX-Schnittstellen APEX Plugin Oracle Maps JavaScript API
Oracle Maps Utility Plugins
Oracle Maps APEX Plugin
Geodaten in APEX-Anwendungen Räumliche Abfragen
Umkreissuche SQL Operator SDO_WITHIN_DISTANCE SDO_GEOMETRY-Spalte muss indiziert sein Parameter SDO_GEOMETRY-Spalte, in der gesucht wird Geometrie, mit der gesucht wird Distanz und Einheit select * from table where sdo_within_distiance( t.geometry, start_geometry, 'distance=xx unit=km' ) = 'TRUE'
Nächste Nachbarn SQL Operator: SDO_NN SDO_GEOMETRY-Spalte muss indiziert sein Parameter SDO_GEOMETRY-Spalte, in der gesucht wird Geometrie, mit der gesucht wird Maximale Distanz und Einheit Maximale Anzahl Nachbarn select * from table where sdo_nn( t.geometry, start_geometry, 'distance=xx unit=km' ) = 'TRUE'
Fazit
Nutzen Sie Geodaten ab sofort! APEX und die Datenbank enthalten alles, was man braucht Datentyp für Geodaten: SDO_GEOMETRY Räumliche Funktionen in SQL and PL/SQL Oracle elocation Map Service Oracle elocation Geocoder Service APEX Plugins APEX Sample application
Carsten.Czarski@oracle.com 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