根据栅格影像的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' | 栅格重采样方式,仅支持如下几种:
|
outSrid | 结果栅格空间参考 | integer | 与原Raster一致 | 无 |
nodataValue | 按波段指定新的nodata值。 | float8
float8[] |
NULL | nodataValue可指定为单个值或数组。
|
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一致 | 目前仅支持如下类型:
|
quality | 压缩质量。 | integer | 与原Raster一致 | 仅针对JPEG压缩算法。 |
interleaving | 交错方式。 | string | 与原Raster一致 | 仅支持如下几种方式:
|
endian | 字节序。 | string | 与原Raster一致 | 仅支持如下几种:
|
示例
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;