ST_AsRaster函数应用详解:将矢量数据转换为栅格数据
[文章目录]
一、函数概述
二、函数参数与分组说明
三、核心特性与注意事项
四、示例代码
五、应用场景
六、版本依赖
七、总结
一、函数概述
ST_AsRaster是PostGIS中用于将几何对象(如点、线、面)转换为栅格数据的核心函数。它通过多种参数组合,灵活控制输出栅格的空间参考、像素尺寸、对齐方式、波段数等属性,适用于地理数据栅格化、空间分析及可视化场景。
二、函数参数与分组说明
函数共有10种变体,可归纳为3大参数分组,每组核心差异在于栅格尺寸与对齐方式的定义方法。
1. 基于参考栅格的转换
通过已有栅格的属性(如像素大小、原点)定义输出栅格。
- 适用场景:需保持与现有栅格一致的空间分辨率和对齐方式(如叠加分析)。
-- 单波段
raster ST_AsRaster(geometry geom, raster ref, text pixeltype, double precision value=1, double precision nodataval=0, boolean touched=false);
-- 多波段(数组参数)
raster ST_AsRaster(geometry geom, raster ref, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], boolean touched=false);
关键参数:
- ref:参考栅格,决定输出栅格的scalex、scaley、gridx、gridy和 SRID。
- pixeltype/pixeltype[]:像素类型(如’8BUI’表示 8 位无符号整数)。
- value[]:各波段初始值(默认全为 1)。
- touched:是否渲染与几何对象 “接触” 的像素(默认仅渲染内部像素)。
2. 基于像素尺寸的转换(自动计算栅格大小)
通过指定像素尺寸(scalex、scaley)定义栅格,输出栅格的宽度和高度由几何对象范围自动计算。
- 适用场景:需固定像素分辨率,动态适配几何范围(如遥感影像处理)。
-- 单波段(指定网格原点)
raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx, double precision gridy, text pixeltype, ...);
-- 多波段(指定左上原点)
raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text[] pixeltype, ..., double precision upperleftx=NULL, double precision upperlefty=NULL, ...);
关键参数:
- scalex/scaley:像素宽度 / 高度(X/Y 方向分辨率)。
- gridx/gridy:网格原点(左下角或任意角点)。
- upperleftx/upperlefty:左上原点(替代gridx/gridy,更常用)。
- skewx/skewy:像素倾斜参数(默认 0,用于非正交栅格)。
3. 基于固定尺寸的转换(自动计算像素尺寸)
通过指定栅格宽度和高度(width、height)定义栅格,像素尺寸由几何对象范围自动计算。
- 适用场景:需固定栅格像素数量(如生成固定分辨率的缩略图)。
-- 单波段(指定网格原点)
raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx, double precision gridy, text pixeltype, ...);
-- 多波段(指定左上原点)
raster ST_AsRaster(geometry geom, integer width, integer height, text[] pixeltype, ..., double precision upperleftx=NULL, double precision upperlefty=NULL, ...);
关键参数:
- width/height:栅格的列数 / 行数(像素数量)。
- 其他参数与第二组类似,但scalex/scaley由几何范围与尺寸自动计算。
…
查看全部文章内容请转,更多开源GIS相关知识技能分享,提供学习问答交流