PostGIS实现栅格数据导出PNG应用实践【ST_AsPNG 】
ST_AsPNG 解析与应用实践
一、函数概述
ST_AsPNG 是 PostGIS 中用于将栅格数据(raster)转换为 PNG 格式图像的工具函数。PNG 格式支持 1-4 个波段(RGB/RGBA),适用于需要透明通道或无损压缩的场景(如矢量切片、标注图像)。函数支持指定波段顺序、压缩级别及 GDAL 选项,灵活性高且兼容性强。
二、核心参数解析
bytea ST_AsPNG(raster rast, -- 输入栅格mixed nband/nbands, -- 波段选择(单波段整数或多波段数组,最多4个)mixed compression/options, -- 压缩级别(整数)或GDAL选项数组text[] options=NULL -- GDAL选项(可选,如压缩强度)
);
参数说明:
1. 波段选择:
- 单波段:nband=1(导出为灰度图,像素值映射为 0-255)。
- 多波段:
- 2-3 波段:视为 RGB 通道(如ARRAY[2,1,3]将波段 2→红,波段 1→绿,波段 3→蓝)。
- 4 波段:视为 RGBA(A 为透明通道,如ARRAY[1,2,3,4])。
- 默认行为:未指定波段时,若波段数≤4 则导出全部,否则仅导出前 3 波段。
2. 压缩与选项:
- compression:压缩级别(1-9,默认 6),数值越大压缩率越高但耗时更长。
- options:GDAL 选项数组,常用:
- ZLEVEL=9:显式设置压缩级别(覆盖compression参数)。
- WORLDFILE=YES:生成伴随的世界坐标文件(*.pgw),记录栅格地理配准信息(需手动处理输出)。
三、典型用法示例
示例 1:导出默认四波段 RGBA 图像(默认压缩)
SELECT ST_AsPNG(rast