用指定的Geometry對象去裁剪Raster對象,並將裁剪結果作為一個新的Raster對象返回。
文法
raster ST_ClipToRast(raster raster_obj,
geometry geom,
integer pyramidLevel default 0,
cstring bands default '',
float8[] nodata default NULL,
cstring clipOption default '',
cstring storageOption default '')參數
參數名稱 | 描述 |
raster_obj | 需要裁剪的Raster對象。 |
pyramidLevel | 金字塔層級。 |
geom | 用於裁剪的Geometry對象。 |
bands | 需要裁剪的波段,用 |
nodata | 用float8[]表示的nodata數值。如果數值個數少于波段數量,則使用波段設定的nodata值填充。如果波段未設定nodata,則用0填充。 |
clipOption | JSON字串表示的裁剪選項。 |
JSON字串表示的返回結果的儲存選項。 |
clipOption參數如下。
參數名稱 | 類型 | 預設值 | 描述 |
window_clip | bool | false | 是否使用Geometry的外包框進行裁剪。取值:
|
rast_coord | bool | false | 傳入的Geometry是否使用的是象元座標。如果是象元座標,橫座標x表示象元的列號,縱座標y表示象元的行號。 |
storageOption參數如下。
參數名稱 | 類型 | 預設值 | 描述 |
chunking | boolean | 和原始Raster一致 | 是否使用分Block Storage。 |
chunkdim | string | 和原始Raster一致 | 分塊的維度資訊。在chunking=true時才有效。 |
chunktable | string | '' | 分塊表名稱。如果傳入 |
compression | string | lz4 | 壓縮演算法類型。取值:
|
quality | integer | 75 | 壓縮品質,只針對jpeg壓縮演算法。 |
interleaving | string | 和原始Raster一致 | 交錯方式。取值:
|
endian | string | 和原始Raster一致 | 位元組序。取值:
|
描述
如果chunkTable傳入為NULL或者
'', 則會產生一個隨機表名的臨時塊表用於存放資料,該暫存資料表只在當前會話中有效。如果需要保持一個可訪問的裁剪對象,則需要指定塊表名稱。預設的裁剪緩衝為100 MB,代表最多隻能裁剪出100 MB大小的結果資料,如果需要調整返回結果大小,可使用SQL語句
SET ganos.raster.clip_max_buffer_size = <緩衝大小,單位byte>;設定緩衝的大小。
樣本
DO $$
declare
rast raster;
new_rast raster;
begin
-- 永久表
CREATE TEMP TABLE rast_clip_result(id integer, rast raster);
select raster_obj into rast from raster_table where id = 1;
new_rast = ST_ClipToRast(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0);
Insert into rast_clip_result values(1, new_rast);
end;
$$ LANGUAGE 'plpgsql';