ST_Raster 列を持つテーブルに対する画像の挿入
ST_Raster タイプのラスタ列にラスタ データを挿入するには、適切なデータ ソースを指定する必要があります。データ ソースが別の ST_Raster 列である場合を除いて、データ ソースは ST_Raster タイプの形式に変換する必要があります。この変換は ST_Raster コンストラクタによって実行されます。
ST_Raster コンストラクタは、TIFF ファイルまたは ST_PixelData オブジェクトという 2 種類のデータ ソースを受け付けます。
以下に、サポート対象の 3 つのデータベース管理システムそれぞれについて、3 種類のデータ ソース用の SQL INSERT ステートメントの例を示します。
別の ST_Raster 列からラスタ値を挿入
手順:
-
既存の ST_Raster 列のクエリ結果を別の ST_Raster 列に挿入します。
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;
TIFF ファイルを ST_Raster に変換
手順:
-
ST_Raster コンストラクタを使用して TIFF ファイルを ST_Raster タイプに変換し、それを ST_Raster 列に挿入します。
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'));
注意:指定したパスが、データベースとファイルの存在するサーバで有効であることを確認してください。
ST_PixelData 値を ST_Raster に変換
手順:
-
ST_Raster コンストラクタを使用して ST_PixelData 値を ST_Raster 値に変換し、それを ST_Raster 列に挿入します。
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'));
関連項目
7/10/2012