将影像进行线性拉伸,作为一个新的raster返回。

语法

  • 形式一:
    raster ST_LinearStretch(raster raster_obj ,
                            integer pyramidLevel default 0,    
                            cstring bands default '', 
                            integer minRatio default 0,
                            integer maxRatio default 100, 
                            cstring storageOption  default '',
                            cstring parallelOption default '{}')
  • 形式二:
    raster ST_LinearStretch(raster raster_obj ,
                            float8[] minValues,
                            float8[] maxValues,
                            integer pyramidLevel default 0,    
                            cstring bands default '',  
                            cstring storageOption  default '',
                            cstring parallelOption default '{}')

参数

参数名称 描述
raster_obj raster对象。
pyramidLevel 金字塔层级,从0开始,默认值为0。
bands 需要裁剪的波段,以'0-2'或者'1,2,3'形式表示,以0开始。 默认为'', 裁剪所有的波段。
storageOption 返回结果的存储选项,以JSON字符串表示。更多信息,请参见storageOption
parallelOption 并行操作选项,以JSON字符串表示。更多信息,请参见parallelOption
minRatio 按比例拉伸时的最小拉伸比例,取值0~100。
maxRatio 按比例拉伸时的最大拉伸比例,取值0~100。该值必须大于minRatio的值。
minValues 极值拉伸时的最小值数组,个数必须和需要拉伸波段数一致。
maxValues 极值拉伸时的最大值数组,个数必须和需要拉伸波段数一致。

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 interleaved by line
  • 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:32 bit float
  • 64bf:64 bit float

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

参数名称 描述 类型 默认值 说明
parallel 操作并行度。 integer ganos.parallel.degree 并行度范围为1~64。

描述

将影像进行线性拉伸后作为一个新的raster进行返回。
  • 形式一:需要预先使用ST_BuildPercentilesST_ComputeStatistics函数计算百分比信息,根据像素值的百分比拉伸到像素值范围。

    例如:直方图值域范围为33~206,将最小和最大裁剪百分比定义为2。如果最小端的2%表示33~45之间的值,最大端的2%表示198~206之间的值,33~45之间的值将变为0,而198~206之间的值将变为255,直方图中其他的所有值在0~255之间重新分布。

  • 形式二:将会根据用户指定最小和最大值拉伸到像素类型的最小和最大值范围。

    例如,在8位数据集中,最小值和最大值可为35和206。线性拉伸用于在256个值(0 到 255)之间分布值。由于像素值分布在整个直方图范围内,从而提高了影像的亮度和对比度,这使得影像中的要素更加易于区分。

示例

场景一:对影像进行Linear 2%拉伸。
INSERT INTO raster_table
SELECT 100, ST_LinearStretch(rast,
                             1,
                             '0-2',
                             2,  -- min ratio
                             98, -- max ratio
                             '{"chunktable":"chunk_table", "chunking":true}',
                             '{"parallel":4}')
FROM raster_table
WHERE id=1;
场景二:将影像拉伸到100~200范围。
INSERT INTO raster_table
SELECT 200, ST_LinearStretch(rast,
                             ARRAY[100,100, 100]::float8[],  -- min values
                             ARRAY[200,200, 200]::float8[],  -- max values
                             0,
                             '0-2',
                             '{"chunktable":"chunk_table", "chunking":true}',
                             '{"parallel":4}')
FROM raster_table
WHERE id=1;