全部產品
Search
文件中心

PolarDB:ST_ClipToRast

更新時間:Jul 06, 2024

用指定的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金字塔層級。
geometry用於裁剪的Geometry對象。
bands需要裁剪的波段,用'0-2'或者'1,2,3'這種形式表示,以0開始。預設為'',表示裁剪所有的波段。
nodata用float8[]表示的nodata數值。如果數值個數少于波段數量,則使用波段設定的nodata值填充。如果波段未設定nodata,則用0填充。
clipOptionJSON字串表示的裁剪選項。
storageOptionJSON字串表示的返回結果的儲存選項。

clipOption參數如下。

參數名稱類型預設值描述
window_clipboolfalse是否使用Geometry的外包框進行裁剪。取值:
  • true:使用Geometry的MBR裁剪。
  • false:使用Geometry對象裁剪。
rast_coordboolfalse傳入的Geometry是否使用的是象元座標。如果是象元座標,橫座標x表示象元的列號,縱座標y表示象元的行號。

storageOption參數如下。

參數名稱類型預設值描述
chunkingboolean和原始Raster一致是否使用分Block Storage。
chunkdimstring和原始Raster一致分塊的維度資訊。在chunking=true時才有效。
chunktablestring''分塊表名稱。如果傳入''值,則會產生一個隨機表名臨時塊表用於存放資料。 該暫存資料表只在當前會話中有效。如果需要保持一個可訪問的裁剪對象,則需要指定塊表名稱。
compressionstringlz4壓縮演算法類型。取值:
  • none
  • jpeg
  • zlib
  • png
  • lzo
  • lz4
qualityinteger75壓縮品質,只針對jpeg壓縮演算法。
interleavingstring和原始Raster一致交錯方式。取值:
  • bip:波段按像元交叉
  • bil:波段按行交叉
  • bsq:波段順序
endianstring和原始Raster一致位元組序。取值:
  • NDR:小位元組序(Little endian)
  • XDR:大位元組序(Big endian)

描述

  • 如果chunkTable傳入為NULL或者'', 則會產生一個隨機表名的臨時塊表用於存放資料,該暫存資料表只在當前會話中有效。如果需要保持一個可訪問的裁剪對象,則需要指定塊表名稱。
  • 預設的裁剪緩衝為100 MB,代表最多隻能裁剪出100 MB大小的結果資料,如果需要調整返回結果大小,可使用參數ganos.raster.clip_max_buffer_size設定緩衝的大小。

樣本

-- 永久表
CREATE TEMP TABLE rast_clip_result(id integer, rast raster);

-- 暫存資料表
CREATE TEMP TABLE rast_clip_result_temp(id integer, rast raster);

-- 預設裁剪並存放到暫存資料表中
INSERT INTO rast_clip_result_temp(id, rast) 
select 1, ST_ClipToRast(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0) 
from clip_table 
where id =1;

-- 使用白色作為背景色填充,並儲存到永久表中
INSERT INTO rast_clip_result(id, rast) 
select 2, ST_ClipToRast(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0, '', ARRAY[254,254,254], '', '{"chunktable":"clip_rbt"}') 
from clip_table 
where id =1;

-- 使用Geometry的視窗裁剪
INSERT INTO rast_clip_result_temp(id, rast) 
SELECT 3, ST_ClipToRast(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;