将图像插入到包含 ST_Raster 列的表中

要将栅格数据插入到 ST_Raster 类型的栅格列中,必须提供相应的数据源。除非数据源来自于其他 ST_Raster 列,否则必须将其转换为 ST_Raster 类型的格式。上述转换由 ST_Raster 构造函数完成。

ST_Raster 构造函数接受两个可能的数据源:TIFF 文件或者 ST_PixelData 对象。

使用三个支持的数据库管理系统的三个可能的数据源的 SQL INSERT 语句如下所示。

将一个 ST_Raster 列中的栅格值插入到其他 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/7/2012