根據柵格影像的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;