全部產品
Search
文件中心

AnalyticDB:ST_ClipToRast

更新時間:Feb 05, 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

金字塔層級。

geom

用於裁剪的Geometry對象。

bands

需要裁剪的波段,用'0-2'或者'1,2,3'這種形式表示,以0開始。預設為'',表示裁剪所有的波段。

nodata

用float8[]表示的nodata數值。如果數值個數少于波段數量,則使用波段設定的nodata值填充。如果波段未設定nodata,則用0填充。

clipOption

JSON字串表示的裁剪選項。

storageOption

JSON字串表示的返回結果的儲存選項。

clipOption參數如下。

參數名稱

類型

預設值

描述

window_clip

bool

false

是否使用Geometry的外包框進行裁剪。取值:

  • true:使用Geometry的MBR裁剪。

  • 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

壓縮演算法類型。取值:

  • none

  • jpeg

  • zlib

  • png

  • lzo

  • lz4

quality

integer

75

壓縮品質,只針對jpeg壓縮演算法。

interleaving

string

和原始Raster一致

交錯方式。取值:

  • bip:波段按像元交叉

  • bil:波段按行交叉

  • bsq:波段順序

endian

string

和原始Raster一致

位元組序。取值:

  • NDR:小位元組序(Little endian)

  • XDR:大位元組序(Big endian)

描述

  • 如果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';