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
-
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"
-
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'));
Vorsicht: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"
-
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'));