ST_Clip — 返回由输入几何裁剪的栅格。如果未指定波段号,则处理所有波段。如果 crop
未指定或为 TRUE,则裁剪输出栅格。
raster ST_Clip(
raster rast, integer[] nband, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE)
;
raster ST_Clip(
raster rast, integer nband, geometry geom, double precision nodataval, boolean crop=TRUE)
;
raster ST_Clip(
raster rast, integer nband, geometry geom, boolean crop)
;
raster ST_Clip(
raster rast, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE)
;
raster ST_Clip(
raster rast, geometry geom, double precision nodataval, boolean crop=TRUE)
;
raster ST_Clip(
raster rast, geometry geom, boolean crop)
;
返回由输入几何 geom
裁剪的栅格。如果未指定波段索引,则处理所有波段。
由 ST_Clip 生成的栅格必须为裁剪区域分配一个无数据值,每个波段一个。如果没有提供任何无数据值且输入栅格未定义无数据值,则结果栅格的无数据值将设置为 ST_MinPossibleValue(ST_BandPixelType(rast, band))。当数组中的无数据值数量少于波段数量时,数组中的最后一个无数据值将用于剩余波段。如果无数据值数量大于波段数量,则忽略额外的无数据值。接受无数据值数组的所有变体也接受将分配给每个波段的单个值。
如果未指定 crop
,则假定为 true,这意味着输出栅格将裁剪为 geom
和 rast
范围的交集。如果将 crop
设置为 false,则新栅格将获取与 rast
相同的范围。
可用性:2.0.0
增强:2.1.0 用 C 重写
此处示例使用 MassGIS 网站上提供的马萨诸塞州航空数据 MassGIS 航空正射影像。坐标以马萨诸塞州平面米为单位。
-- Clip the first band of an aerial tile by a 20 meter buffer. SELECT ST_Clip(rast, 1, ST_Buffer(ST_Centroid(ST_Envelope(rast)),20) ) from aerials.boston WHERE rid = 4;
-- Demonstrate effect of crop on final dimensions of raster -- Note how final extent is clipped to that of the geometry -- if crop = true SELECT ST_XMax(ST_Envelope(ST_Clip(rast, 1, clipper, true))) As xmax_w_trim, ST_XMax(clipper) As xmax_clipper, ST_XMax(ST_Envelope(ST_Clip(rast, 1, clipper, false))) As xmax_wo_trim, ST_XMax(ST_Envelope(rast)) As xmax_rast_orig FROM (SELECT rast, ST_Buffer(ST_Centroid(ST_Envelope(rast)),6) As clipper FROM aerials.boston WHERE rid = 6) As foo; xmax_w_trim | xmax_clipper | xmax_wo_trim | xmax_rast_orig ------------------+------------------+------------------+------------------ 230657.436173996 | 230657.436173996 | 230666.436173996 | 230666.436173996
|
|
-- Same example as before, but we need to set crop to false to be able to use ST_AddBand -- because ST_AddBand requires all bands be the same Width and height SELECT ST_AddBand(ST_Clip(rast, 1, ST_Buffer(ST_Centroid(ST_Envelope(rast)),20),false ), ARRAY[ST_Band(rast,2),ST_Band(rast,3)] ) from aerials.boston WHERE rid = 6;
|
|