對raster對象進行裁剪操作。
文法
bytea ST_Clip(raster raster_obj,integer pyramidLevel, box extent, BoxType boxType);
bytea ST_Clip(raster raster_obj,integer pyramidLevel, box extent, BoxType boxType, integer destSrid);
record ST_Clip(raster raster_obj,
geometry geom,
integer pyramidLevel default 0,
cstring bands default '',
float8[] nodata default NULL,
cstring clipOption default '',
cstring storageOption default '',
out box outwindow,
out bytea rasterblob)
參數
參數名稱 | 描述 |
raster_obj | 需要裁剪的raster對象。 |
pyramidLevel | 金字塔層級。 |
extent | 需要裁剪的範圍,格式為 |
boxType | 範圍的類型,只能是以下一種:
|
destSrid | 指定輸出像元子集的空間參考值。 |
geom | 需要裁剪的geometry對象。 |
bands | 需要裁剪的波段,用 |
nodata | 用float8[]表示的nodata數值。 如果數值個數少于波段數量,則使用波段設定的nodata值填充。如果波段未設定nodata,則用0填充。 |
clipOption | 表示裁剪選項。 |
表示返回結果的儲存選項。 | |
outwindow | 表示結果raster對象的大小。 |
rasterblob | 表示二進位像素矩陣。 |
clipOption參數如下。
參數名稱 | 類型 | 預設值 | 描述 |
window_clip | bool | false | 是否使用geometry的外包框進行裁剪。取值:
|
rast_coord | bool | false | 傳入的geometry是否使用的是象元座標。如果是象元座標,橫座標x表示象元的列號(起始為0),縱座標y表示象元的行號(起始為0)。 |
storageOption參數如下。
參數名稱 | 類型 | 預設值 | 描述 |
compression | string | lz4 | 壓縮演算法類型。取值:
|
quality | integer | 75 | 壓縮品質,只針對jpeg壓縮演算法。 |
interleaving | string | 和原始raster一致 | 交錯方式。取值:
|
endian | string | 和原始raster一致 | 位元組序。取值:
|
描述
預設的裁剪緩衝為100 MB,代表最多隻能裁剪出100 MB大小的結果資料,如果需要調整返回結果大小,可使用參數ganos.raster.clip_max_buffer_size設定緩衝的大小。
樣本
Select ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World') from clip_table;
Select ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World', 4326) from clip_table;
-- 使用geometry裁剪
-- 都是用預設值裁剪
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0)).* from clip_table where id =1;
-- 使用白色作為背景色填充並且壓縮為png圖片
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0, '', ARRAY[254,254,254], '', '{"compression":"png","interleaving":"bip"}')).* from clip_table where id =1;
-- 使用geometry的視窗裁剪
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0, '', NULL, '{"window_clip":true}', '')).* from clip_table where id =1;