Workflow: Mosaikieren von Raster-Daten zu einem vorhandenen ST_Raster-Wert
Mit der SQL-Anweisung UPDATE und der ST_Raster-Funktion "Mosaik" können Sie Raster zu einem vorhandenen ST_Raster-Wert mosaikieren. Sie können eine Bilddatei, einen Ordner mit mehreren Bildern oder Werte aus einer anderen ST_Raster-Spalte als Eingabe verwenden, um Raster zu einem vorhandenen Wert zu mosaikieren.
Bevor Sie Raster zu einem vorhandenen Wert mosaikieren können, müssen Sie die Colormap jedoch aus dem vorhandenen ST_Raster-Wert entfernen. Nach der Mosaikierung können Sie die Colormap dem ST_Raster-Wert wieder hinzufügen.
Die Beispiele in diesem Thema zeigen, wie Sie eine Colormap aus bestimmten Datensätzen in der Tabelle "urban_area" entfernen, Raster zu den Raster-Werten in diesen Datensätzen mosaikieren und dann erneut eine Colormap anwenden.
Entfernen einer Colormap
Verwenden Sie die ST_Raster-Funktion "deleteColormap", um eine Colormap aus einem ST_Raster-Wert zu entfernen.
Dies muss vor dem Mosaikieren zusätzlicher Raster zu den Raster-Werten in der angegebenen Tabelle erfolgen.
-
Mit der SQL-Anweisung UPDATE und der Funktion "deleteColormap" können Sie die Colormap aus Raster-Werten in den Zeilen in der Tabelle "urban_area" entfernen, deren Namenswert ALL_CITIES entspricht.
Oracle
UPDATE URBAN_AREA t SET RASTER = t.raster.deleteColormap() WHERE NAME = 'ALL_CITIES';
PostgreSQL
UPDATE urban_area SET raster = deleteColormap(raster) WHERE name = 'all_cities';
SQL Server
UPDATE urban_area SET raster = deleteColormap() WHERE name = 'all_cities';
Nach der erfolgreichen Ausführung von "deleteColormap" wird der Raster-Wert in Graustufen und nicht als Colormap-Wert gerendert.
Mosaikieren zusätzlicher Raster-Daten zu einem vorhandenen ST_Raster-Wert
Die Mosaikierung fügt iterativ weitere Raster-Daten zu einem vorhandenen Raster-Wert hinzu. Auf diese Weise kann ein Raster-Wert auf viele Terabyte wachsen. Der Raster-Wert wird nur von der Speichergröße des Datenbankmanagementsystems (DBMS) eingeschränkt.
Beispiel 1: Einfügen aller Raster in einem Ordner zu einer ST_Raster-Spalte
Sie können die Option "Rekursiv" der Funktion "Mosaik" in der SQL-Anweisung UPDATE verwenden, um den angegebenen Ordner immer wieder nach einem angegebenen Dateityp zu durchsuchen. In diesen Beispielen wird der Ordner "cities" rekursiv nach allen Dateien mit der Erweiterung .tif durchsucht. Diese Dateien werden dann zum Raster-Wert mosaikiert, der als "all_cities" in der Tabelle "urban_area" identifiziert wurde.
-
Mosaikieren Sie alle .tif-Dateien in einem bestimmten Ordner mit der Funktion "Mosaik" und der Option "Rekursiv" zu einem vorhandenen ST_Raster-Wert.
Oracle
UPDATE URBAN_AREA t SET RASTER = t.raster.mosaic('E:\cities\*.tif', 'recursive,log=E:\log.txt') WHERE NAME = 'ALL_CITIES';
PostgreSQL
UPDATE urban_area SET raster = mosaic(image,'E:\data\*.tif', 'recursive,log=E:\log.txt') WHERE name = 'all_cities';
SQL Server
UPDATE urban_area SET raster = raster.mosaic('E:\data\*.tif',NULL, 'recursive,log=E:\log.txt') WHERE name = 'all_cities';
Beispiel 2: Extrahieren von ST_PixelData und Hinzufügen zu einer ST_Raster-Spalte
Die erste Pyramidenebene der Pixel der Raster-Spalte der Tabelle "japan", deren Namensspaltenwert "tokyo" ist, wird zur Raster-Spalte der Tabelle "urban_area" mosaikiert, deren Namensspaltenwert "all_cities" ist. In diesem Fall extrahiert die ST_Raster-Funktion "getPixelData" den ST_PixelData-Wert aus dem ST_Raster-Wert in die vordefinierte ST_PixelData-Variable "data". Die Variable wird dann an den ST_Raster-Konstruktor übergeben, um sie wieder in das ST_Raster-Format zu konvertieren.
-
Verwenden Sie die Funktion "getPixelData", um einen ST_PixelData-Wert aus dem ST_Raster-Wert in der Tabelle "japan" zu extrahieren und ihn zu einem Raster-Wert in der Tabelle "urban_area" hinzuzufügen.
Oracle
DECLARE data ST_PIXELDATA; BEGIN SELECT t.raster.getPixelData('level=1') INTO data FROM JAPAN t WHERE NAME = 'TOKYO'; UPDATE URBAN_AREA t SET image = t.raster.mosaic(data,'log=E:\log.txt') WHERE NAME = 'ALL_CITIES'; END; /
PostgreSQL
DROP FUNCTION IF EXISTS mosaic_from_pixeldata(); CREATE OR REPLACE FUNCTION mosaic_from_pixeldata() RETURNS integer AS ' DECLARE data sde.st_pixeldata; BEGIN SELECT getPixelData(image) INTO data FROM japan WHERE name = 'tokyo'; UPDATE urban_area SET raster = mosaic(raster,data,''log=E:\log.txt'') WHERE name = ''all_cities''; END;' LANGUAGE plpgsql; SELECT mosaic_from_pixeldata(); DROP FUNCTION IF EXISTS mosaic_from_pixeldata();
SQL Server
DECLARE @data ST_PIXELDATA; SET @data = (SELECT raster.getPixelData('level=1') FROM japan WHERE name = 'tokyo'); UPDATE urban_area SET raster = raster.mosaic(NULL,@data,'log=E:\log.txt');
Anwenden einer Colormap auf den aktualisierten ST_Raster-Wert
Nach der Aktualisierung des ST_Raster-Wertes können Sie eine Colormap erneut anwenden, um die Farben zur Anzeige des Raster-Wertes zu definieren. Verwenden Sie die Funktion "setColormap", um eine Colormap erneut auf das Raster anzuwenden.
Für die Funktion "setColormap" ist eine TIFF-Bilddatei als Eingabe erforderlich. In den folgenden Beispielen wird die Colormap der citycolors.tif-Datei verwendet, um den Raster-Werten in der Tabelle "urban_area" eine Colormap für alle Zeilen hinzuzufügen, die über den Namenswert "all_cities" verfügen.
-
Verwenden Sie die SQL-Anweisung UPDATE und die citycolors.tif-Bilddatei, um Datensätzen in der Tabelle "urban_area" eine Colormap hinzuzufügen, deren Namenswert "all_cities" ist.
Oracle
UPDATE URBAN_AREA t SET raster = t.raster.setColormap('/net/gis/gis1/citycolors.tif') WHERE name = 'ALL_CITIES';
PostgreSQL
UPDATE urban_area SET raster = setColormap(raster,'/net/gis/gis1/citycolors.tif') WHERE name = 'all_cities';
SQL Server
UPDATE urban_area SET raster = raster.setColormap('/net/gis/gis1/citycolors.tif') WHERE name = 'all_cities';