将栅格对象转化为图像格式二进制流。

语法

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

参数

参数名称描述
raster_obj需要计算的栅格对象。
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;