将图像插入到包含 ST_Raster 列的表中
要将栅格数据插入到 ST_Raster 类型的栅格列中,必须提供相应的数据源。除非数据源来自于其他 ST_Raster 列,否则必须将其转换为 ST_Raster 类型的格式。上述转换由 ST_Raster 构造函数完成。
ST_Raster 构造函数接受两个可能的数据源:TIFF 文件或者 ST_PixelData 对象。
使用三个支持的数据库管理系统的三个可能的数据源的 SQL INSERT 语句如下所示。
将一个 ST_Raster 列中的栅格值插入到其他 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