Einfügen von Bildern in eine Tabelle mit einer "ST_Raster"-Spalte

Um Raster-Daten in eine Raster-Spalte vom Typ "ST_Raster" einfügen zu können, müssen Sie eine geeignete Datenquelle angeben. Falls die Datenquelle nicht aus einer anderen "ST_Raster"-Spalte stammt, muss sie in das Format des "ST_Raster"-Typs konvertiert werden. Die Konvertierung wird mit dem "ST_Raster"-Konstruktor durchgeführt.

Für den "ST_Raster"-Konstruktor können zwei mögliche Datenquellen verwendet werden: eine TIFF-Datei oder ein "ST_PixelData"-Objekt.

Unten sind die INSERT-SQL-Anweisungen mit den drei möglichen Datenquellen jeweils für die drei unterstützten Datenbankmanagementsysteme aufgeführt.

Einfügen von Raster-Werten aus einer "ST_Raster"-Spalte in eine andere

Schritte:
  1. Fügen Sie die Ergebnisse der Abfrage einer vorhandenen "ST_Raster"-Spalte in eine andere "ST_Raster"-Spalte ein.

    Oracle

    INSERT INTO URBAN_AREA (RASTER,NAME) 
    SELECT RASTER,'BOSTON' 
    FROM BOSTON_AREA;

    PostgreSQL

    INSERT INTO urban_area (raster) 
    SELECT raster 
    FROM boston_area;

    SQL Server

    INSERT INTO urban_area (raster) 
    SELECT raster 
    FROM boston_area;

Konvertieren einer TIFF-Datei in ein "ST_Raster"

Schritte:
  1. Konvertieren Sie eine TIFF-Datei in den "ST_Raster"-Typ, indem Sie den "ST_Raster"-Konstruktor verwenden und in eine "ST_Raster"-Spalte einfügen.

    Oracle

    INSERT INTO URBAN_AREA 
    VALUES(SDE.ST_RASTER('C:\milwakee.tif','compression=lz77');

    PostgreSQL

    INSERT INTO urban_area 
    VALUES (st_raster('C:\milwaukee.tif','compression=lz77));

    SQL Server

    INSERT INTO urban_area 
    VALUES(st_raster::construct('C:\milwaukee.tif',NULL,'compression=lz77'));   
    VorsichtVorsicht:

    Stellen Sie sicher, dass der angegebene Pfad für den Server gültig ist, auf dem sich die Datenbank und die Datei befinden.

Konvertieren eines "ST_PixelData"-Werts in "ST_Raster"

Schritte:
  1. Konvertieren Sie einen "ST_PixelData"-Wert in einen "ST_Raster"-Wert, indem Sie den "ST_Raster"-Konstruktor verwenden und diesen in eine "ST_Raster"-Spalte einfügen.

    Oracle

    DECLARE
    data SDE.ST_PIXELDATA;
    BEGIN
    SELECT t.raster.getPixelData('level=1') INTO DATA FROM ALANTA
    t;
    INSERT INTO URBAN_AREA
    VALUES (sde.st_raster(data, 'compression=lz77'));
    END;
    /

    PostgreSQL

    DROP FUNCTION IF EXISTS insert_pixeldata();
    CREATE OR REPLACE FUNCTION insert_pixeldata()
    RETURNS void AS '
    DECLARE data st_pixeldata;
    BEGIN 
     SELECT getPixelData(image, 'level=1' ) 
     INTO data 
     FROM atlanta;
     INSERT INTO urban_area
     VALUES
     (st_raster(data,''compression=lz77''));
    END;'
    LANGUAGE plpgsql;
    SELECT insert_pixeldata();
     DROP FUNCTION IF EXISTS
    insert_pixeldata();

    SQL Server

    DECLARE
    @data ST_Pixeldata;
    SET @data =
    (SELECT image.getPixelData('level=1') FROM atlanta);
     INSERT INTO urban_area
     VALUES (ST_Raster::construct(NULL, @data,
     'compression=lz77'));

Verwandte Themen


7/10/2012