PostGIS实现创建空栅格模板【ST
全部文章内容请转公众号【PostGIS专栏】,原创不易,求已关注支持,更多开源GIS相关 智慧技能分享,免费提供 进修问答交流。
一、函数概述 二、核心参数与语法结构 三、参数详解与几何定义
1. 位置与尺寸参数 2. 简化版参数逻辑 3. 坐标系定义
四、典型用法示例
示例 1:创建标准 WGS84 栅格模板 示例 2:基于现有栅格创建同规格空栅格 示例 3:创建斜交栅格(适用于雷达影像)
五、应用场景
1. 栅格数据初始化 2. 栅格操作模板 3. 算法开发与测试 4. 栅格元数据管理
六、注意事项
1. 坐标系与尺寸一致性 2. 空栅格与 NoData 值 3. 栅格 路线约定 4. 性能与内存
七、 拓展资料
一、函数概述
ST_MakeEmptyRaster 是 PostGIS 中用于创建空栅格对象的基础函数,可生成具有指定几何参数(宽度、高度、坐标参考等)但不含实际像素值的栅格模板。该函数是栅格数据处理的起点,常用于:
定义栅格数据结构(如分辨率、坐标系) 作为栅格操作的输出模板 批量生成统一规格的栅格容器
二、核心参数与语法结构
-- 基于现有栅格创建空栅格 raster ST_MakeEmptyRaster(raster rast); -- 自定义参数创建空栅格(完整版本) raster ST_MakeEmptyRaster( integer width, -- 栅格宽度(列数) integer height, -- 栅格高度(行数) float8 upperleftx, -- 左上角X坐标 float8 upperlefty, -- 左上角Y坐标 float8 scalex, -- X 路线像素尺寸 float8 scaley, -- Y 路线像素尺寸 float8 skewx = 0, -- X 路线旋转系数(默认0) float8 skewy = 0, -- Y 路线旋转系数(默认0) integer srid = 0 -- 空间参考ID(默认0) ); -- 简化版(等距像素,无旋转) raster ST_MakeEmptyRaster( integer width, integer height, float8 upperleftx, float8 upperlefty, float8 pixelsize );三、参数详解与几何定义
1. 位置与尺寸参数
width/height:栅格的列数与行数(像素数量) upperleftx/upperlefty:左上角像素的地理坐标 scalex/scaley:像素的地理尺寸(正数表示 X 向右、Y 向上) skewx/skewy:旋转系数
2. 简化版参数逻辑
-- 简化版等价于完整版本的特例 ST_MakeEmptyRaster(w, h, ulx, uly, ps) = ST_MakeEmptyRaster(w, h, ulx, uly, ps, -ps, 0, 0);Y 路线尺寸自动设为 -pixelsize(地图学中 Y 轴一般向下)
3. 坐标系定义
srid=0 表示未定义坐标系(后续可通过 ST_SetSRID 设置) 建议始终指定有效的 SRID(如 4326、3857)
四、典型用法示例
示例 1:创建标准 WGS84 栅格模板
-- 创建100×100像素的WGS84栅格(1km分辨率) SELECT ST_MakeEmptyRaster( width := 100, height := 100, upperleftx := 116.0, -- 左上角经度 upperlefty := 40.0, -- 左上角纬度 scalex := 0.01, -- X 路线0.01度(约1km) scaley := -0.01, -- Y 路线-0.01度(向下) srid := 4326 -- WGS84坐标系 ) AS wgs84_template;示例 2:基于现有栅格创建同规格空栅格
-- 从遥感影像提取模板 WITH template_raster AS ( SELECT rast FROM landsat_scene WHERE scene_id = 'LC08_L1TP_123032_ 20240715' ) -- 创建同参数空栅格用于 结局存储 SELECT ST_MakeEmptyRaster(rast) AS result_template FROM template_raster;示例 3:创建斜交栅格(适用于雷达影像)
-- 创建带旋转的SAR影像模板 SELECT ST_MakeEmptyRaster( width := 500, height := 500, upperleftx := 500000, upperlefty := 4500000, scalex := 10, -- X 路线10米 scaley := -10, -- Y 路线-10米 skewx := 0.1, -- X 路线旋转0.1 skewy := -0.1, -- Y 路线旋转-0.1 srid := 32650 -- UTM 50N坐标系 ) AS sar_template;五、应用场景
1. 栅格数据初始化
预定义栅格结构用于批量数据导入 创建空栅格作为计算 结局的存储容器
2. 栅格操作模板
作为 ST_Transform、ST_Resample 等函数的输出模板 定义统一规格的栅格瓦片(如 Web 地图服务)
3. 算法开发与测试
创建标准测试栅格验证算法逻辑 生成不同参数组合的栅格用于兼容性测试
4. 栅格元数据管理
提取现有栅格的元数据作为新栅格的模板 批量生成具有统一地理参考的栅格
六、注意事项
1. 坐标系与尺寸一致性
确保像素尺寸与坐标系单位匹配(如 WGS84 用度,UTM 用米) 旋转栅格可能导致 ST_Width/ST_Height 与实际地理范围不一致
2. 空栅格与 NoData 值
空栅格不包含波段和像素值,需通过 ST_AddBand 添加波段 后续填充像素时需显式设置 NoData 值(如ST_SetBandNoDataValue)
3. 栅格 路线约定
scaley 通常为负值(符合地图学中 Y 轴向下的惯例) 正值scaley表示 Y 轴向上(适用于某些科学数据)
4. 性能与内存
超大尺寸栅格(如 10000×10000 像素)可能导致内存溢出 建议分块创建或使用流式处理方式
七、 拓展资料
通过 ST_MakeEmptyRaster 创建的空栅格模板,为栅格数据处理提供了标准化的框架。合理设置参数并结合业务需求,可高效生成符合各种应用场景的栅格结构,是 PostGIS 栅格数据处理流程中不可或缺的基础环节。