用指定的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)行裁剪。取值:
|
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 | 壓縮算法類型。取值:
|
quality | integer | 75 | 壓縮質(zhì)量,只針對(duì)jpeg壓縮算法。 |
interleaving | string | 和原始Raster一致 | 交錯(cuò)方式。取值:
|
endian | string | 和原始Raster一致 | 字節(jié)序。取值:
|
描述
- 如果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;