将影像的某个金字塔层级或某个波段作为一个新的raster进行返回。

语法

raster ST_SubRaster(raster raster_obj ,
                    integer pyramidLevel default 0,
                    cstring bands default '',
                    cstring storageOption  default '',
                    cstring options default '{}')

参数

参数名称 描述
raster_obj raster对象。
pyramidLevel 金字塔层级。
bands 需要裁剪的波段。用'0-2'或者‘1,2,3’这种形式表示,从0开始。默认为'',表示裁剪所有的波段。
storageOption 返回结果的存储选项,为JSON字符串。具体信息,请参见storageOption
options JSON字符串表示的操作选项。具体信息,请参见Options

storageOption参数如下。

参数名称 描述 类型 默认值 说明
chunking 是否使用分块存储。 boolean 和原始raster一致。
chunkdim 分块的维度信息。 string 和原始raster一致。 chunking=true时该参数才有效。
chunktable 分块表名称。 string '' 如果传入''或NULL,则会产生一个随机表名的临时块表用于存放数据。 该临时表只在当前会话中有效。如果需要保持一个可访问的裁剪对象,则需要指定块表名称。
compression 压缩算法类型。 string 和原始raster一致。 目前只支持如下类型:
  • NONE
  • JPEG
  • ZLIB
  • PNG
  • LZO
  • LZ4
quality 压缩质量。 integer 和原始raster一致。 取值范围为:1~99。

compression参数为JPEG时该参数才有效。

interleaving 交错方式。 string 和原始raster一致。 必须是以下一种:
  • bip:Band interleaved by pixel
  • bil:Band nterleaved by pixel
  • bsq:Band Sequential
endian 字节序。 string 和原始raster一致。 必须是以下一种:
  • NDR:Little endian
  • XDR:Big endian
celltype 像素类型。 string 和原始raster一致。 必须为以下之一:
  • 1bb:1 bit
  • 2bui:2 bit unsigned integer
  • 4bui:4 bit unsigned integer
  • 8bsi:8 bit signed integer
  • 8bui:8 bit unsigned integer
  • 16bsi:16 bit signed integer
  • 16bui:16 bit unsigned integer
  • 32bsi:32 bit signed integer
  • 32bui:32 bit unsigned integer
  • 64bsi:64 bit signed integer
  • 64bui:64 bit unsigned integer
  • 32bf : 32bit float
  • 64bf : 64bit float

Options基于JSON格式的字符串,用于描述操作选项。支持的参数如下:

参数名称 描述 类型 默认值 说明
parallel 操作并行度。 integer ganos.parallel.degree 并行度范围为1~64。
stretch 像素值拉伸方式。 string none 支持以下几种方式:
  • none:不进行像素值拉伸,如果超出像素类型极值范围则用极值替代。
  • stats:使用统计值进行拉伸。栅格对象必须要有统计值信息,可预先通过ST_SummaryStats函数进行计算。
  • data_type:使用像素类型的极值进行像素值拉伸。

示例

将指定的波段转换为新的raster对象。

SELECT ST_SubRaster(rast, 1, '0-2', '{"chunktable":"chunk_table", "chunking":true}')
FROM raster_sub
WHERE id=1;

并行转换像素类型并进行拉伸操作。

SELECT ST_SubRaster(rast, 1, '0-2', '{"chunktable":"chunk_table", "chunking":true, "celltype": "8BUI"}', '{"stretch": "data_type", "parallel": 4}')
FROM raster_sub
WHERE id=1;