將指定的raster對象進行鑲嵌操作,合并成為一個新的raster對象。
文法
raster ST_MosaicFrom(
raster source[],
cstring chunkTableName,
cstring storageOption default '{}',
cstring mosaicOption default '{}'
);
參數
參數名稱 | 描述 |
source | 需要拼接的源raster對象。 |
chunkTableName | 拼接完成的塊表名稱,必須符合資料庫表名規範。 |
storageOption | JSON字串表示的返回結果的儲存選項。 |
mosaicOption | JSON字串表示的返回結果的鑲嵌操作選項。 |
storageOption是基於JSON格式的字串,描述raster對象分Block Storage資訊。支援的參數如下:
參數名稱 | 描述 | 類型 | 預設值 | 說明 |
chunking | 是否使用分Block Storage | boolean | 與參考影像一致 | / |
chunkdim | 分塊的維度資訊 | string | 與參考影像一致 | 在chunking=true下才有效,格式為: |
interleaving | 交錯方式 | string | 與參考影像一致 | 必須是以下一種:
|
compression | 壓縮演算法類型 | string | 與參考影像一致 | 目前只支援:
|
quality | 壓縮品質 | integer | 與參考影像一致 | 只針對jpeg/jp2k壓縮演算法。 |
mosaicOption是基於JSON格式的字串,描述鑲嵌演算法的具體資訊。支援的參數如下:
參數名稱 | 描述 | 類型 | 預設值 | 說明 |
srid | 輸出柵格對象的空間參考SRID值 | integer | 左上方影像srid | srid與cell_size必須同時指定。 |
cell_size | 輸出柵格對象像素大小 | float8[] | 左上方影像cell_size |
|
resample | 重採樣方式 | text | 'Near' | 柵格重採樣方式,支援:
|
nodata | 源影像的nodata值是否有效 | bool | false |
|
nodataValue | 按波段指定新的nodata值 | float8 float8[] | NULL | nodataValue可指定為單個值或數組;如果指定為單個值表示輸出柵格對象的所有波段使用同一個nodata值;如果指定為數組,則數組元素個數必須與柵格的波段數一致。 |
color_balance | 是否勻色 | bool | false | 設定是否進行勻色。 |
step | 勻色計算步長 | integer | 0.1 | color_balance為true時有效,步長越大,可以更快地獲得結果,但可能無法得到最優解。 |
iteration | 勻色計算迭代次數 | integer | 50000 | color_balance為true時有效,迭代次數越多勻色效果越好,但會增加耗時。 |
parallel | 並行度 | integer | 1 | 設定作業並行度。取值範圍為1~64。 |
描述
鑲嵌函數會建立一個新的raster對象。
所有指定的raster對象需要滿足以下條件:
具有相同的波段數。
所有的raster對象要麼都進行了地理參考,要麼都不是。如果都是地理參考,則採用全局座標鑲嵌且SRID或仿射參數可不相同。
指定raster對象的像素類型可以不同。
該函數提供了基於gamma矯正技術實現的勻色能力。基本過程如下:
首先,產生全域顏色平面。對所有參與鑲嵌的raster對象進行重採樣,通過多項式擬合產生全域像素矩陣,用作勻色基準面。
然後,依次計算每個raster對象對應的局部顏色平面(雙線性插值),近似代替整個柵格對象的像素矩陣。
最後,計算產生raster對象上每個像素位置對應的全域顏色平面和局部顏色平面上的像素值,並通過對gamma矯正參數進行計算來實現顏色矯正,以達到最終的勻色效果。
樣本
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', ''))
Update raster_table Set raster_obj = ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic','{"srid":4326,"cell_size":[0.00002,0.00002]}') where id = 11;
--nodata
Insert Into rat_mosaicfrom Values(110, ST_MosaicFrom(Array(select rast from rat_mosaicfrom where id < 5), 'rbt_mosaic','{"chunking":true, "chunkdim":"(256,256,3)","compression":"jpeg","quality":75, "interleaving":"bsq","celltype":"8bui"}','{"resample":"Average","srid":4326,"cell_size":[0.00002,0.00002],"nodata":true, "nodataValue":[255,255,255]}'));
-- 並行
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002],"parallel":4}'))
-- 勻色
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002], "color_balance":true, "parallel":4}'))