將影像進行線性拉伸,作為一個新的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;