PostGIS实现DEM分析之坡度计算【ST_Slope】

发布时间:2026/7/4 21:56:31

PostGIS实现DEM分析之坡度计算【ST_Slope】 全部文章内容请转公众号【时空智能计算】及交流群867520770原创不易求关注支持更多开源GIS相关知识技能分享免费提供学习问答交流。一、函数概述ST_Slope用于实现 DEM 坡度计算。它通过分析每个像素与其相邻像素的高程变化返回地形的倾斜程度结果可选择以度数默认、弧度或百分比表示。该函数支持自定义垂直缩放比例和 NoData 插值是地形分析、城市规划及环境建模的基础工具。二、参数解析raster ST_Slope(raster rast,-- 输入DEM栅格integerband1,-- 栅格波段默认第1波段textpixeltype32BF,-- 输出像素类型默认32位浮点型textunitsDEGREES,-- 输出单位DEGREES度、RADIANS弧度、PERCENT百分比doubleprecisionscale1.0,-- 垂直缩放比例默认1用于调整垂直单位与水平单位的比例booleaninterpolate_nodataFALSE-- 是否插值处理NoData);参数说明1. units 参数DEGREES默认坡度以度数表示0°-90°0° 为水平90° 为垂直。RADIANS以弧度表示0-π/2。PERCENT以百分比坡度表示上升高度 / 水平距离 ×100%如 10% 表示每 100 米水平距离上升 10 米。2. 垂直缩放scale用于校正垂直单位与水平单位的差异经纬度数据单位度scale111120米 / 度适用于米制垂直单位。英尺 / 度经纬度数据scale370400。投影坐标系如 UTM单位米scale1.0单位一致无需缩放。3. NoData 处理interpolate_nodataTRUE时使用反距离加权插值ST_InvDistWeight4ma填充空洞提升结果连续性。三、算法原理ST_Slope 使用 3×3 窗口分析中心像素与 8 邻域像素的高程差异计算公式为slope arctan( (z_factor * dz) / dx )其中dx 像素水平间距由栅格元数据的scalex确定。dz 中心像素与邻域像素的高程差。z_factor scale / dx将垂直单位转换为与水平单位一致。单位转换从弧度转换为度数slope_degrees slope_radians × (180/π)。转换为百分比坡度slope_percent tan(slope_radians) × 100%。四、典型示例示例 1默认参数计算坡度度数WITHdemAS(SELECTST_SetValues(ST_MakeEmptyRaster(5,5,0,0,1,-1),1,1,1,ARRAY[[10,10,10,10,10],[10,15,15,15,10],[10,15,20,15,10],[10,15,15,15,10],[10,10,10,10,10]]::doubleprecision[][])ASrast)SELECTST_Slope(rast,1,32BF,DEGREES)ASslope_degreesFROMdem;输出中心像素20的坡度为约 26.57°周围像素按高程变化计算对应坡度。示例 2经纬度数据垂直缩放SELECTST_Slope(rast,band :1,units :DEGREES,scale :111120,-- 米/度经纬度数据垂直单位为米interpolate_nodata :TRUE)ASslope_rastFROMdem_latlon;场景处理全球范围的经纬度 DEM 数据正确转换垂直单位与水平单位比例。示例 3输出百分比坡度SELECTST_Slope(rast,units :PERCENT,scale :1.0-- 投影坐标系米/米)ASslope_percentFROMdem_utm;效果输出值为百分比形式如坡度 20% 表示每 100 米水平距离上升 20 米。五、输出值与地形等级对应坡度范围度数坡度等级典型场景0°-3°极缓坡平原、机场跑道3°-10°缓坡农田、高尔夫球场10°-20°中坡山地森林、乡村道路20°-30°陡坡山区、梯田30°极陡坡悬崖、冰川边缘六、性能优化与注意事项1. 边界处理栅格边缘像素因邻域不完整结果可能不准确建议通过ST_Expand扩展栅格边界WITHexpanded_demAS(SELECTST_Expand(rast,1)ASrast-- 扩展1个像素FROMdem_table)SELECTST_Slope(rast)FROMexpanded_dem;2. 数据类型选择输出类型推荐32BF浮点型以保留小数精度若仅需等级划分可转为8BUI整数型ST_Slope(rast,pixeltype :8BUI)3. 并行计算结合 PostgreSQL 并行查询加速大规模栅格处理SETmax_parallel_workers_per_gather4;SELECTST_Slope(rast)FROMlarge_dem;4. NoData 值校验输入 DEM 需通过ST_SetBandNoDataValue正确设置 NoData 值避免计算错误。七、应用场景1. 城市规划与工程识别陡坡区域25°限制建筑开发或规划特殊工程措施。2. 农业与林业坡度 15° 的区域易发生水土流失需优先实施水土保持方案。3. 灾害风险评估结合坡度ST_Slope与植被覆盖数据预测滑坡、泥石流易发区。4. 路径规划自动驾驶或无人机航线规划中避开陡坡区域如 30°。八、总结通过ST_Slope可精确量化地形倾斜程度为各类空间分析提供关键参数。合理设置垂直缩放和单位结合插值处理 NoData 区域能显著提升计算结果的准确性和适用性。

相关新闻