ST_Raster 列を持つテーブルに対する画像の挿入

ST_Raster タイプのラスタ列にラスタ データを挿入するには、適切なデータ ソースを指定する必要があります。データ ソースが別の ST_Raster 列である場合を除いて、データ ソースは ST_Raster タイプの形式に変換する必要があります。この変換は ST_Raster コンストラクタによって実行されます。

ST_Raster コンストラクタは、TIFF ファイルまたは ST_PixelData オブジェクトという 2 種類のデータ ソースを受け付けます。

以下に、サポート対象の 3 つのデータベース管理システムそれぞれについて、3 種類のデータ ソース用の SQL INSERT ステートメントの例を示します。

別の ST_Raster 列からラスタ値を挿入

手順:
  1. 既存の 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 に変換

手順:
  1. 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 に変換

手順:
  1. 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'));

関連項目


3/6/2012