根據柵格影像的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 | 是否使用分Block Storage。 | 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;