ST_LinearStretch

将影像进行线性拉伸,作为一个新的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;