根据栅格影像的RPC(Rational Polynomial Coefficients)参数对栅格进行校正操作,返回校正后的栅格对象。

语法

raster ST_RPCRectify(raster rast,
 raster dem default NULL,
                    cstring rectifyOption default '{}',
                    cstring storageOption default '{}',
   cstring parallelOption default '{}')

参数

参数名称 描述
rast 需要校正的Raster对象。
dem 校正所参考的DEM栅格对象。如不需要请传入NULL。
rectifyOption JSON字符串校正选项。
storageOption 返回结果的存储选项,格式为JSON字符串。
parallelOption JSON字符串的并行选项。

描述

说明 栅格对象必须具备RPC相关信息。

rectifyOption为JSON格式的字符串数组,每个子JSON对象指定参数如下:

参数名称 描述 类型 默认值 说明
resample 重采样方式 string 'Near' 栅格重采样方式,仅支持如下几种:
  • Near
  • Average
  • Cubic
  • Bilinear
outSrid 结果栅格空间参考 integer 与原Raster一致
nodataValue 按波段指定新的nodata值。 float8

float8[]

NULL nodataValue可指定为单个值或数组。
  • 如果指定为单个值表示输出栅格对象的所有波段使用同一个nodata值。
  • 如果指定为数组[0, 0, 0],则数组元素个数必须与栅格的波段数一致。
  • 如不指定则优先使用原栅格数据nodata,如原栅格无nodata值,使用0作为nodata。
RPC_DEM_MISSING_VALUE 当DEM值为nodata或栅格数据在DEM范围外时使用的高程值。 float8 0

storageOption参数如下:

参数名称 描述 类型 默认值 说明
chunking 是否使用分块存储。 boolean 与原Raster一致
chunkdim 分块的维度信息。 string 与原Raster一致 只有chunking参数为true时,该参数有效。
chunktable 分块表名称。 string '' 如果传入''值,则会在当前会话中创建一个随机表名的临时表用于存放转换后的Raster对象。该临时表只在当前会话中有效,会话结束后临时表也会随之删除。如果需要保存转换后的Raster对象,则需要指定具体表名。

如果您使用的并行方式不支持匿名表,则需要提前创建表。

compression 压缩算法类型。 string 与原Raster一致 目前仅支持如下类型:
  • NONE
  • JPEG
  • ZLIB
  • PNG
  • LZO
  • LZ4
  • JP2K
quality 压缩质量。 integer 与原Raster一致 仅针对JPEG和压缩算法。
interleaving 交错方式。 string 与原Raster一致 仅支持如下几种方式:
  • bip:Band interleaved by pixel
  • bil:Band interleaved by line
  • bsq:Band Sequential
endian 字节序。 string 与原Raster一致 仅支持如下几种:
  • NDR:Little endian
  • XDR:Big endian

示例

CREATE TABLE if not exists raster_table(id integer, rast raster);

-- RPC栅格数据
INSERT INTO raster_table values(1, ST_ImportFrom('t_chunk','<RAST_DATA_DIR>/rpc.tif', '{}'));

-- DEM数据
INSERT INTO raster_table values(2, ST_ImportFrom('t_chunk','<RAST_DATA_DIR>/rpc_dem.tif', '{}'));

CREATE TABLE raster_result(id integer, rast raster);

--不指定dem,使用最邻近采样
INSERT INTO raster_result(id, rast) 
select 10, ST_RPCRectify(rast,
                       NULL,    
                         '{"resample":"Near"}',
                         '{"chunking":true,"chunkdim":"(256,256,1)","interleaving":"bsq","chunktable":"t_chunk"}') 
from raster_table 
where id =1;

--指定dem,使用最邻近采样,输出srid为32635,并使用并行计算
INSERT INTO raster_result(id, rast) 
select 11, ST_RPCRectify(rast,
                       (SELECT rast FROM raster_table WHERE id = 2),    
                         '{"resample":"Near", "outSrid": 32635}',
                         '{"chunking":true,"chunkdim":"(256,256,1)","interleaving":"bsq","chunktable":"t_chunk"}',
                         '{"parallel": 8}') 
from raster_table 
where id =1;