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