Oracle10g GeoRaster

Werbung
Oracle10g GeoRaster
Haitham Zyadeh
Senior Sales Consultant
Server Technology Competence Center
Düsseldorf
Oracle Deutschland GmbH
Spatial in Oracle10g
Topology Data Model
–
Unterstützung für topologische Beziehungen (Verwaltung von Flächen
und Teilgebieten)
Network Data Model
–
Speicherung von Netzwerken (Graphen)
GeoRaster Data Model
–
Verwaltung von Rasterdaten
Geocoding
–
Funktionen zur Umwandlung von Adressen in Koordinaten
Spatial Analytic Functions
–
Erzeugung von räumlichen Beziehungen
Rasterdaten vs. Vektordaten
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
Rasterdaten vs. Vektordaten
Vektordaten
–
–
–
Präzise Repräsentation von Punkten, Linien oder Polygonen
Kompakte Form -> effiziente Speicherung
Vorteile
Rendering von Land-/Straßenkarten
Verbindungen bzw. Zusammenhänge zwischen Objekten
Rasterdaten:
–
–
–
Viele Zellen approximieren Punkte, Linien oder Polygone
Speicherung der vollen Matrix -> hoher Platzbedarf
Vorteile
Leicht zu zeichnen, da pixelorientiert
Darstellung vieler Details (Satellitenfotos)
Rasterdaten in Oracle10g
Oracle10g GeoRaster
Neue Datentypen
–
–
SDO_GEORASTER
SDO_RASTER
Geokoordinaten
–
Zusammenhang zwischen Rasterdaten und Geokoordinaten
in der Datenbank
Funktionalitäten
–
–
–
Importieren / Laden von Rasterdaten
Bearbeiten von Rasterdaten
Visualisierung
Speicherung der Rasterdaten
Datenmodell
GEORASTER-Tabelle (Metadaten)
Raster
SDO_GEORASTER
Rasterdaten-Tabelle (Daten)
Rasterblock
Rasterblock
Rasterblock
SDO_RASTER
Speicherung der Rasterdaten
Georaster-Tabelle (SDO_GEORASTER)
–
–
Eine Zeile pro Raster
Metadaten
"Spatialextent"
Auslösungs-Pyramiden
Name der Rasterdatentabelle
Raster
SDO_GEORASTER
Rasterdatentabelle (SDO_RASTER)
–
–
–
Eine Zeile pro Rasterblock -> mehrere Zeilen pro Raster
Inhalt: Rasterdatenblöcke als BLOB
Achtung: Datenkompression
Verfügbar erst mit 10g Release 2
Rasterblock
Rasterblock
Rasterblock
SDO_RASTER
Georaster Datentypen
SQL> desc SDO_GEORASTER
Name
Null?
-------------------------- -------RASTERTYPE
SPATIALEXTENT
RASTERDATATABLE
RASTERID
METADATA
Type
-----------------NUMBER
MDSYS.SDO_GEOMETRY
VARCHAR2(32)
NUMBER
SYS.XMLTYPE
SQL> desc SDO_RASTER
Name
Null?
-------------------------- -------RASTERID
PYRAMIDLEVEL
BANDBLOCKNUMBER
ROWBLOCKNUMBER
COLUMNBLOCKNUMBER
BLOCKMBR
RASTERBLOCK
Type
-----------------NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
MDSYS.SDO_GEOMETRY
BLOB
Speicherung der Rasterdaten
Datenmodell
GEORASTER-Tabelle (Metadaten)
Raster
SDO_GEORASTER
Rasterdaten-Tabelle (Daten)
Rasterblock
Rasterblock
Rasterblock
Weitere Informationen
VAT, GCP, etc.
SDO_RASTER
BLOBs
...
Speicherung der Rasterdaten
Blocking
Rasterdateien können extrem groß werden
Effizientere Speicherung in kleineren Blöcken
GeoRaster erlaubt das "Blocking" anhand …
–
"Bands", "Zeilen", "Spalten"
Beispiel
–
–
Vor dem Laden: 1 (große) Rasterdatei
Nach dem Laden: 4 (kleinere) Blöcke
Blocking "4 x 4"
Speicherung der Rasterdaten
Blocking
Erzeugung von 4 Blöcken beim Laden des Rasters
GEORASTER-Tabelle (Metadaten)
Raster
SDO_GEORASTER
Rasterdaten-Tabelle (Daten)
Rasterblock
Rasterblock
Rasterblock
Rasterblock
SDO_RASTER
Georeferenzierung
Raster
"Spatial-Extent":
Zuordnung des Rasters zu
einem Koordinatensystem
X
Y
GeoRaster Spatial
Reference System
(SRS)
Breitengrade
National
Park
Restaurant
Längengrade
Georeferenzierung
"Spatialextent"
Spatial Extent zu einem Raster abrufen
Koordinatensystem: GK Zone 3 (DHDN)
select e.georaster.spatialextent
from georaster_table e
where georid=1;
GEORASTER.SPATIALEXTENT(SDO_GTYPE, SDO_SRID, SDO_POINT(
------------------------------------------------------SDO_GEOMETRY(2003, 82027, NULL, SDO_ELEM_INFO_ARRAY(1,
1003, 1), SDO_ORDINATE_ARRAY(3699985.79, 5969990.98, 36
99985.79, 5929975.35, 3699985.79, 5889990.98, 3740001.4
2, 5889990.98, 3779985.79, 5889990.98, 3779985.79, 5929
975.35, 3779985.79, 5969990.98, 3740001.42, 5969990.98,
3699985.79, 5969990.98))
Auflösungspyramiden
Level 2
Vorberechnung von Ansichten der Rasterdaten
mit geringerer Auflösung
Höhere "Pyramidenebene" bedeutet geringere
Auflösung
Level 0
sdo_geor.generatePyramid(
georaster => gr,
pyramidparams =>
'rlevel=2, resampling=NN'
);
Level 1
Ebene 0: Originaldaten
Wertetabelle
Zuordnung der Zahlenwerte im Raster zu Attributen
Normale relationale Tabelle
sdo_geor.setVAT(
georaster => gr,
layernumber => 0,
vatname => 'MY_VAT_TAB'
);
Wertetabelle (Value Attribute Table)
WERT
1
2
3
0
BEDEUTUNG
niedrige Verschmutzung
mittlere Verschmutzung
hohe Verschmutzung
keine Daten
Rasterdaten …
2 2 2 2 1 2 2
1 1 1 1 1 1 2
1 3 2 2 2 3 1
3 1 0 3 3 1 2
3 3 3 1 1 2 2
0 3 3 3 1 1 1
0 3 3 1 1 1 0
0 0 2 1 1 0 0
2
2
1
1
1
0
0
0
Farbtabelle
Falschfarbendarstellung
Farbzuordnung für jeden Wert im Raster
Angabe von RGB-Werten
sdo_geor.setColorMapTable(
georaster => gr,
layernumber => 0,
tablename => 'MY_COLOR_TAB'
);
CELL VALUE
1
2
Red
255
82
Green
255
123
3
0
142
0
230
0
Blue
0
67
98
0
Falschfarbendarstellung am Beispiel
Falschfarbendarstellung am Beispiel
Darstellen von Zellwerten
und Ändern der RGB-Farben
je Layer
Visualisierung der Rasterdaten
OracleAS MapViewer
GeoRaster Setup - Syntaxbeispiele
1. Schritt: Anlegen der Rastertabelle
CREATE TABLE MY_RASTER_TAB(
ID
NUMBER PRIMARY KEY,
SOURCE_FILE VARCHAR2(80),
DESCRIPTION VARCHAR2(32),
GEORASTER
SDO_GEORASTER
)
call SDO_GEOR_UTL.createDMLTrigger('MY_RASTER_TAB','GEORASTER')
2. Schritt: Anlegen der Rasterdatentabelle
CREATE TABLE RDT_1 OF SDO_RASTER(
PRIMARY KEY (
RASTERID, PYRAMIDLEVEL, BANDBLOCKNUMBER,
ROWBLOCKNUMBER, COLUMNBLOCKNUMBER
)
) LOB(RASTERBLOCK) STORE AS (NOCACHE NOLOGGING);
GeoRaster Setup - Syntaxbeispiele
3. Schritt: Initialisierung der Raster-Objekte
–
Erzeugung "leerer" Rasterobjekte
INSERT INTO MY_RASTER_TAB (ID, GEORASTER)
VALUES (1, SDO_GEOR.INIT('RDT_1', 1));
:
:
INSERT INTO MY_RASTER_TAB (ID, GEORASTER)
VALUES (4, SDO_GEOR.INIT('RDT_1', 100));
Rasterdaten laden ...
Unterstützte Formate
–
–
–
–
–
TIFF mit "World File"
JPEG
GIF
BMP
PNG
Unterstützte Wege
–
–
–
Außerhalb der Datenbank
GeoRasterLoader (Java-Werkzeug)
In der Datenbank:
PL/SQL Paket SDO_GEOR
3rd-Party Werkzeuge
Beispiel: PCI Geomatics
GeoRaster Setup – Syntaxbeispiele
GeoRasterLoader
Beispielaufruf von der Kommandozeile
java -Xms900M -Xmx900M GeoRasterLoader
127.0.0.1 orcl101 1521 georaster georaster
thin 32 T
JDBC connection
parameters
my_raster_tab georaster
Table and column
"blocking=true,blocksize=(512,512,1)"
Raster blocking
"../images/image01.tif"
Source file
1 "RDT_1"
Raster id and data
table
GeoRaster Setup – Syntaxbeispiele
Laden mit PL/SQL Paket SDO_GEOR
declare
g sdo_georaster;
begin
select georaster into g from my_raster_tab
where id = 1 for update;
sdo_geor.importFrom(
georaster =>
g,
storageparam =>
'blocksize=(512,512)',
r_sourceformat => 'TIFF',
r_sourcetype =>
'file',
r_sourcename =>
'../images/image01.tif',
h_sourceformat => 'WORLDFILE',
h_sourcetype =>
'file',
h_sourcename =>
'../images/image01.tfw',
);
update my_raster_tab set georaster = g
where id = 1;
end;
Raster sperren
Importieren
Update Raster
GeoRaster Setup – Syntaxbeispiele
Auflösungspyramide generieren
declare
geor sdo_georaster;
begin
select georaster into geor from my_raster_tab Raster sperren
where id = 1 for update;
sdo_geor.generatePyramid(
georaster => geor,
pyramidparams => 'rlevel=4'
);
update my_raster_tab
set georaster = geor
where id = 1;
end;
Auflösungspyramide
generieren
Update Raster
GeoRaster Setup – Syntaxbeispiele
Teile aus dem Raster extrahieren …
PL/SQL Prozedur
BLOB als OUT-Parameter
sdo_geor.getRasterSubset(
georaster => g,
pyramidlevel => 0,
layernumbers => '1-3',
window => sdo_geometry(
2003, 8307, null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(
-4.8095747, 50.3160369,
-3.4189001, 50.7910561
)
),
rasterBlob => b
);
GeoRaster Setup – Syntaxbeispiele
Teile aus dem Raster extrahieren …
java -Xms900M -Xmx900M GeoRasterExporter
127.0.0.1 orcl101 1521
georaster georaster
thin 32 T
JDBC Parameter
my_raster_tab georaster
Tabelle
"1,RDT_1"
Raster ID
"JPEG"
Ausgabeformat
raster_1_p0_0_0.500_500
Dateiname
"pLevel=0,cropArea=(0,0,500,500)"
Formatierung
GeoRaster Setup – Syntaxbeispiele
Fazit
Oracle10g unterstützt Raster- und Vektordaten
–
–
–
–
–
–
–
Laden
Indizieren (Spatial Indizes)
Georeferenzierung
Auflösungspyramiden
Bearbeiten
Visualisieren (MapViewer)
Exportieren
Anwendungsintegration
–
Oracle HTML DB als Beispiel
Q U E S T
A N S W
I O N S
E R S
Herunterladen