全部產品
Search
文件中心

PolarDB:ST_AsImage

更新時間:Jul 06, 2024

將柵格對象轉化為影像格式二進位流。

文法

bytea ST_AsImage(raster raster_obj,
        box extent,
        integer pyramidLevel default 0,
    cstring bands default '',
       cstring format default 'PNG',
        cstring option default '');

參數

參數名稱描述
raster_obj需要計算的raster對象。
extent影像的範圍,預設使用地理座標系統。
pyramidLevel影像金字塔層級,從0開始,預設值為0。
bands需要擷取的波段列表,從0開始,用'0-2'或者‘1,2,3’這種形式表示。預設為空白。JPEG為1或3,PNG為1、2、3或4。預設使用前三個波段。
format輸出影像格式,取值如下:
  • PNG
  • JPEG
optionJSON字串類型的轉換選項。

option參數說明如下。

參數名稱描述類型預設值說明
nodata是否使用nodata值。boolfalse
  • true:需要處理nodata值。
  • false:nodata值作為普通值處理。
nodataValuenodata值。integer0nodata=true時,需為nodata設定參數值。
rast_coord傳入的box是否為像元座標。boolfalse如果是像元座標,橫座標x表示像元的列號(起始為0),縱座標y表示像元的行號(起始為0)。
strength是否進行增強。stringnone顯示增強方式,取值:
  • none:不進行增強。
  • stats:使用統計值進行展開。
quality壓縮品質。integer75壓縮品質,取值為1~100。

描述

  • 函數將返回一個bytea表示的影像格式。
  • 預設的裁剪緩衝為100 MB,代表最多隻能裁剪出100 MB大小的結果資料,如果需要調整返回結果大小,可使用參數ganos.raster.clip_max_buffer_size設定緩衝的大小。
  • 波段數量說明如下:
    • 1:表示灰階影像。
    • 2:表示灰階和Alpha波段。
    • 3:表示R波段、G波段和B波段。
    • 4:表示R波段、G波段、B波段和Alpha波段。

樣本

--使用裁剪緩衝範圍。
SELECT ST_AsImage(raster_obj, 
                  '(-180,-90), (0,0)'::Box) 
FROM raster_table    
WHERE id=1;

--指定金字塔層級。
SELECT ST_AsImage(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1) 
FROM raster_table    
WHERE id=1;

--指定波段使用裁剪緩衝範圍。
SELECT ST_AsImage(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1,
                 '0-2') 
FROM raster_table    
WHERE id=1;

--指定壓縮格式。
SELECT ST_AsImage(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1,
                 '0-2',
                 'PNG') 
FROM raster_table    
WHERE id=1;

--使用統計值展開。
SELECT ST_AsImage(rast, 
                  '(-180,-90), (0,0)'::Box, 
                  0, 
                  '',
                  'PNG', 
                  '{"nodata":"false", "nodatavalue":"0","rast_coord":"false", "strength":"stats", "quality":"75"}')
FROM raster_table    
WHERE id=1;

--指定象元座標裁剪緩衝並使用統計值展開。
SELECT ST_AsImage(rast, 
                  '(0,0), (200,100)'::Box, 
                  0, 
                  '',
                  'PNG', 
                  '{"nodata":"false", "nodatavalue":"0","rast_coord":"true", "strength":"stats", "quality":"75"}')
FROM raster_table    
WHERE id=1;