Oracle Datenbanken mit Oracle Spatial Erweiterung ermöglichen es, Rasterlayer als SDO_GEORASTER Objekte zu speichern. In QGIS existiert das Oracle GeoRaster Plugin. Es basiert auf der GDAL Bibliothek und setzt voraus, dass eine entsprechende Oracle Datenbank auf ihrem Rechner läuft. Obwohl Oracle keine freie Software ist, stellen Sie ihre Software für Entwickler und zu Testzwecken kostenlos zur Verfügung. Ein einfaches Beispiel, wie man über GDAL ein Raster in eine Oracle Datenbank laden kann sieht folgendermaßen aus:
$ gdal_translate -of georaster input_file.tif geor:scott/tiger@orcl
Das Raster wird in diesem Beispiel in die Standard GDAL_IMPORT Tabelle als Spalte mit dem Namen RASTER geladen.
Als erstes muss das Oracle GeoRaster Plugin mit dem Plugin Manager geladen werden (siehe Kapitel Kern-Plugins laden). Wenn Sie zum ersten Mal ein GeoRaster in QGIS laden wollen, müssen Sie zuvor eine Verbindung zu der Oracle Datenbank erstellen, in der sich die Daten befinden. Hierzu klicken Sie auf das Oracle Spatial GeoRaster wählen Icon in der Werkzeugleiste. In dem Dialog klicken Sie auf [Neu] und geben dann die notwendigen Verbindungsparameter ein (siehe Abbildung Figure_oracle_raster_1):
Name: Geben Sie einen Namen für die Datenbankverbindung an
Datenbankinstanz: Geben Sie den Namen der Datenbank an, mit der Sie sich verbinden wollen
Benutzername: Geben Sie den Benutzernamen an, mit dem Sie auf die Datenbank zugreifen wollen
Passwort: Das Passwort für den Benutzernamen, um auf die Datenbank zuzugreifen
Figure Oracle Raster 1:
Zurück im Hauptfenster des Oracle Spatial GeoRaster Plugins (siehe Abbildung Figure_oracle_raster_2), wählen Sie die Dropdown Liste, um die neue Verbindung auszuwählen und klicken dann auf [Verbinden], um die Verbindung herzustellen. Sie können die Verbindung auch nochmals [Bearbeiten] und Veränderungen vornehmen oder mit dem Knopf [Löschen] die Verbindung aus der Dropdown Liste entfernen.
Wenn die Verbindung zur Datenbank steht, werden im Fenster ‘Unterdaten’ die Namen aller Tabellen in Form eines GDAL ‘subdataset’ angezeigt, in denen GeoRaster Spalten vorliegen.
Wählen Sie einen der ‘subdatasets’ und klicken dann auf [Wählen], um den Tabellennamen auszuwählen. Daraufhin erscheint eine weitere Liste mit den GeoRaster Spalten, die sich in der Tabelle befinden. Dies ist normalerweise eine kurze Liste, da es eher selten vorkommt, dass mehr als ein oder zwei GeoRaster Spalten in einer Tabelle abgelegt sind.
Wählen Sie wieder einen der ‘subdatasets’ und klicken auf [Wählen], um eine Tabellen/Spalten Kombination auszusuchen. Der Dialog zeigt die Zeilen, die GeoRaster Objekte enthalten. Beachten Sie, dass in der Liste der ‘subdatasets’ nun die Rasterdatentabelle und Raster Id Paare angezeigt werden.
Es ist übrigens zu jeder Zeit möglich, die Auswahl zu editieren, um so direkt zu einem bereits bekannten GeoRaster oder zurück zum Anfang zu gelangen.
Figure Oracle Raster 2:
Der Auswahlbereich kann auch dazu verwendet werden, um eine Where-Abfrage am Ende der Identifikation hinzuzufügen, z.B.: geor:scott/tiger@orcl,gdal_import,raster,geoid=. Weitere Informationen finden Sie unter der URL http://www.gdal.org/frmt_georaster.html.
Schließlich, wenn Sie aus der Liste der ‘subdatasets’ die Rasterdatentabelle und Raster Id Paare ausgewählt haben, wird das entsprechende GeoRaster in QGIS geladen.
Der Dialog Auswählen eines Oracle GeoRasters kann nun geschlossen werden. Beim nächsten Aufruf wird die Verbindung wieder angezeigt mit derselben Liste vorhandener ‘subdatasets’, so dass es einfach ist, weitere GeoRasters zu laden.
Bemerkung
GeoRaster, die mit Pyramiden abgelegt sind, werden in QGIS wesentlich schneller visualisiert. Die Pyramiden müssen aber im Vorfeld und außerhalb von QGIS mit Oracle PL/SQL oder gdaladdo erstellt werden.
Beispiel zum Erstellen von Pyramiden mit gdaladdo:
gdaladdo georaster:scott/tiger@orcl,georaster\_table,georaster,georid=6 \
-r nearest 2 4 6 8 16 32
Beispiel zum Erstellen von Pyramiden mit PL/SQL:
$ sqlplus scott/tiger
SQL> DECLARE
gr sdo_georaster;
BEGIN
SELECT image INTO gr FROM cities WHERE id = 1 FOR UPDATE;
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');
UPDATE cities SET image = gr WHERE id = 1;
COMMIT;
END;