將影像進行線性拉伸,作為一個新的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一致。 | 當前支持的類型如下:
|
quality | 壓縮質量。 | integer | 和原始raster一致。 | 取值范圍為:1~99。
當compression參數為JPEG時該參數才有效。 |
interleaving | 交錯方式。 | string | 和原始raster一致。 | 必須是以下一種:
|
endian | 字節序。 | string | 和原始raster一致。 | 必須是以下一種:
|
celltype | 像素類型。 | string | 和原始raster一致。 | 必須為以下之一:
|
parallelOptions是基于JSON格式的字符串,用于描述操作選項。支持的參數如下:
參數名稱 | 描述 | 類型 | 默認值 | 說明 |
---|---|---|---|---|
parallel | 操作并行度。 | integer | ganos.parallel.degree | 并行度范圍為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;