Workflow: Mosaikieren von Raster-Daten zu einem vorhandenen ST_Raster-Wert

Komplexität: Fortgeschritten Erforderliche Daten: Eigene Daten verwenden Ziel: Entfernen Sie mithilfe der SQL-Anweisung UPDATE eine Colormap aus ST_Raster-Werten in bestimmten Datensätzen in der Tabelle "urban_area", mosaikieren Sie Raster zu den Raster-Werten in diesen Datensätzen, und wenden Sie dann erneut eine Colormap auf dieselben Werte an.

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.

Schritte:
  1. 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.

Schritte:
  1. 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.

Schritte:
  1. 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.

Schritte:
  1. 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';

Verwandte Themen


3/6/2012