将 ST_PixelData 从 ST_Raster 列提取到 ST_PixelData 列中

可以使用 ST_Raster getPixelData 函数从 ST_Raster 值提取 ST_PixelData 值。该值可以插入 ST_Pixeldata 中或者可以提取到 ST_PixelData 变量中。

步骤:
  1. 使用 SELECT 语句从 ST_Raster 提取 ST_PixelData 值。

    如果在 INSERT 语句中加入 SELECT 语句,那么提取出的 ST_PixelData 结果将被插入到指定的列中。

    在下面的示例中,第一级的 ST_PixelData 值从 urban_area 表的 ST_Raster 列提取出来,并插入到像素表的 ST_PixelData 列的 pdata 中。

    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 方法从 urban_area 表的 ST_Raster 列将 ST_PixelData 提取到 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/7/2012