ST_Raster 列の ST_PixelData の ST_PixelData 列へのフェッチ

ST_Raster の getPixelData 関数を使用して ST_Raster 値から ST_PixelData 値を抽出できます。この値は、ST_Pixeldata 列に挿入することも、ST_PixelData 変数にフェッチすることもできます。

手順:
  1. SELECT ステートメントを使用して、ST_PixelData 値を ST_Raster 値から抽出します。

    INSERT ステートメントの内側に SELECT ステートメントを置いた場合、抽出した ST_PixelData の結果は指定した列に挿入されます。

    以下の例では、第 1 レベルの ST_PixelData 値が urban_area テーブルの ST_Raster 列からフェッチされて、pixels テーブルの pdata という ST_PixelData 列に挿入されます。

    Oracle

    INSERT INTO PIXELS (pdata)
    SELECT t.raster.getPixelData('level=1')
    FROM URBAN_AREA t
    WHERE t.raster.raster_id = 1;

    PostgreSQL

    INSERT INTO pixels (pdata)
    SELECT getPixelData(raster,'level=1')
    FROM urban_area
    WHERE raster_id(raster) = 1;

    SQL Server

    INSERT INTO pixels (pdata)
    SELECT raster.getPixelData('level=1')
    FROM urban_area
    WHERE raster.raster_id = 1;

    以下の例では、ST_Raster の getPixelData メソッドを使用して、ST_PixelData 値が urban_area テーブルの ST_Raster 列から ST_PixelData 変数にフェッチされます。

    Oracle

    DECLARE
    p sde.st_pixeldata;
    BEGIN
     SELECT t.raster.getPixelData() INTO p
     FROM URBAN_AREA t
     WHERE t.raster.rasterid = 1;
    END;
    /

    PostgreSQL

    DROP FUNCTION IF EXISTS fetch_pixeldata();
    
    CREATE OR REPLACE FUNCTION fetch_pixeldata()
    RETURNS integer AS '
    
    DECLARE p st_pixeldata;
    BEGIN
     SELECT getPixelData(raster) INTO p
     FROM urban_area
     WHERE raster_id(raster) = 1;
    END;'
    LANGUAGE plpgsql;
     
    SELECT edit_pixeldata();
    DROP FUNCTION IF EXISTS fetch_pixeldata();

    SQL Server

    DECLARE @p ST_PIXELDATA;
    SET @p = (SELECT raster.getPixelData(NULL)
              FROM urban_area
              WHERE raster.raster_id = 1);

関連項目


3/6/2012