将影像进行线性拉伸,作为一个新的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 | 需要裁剪的波段,以 |
storageOption | 返回结果的存储选项,以JSON字符串表示。更多信息,请参见storageOption。 |
parallelOption | 并行操作选项,以JSON字符串表示。更多信息,请参见parallelOption。 |
minRatio | 按比例拉伸时的最小拉伸比例,取值0~100。 |
maxRatio | 按比例拉伸时的最大拉伸比例,取值0~100。该值必须大于minRatio的值。 |
minValues | 极值拉伸时的最小值数组,个数必须和需要拉伸波段数一致。 |
maxValues | 极值拉伸时的最大值数组,个数必须和需要拉伸波段数一致。 |
storageOption参数说明:
参数名称 | 描述 | 类型 | 默认值 | 说明 |
chunking | 是否使用分块存储。 | boolean | 和原始raster一致。 | 无 |
chunkdim | 分块的维度信息。 | string | 和原始raster一致。 | 当 |
chunktable | 分块表名称。 | string |
| 如果传入 |
compression | 压缩算法类型。 | string | 和原始raster一致。 | 当前支持的类型如下:
|
quality | 压缩质量。 | integer | 和原始raster一致。 | 取值范围为:1~99。 当compression参数为JPEG时该参数才有效。 |
interleaving | 交错方式。 | string | 和原始raster一致。 | 必须是以下一种:
|
endian | 字节序。 | string | 和原始raster一致。 | 必须是以下一种:
|
celltype | 像素类型。 | string | 和原始raster一致。 | 必须为以下之一:
|
parallelOptions是基于JSON格式的字符串,用于描述操作选项。支持的参数如下:
参数名称 | 描述 | 类型 | 默认值 | 说明 |
parallel | 操作并行度。 | integer | 并行度范围为1~64。 |
描述
将影像进行线性拉伸后作为一个新的raster进行返回。
形式一:需要预先使用ST_BuildPercentiles或ST_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;