用指定的Geometry對(duì)象去裁剪Raster對(duì)象,并將裁剪結(jié)果作為一個(gè)新的Raster對(duì)象返回。

語法

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 '')

參數(shù)

參數(shù)名稱 描述
raster_obj 需要裁剪的Raster對(duì)象。
pyramidLevel 金字塔層級(jí)。
geometry 用于裁剪的Geometry對(duì)象。
bands 需要裁剪的波段,用'0-2'或者'1,2,3'這種形式表示,以0開始。默認(rèn)為'',表示裁剪所有的波段。
nodata 用float8[]表示的nodata數(shù)值。如果數(shù)值個(gè)數(shù)少于波段數(shù)量,則使用波段設(shè)置的nodata值填充。如果波段未設(shè)置nodata,則用0填充。
clipOption JSON字符串表示的裁剪選項(xiàng)。
storageOption JSON字符串表示的返回結(jié)果的存儲(chǔ)選項(xiàng)。

clipOption參數(shù)如下。

參數(shù)名稱 類型 默認(rèn)值 描述
window_clip bool false 是否使用Geometry的外包框進(jìn)行裁剪。取值:
  • true:使用Geometry的MBR裁剪。
  • false:使用Geometry對(duì)象裁剪。
rast_coord bool false 傳入的Geometry是否使用的是象元坐標(biāo)。如果是象元坐標(biāo),橫坐標(biāo)x表示象元的列號(hào),縱坐標(biāo)y表示象元的行號(hào)。

storageOption參數(shù)如下。

參數(shù)名稱 類型 默認(rèn)值 描述
chunking boolean 和原始Raster一致 是否使用分塊存儲(chǔ)。
chunkdim string 和原始Raster一致 分塊的維度信息。在chunking=true時(shí)才有效。
chunktable string '' 分塊表名稱。如果傳入''值,則會(huì)產(chǎn)生一個(gè)隨機(jī)表名臨時(shí)塊表用于存放數(shù)據(jù)。 該臨時(shí)表只在當(dāng)前會(huì)話中有效。如果需要保持一個(gè)可訪問的裁剪對(duì)象,則需要指定塊表名稱。
compression string lz4 壓縮算法類型。取值:
  • none
  • jpeg
  • zlib
  • png
  • lzo
  • lz4
quality integer 75 壓縮質(zhì)量,只針對(duì)jpeg壓縮算法。
interleaving string 和原始Raster一致 交錯(cuò)方式。取值:
  • bip:波段按像元交叉
  • bil:波段按行交叉
  • bsq:波段順序
endian string 和原始Raster一致 字節(jié)序。取值:
  • NDR:小字節(jié)序(Little endian)
  • XDR:大字節(jié)序(Big endian)

描述

  • 如果chunkTable傳入為NULL或者'', 則會(huì)產(chǎn)生一個(gè)隨機(jī)表名的臨時(shí)塊表用于存放數(shù)據(jù),該臨時(shí)表只在當(dāng)前會(huì)話中有效。如果需要保持一個(gè)可訪問的裁剪對(duì)象,則需要指定塊表名稱。
  • 默認(rèn)的裁剪緩存為100 MB,代表最多只能裁剪出100 MB大小的結(jié)果數(shù)據(jù),如果需要調(diào)整返回結(jié)果大小,可使用參數(shù)ganos.raster.clip_max_buffer_size設(shè)置緩存的大小。

示例

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

-- 臨時(shí)表
CREATE TEMP TABLE rast_clip_result_temp(id integer, rast raster);

-- 默認(rèn)裁剪并存放到臨時(shí)表中
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;