当前位置: 首页 > news >正文

PostGIS实现DEM分析之地形崎岖度指数计算【ST_TRI】

一、函数概述

ST_TRI(Terrain Ruggedness Index),用于计算地形崎岖度指数。TRI 通过量化中心像素与其 8 邻域像素的高程差异,反映地形表面的粗糙程度和破碎度。该指标在生态栖息地评估、军事行动规划和灾害风险分析中具有重要应用。

二、参数解析

raster ST_TRI(raster rast,-- 输入DEM栅格integernband,-- 指定栅格波段(通常为高程波段)raster customextent,-- 自定义输出范围(可选,默认与输入一致)textpixeltype='32BF',-- 输出像素类型(默认32位浮点型)booleaninterpolate_nodata=FALSE-- 是否插值处理NoData);

参数说明:

1. 计算逻辑:

  • 对每个像素 P,计算其与 8 邻域像素的高程差绝对值之和,再取平均:
TRI(P) = [Σ| P.value - 邻域像素值 |] / 8
  • 结果值越大,地形越崎岖(如山区、破碎地貌);值越小,地形越平坦(如平原、冰盖)。

2. 窗口限制:

  • 函数固定使用3×3 邻域窗口(半径 1 像素),不可调整。

3. NoData 处理:

  • 若窗口内存在 NoData,默认输出 NoData;启用interpolate_nodata可插值填充邻域值。

三、算法原理

1. 高程差计算:

  • 对中心像素 P 及其 8 邻域像素 N₁,N₂,…,N₈:
差异值 = |P - N₁| + |P - N₂| + ... + |P - N₈|

2. 指数计算:

TRI = 差异值 / 8
  • 本质为局部高程变异性度量,突出地形的微观起伏特征。

四、典型示例

示例 1:基础 TRI 计算

WITHdem_dataAS(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],-- 山顶(中心像素20)[10,15,15,15,10],-- 缓坡[10,10,10,10,10]-- 平坦区域]::doubleprecision[][])ASrast)SELECTST_TRI(rast,1,NULL,'32BF')AStri_rasterFROMdem_data;

输出解析:

  • 中心像素(20)的 TRI 值为:
[|20-15|+|20-15|+|20-15|+|20-15|+|20-10|+|20-10|+|20-10|+|20-10|]/8 = 5
  • 平坦区域 TRI 值为 0,缓坡区域 TRI 约为 2.5。

示例 2:插值处理 NoData 区域

SELECTST_TRI(rast,nband :=1,customextent :=NULL,pixeltype :='32BF',interpolate_nodata :=TRUE-- 插值填充邻域NoData)AStri_with_interpolationFROMdem_with_nodata;

场景:处理含湖泊、建筑物等空洞的 DEM,避免空洞区域影响 TRI 计算。

示例 3:崎岖度分级统计

WITHtri_resultsAS(SELECTST_TRI(dem.rast,1)AStriFROMdem_table)-- 分级统计各地形崎岖度占比SELECTCASEWHENtri<1THEN'极平坦'WHENtriBETWEEN1AND3THEN'平缓'WHENtriBETWEEN3AND5THEN'中等崎岖'ELSE'高度崎岖'ENDASruggedness_class,COUNT(*)ASpixel_countFROMST_DumpValues(tri_results.tri)GROUPBYruggedness_class;

五、输出值与地形类型关系

TRI 值范围地形特征描述典型区域示例
0-1极平坦城市广场、湖面
1-3平缓起伏农田、低丘
3-5中等崎岖丘陵、梯田
5-10高度崎岖山区、峡谷
>10极其崎岖(破碎地形)喀斯特地貌、火山口

六、性能优化

1. 数据类型选择:

  • 输出推荐使用32BF(浮点型)保留精度,若仅需分级可转为8BUI(整数型):
ST_TRI(rast,pixeltype :='8BUI')

2. 并行计算:

  • 结合 PostgreSQL 并行查询加速大规模栅格处理:
SETmax_parallel_workers_per_gather=4;SELECTST_TRI(rast,1)FROMlarge_dem;

3. 边界扩展:

  • 对边缘像素,可先通过ST_Expand扩展栅格,避免边界效应:
WITHexpanded_demAS(SELECTST_Expand(rast,1)ASexpanded_rast-- 扩展1个像素FROMdem_table)SELECTST_TRI(expanded_rast,1)FROMexpanded_dem;

4. 与其他指标结合:

  • TRI 常与坡度(ST_Slope)、粗糙度(ST_Roughness)联合分析,全面描述地形特征。

七、应用场景

1. 生态栖息地评估:

  • 野生动物(如山地山羊)偏好特定崎岖度的地形,TRI 用于栖息地适宜性建模。

2. 军事与机器人路径规划:

  • 高 TRI 区域通行难度大,需避开或规划特殊通行策略。

3. 自然灾害风险分析:

  • 高 TRI 区域易发生滑坡、泥石流,结合坡度和土壤类型可构建风险模型。

4. 户外休闲规划:

  • 徒步路线设计中,TRI 值可量化路线难度,辅助路线规划。

八、总结

通过ST_TRI,可快速量化地形的局部变异性,为地形分析、生态研究和工程应用提供关键参数。合理处理边界和 NoData 区域,结合其他地形指标,能更全面地刻画地表形态。

http://www.jsqmd.com/news/493464/

相关文章:

  • 雪女-斗罗大陆-造相Z-Turbo企业级应用:软件测试中的视觉用例自动生成
  • FPGA 进阶指南:Verilog 模块化设计实战与层次化架构优化
  • 512G MLC颗粒 固态U盘 DIY:从拆机片到高速存储的实战指南
  • 百度智能云千帆AppBuilder API调用全攻略:从密钥获取到实战示例
  • RMBG-2.0抠图实战案例:真人毛发、玻璃杯、宠物猫,复杂场景轻松应对
  • 70B模型上下文一变,ROI直接崩溃?揭秘AI算力瓶颈真相:数据流才是关键!“
  • Dify大模型API调用成本失控案例复盘(2024真实生产事故全链路追踪)
  • 使用CTC语音唤醒模型开发语音控制的智能健身系统
  • 避坑指南:YOLO-v8.3部署过程中常见问题与解决方案
  • TwinCAT3与台达伺服联调实战:版本不匹配导致的使能问题排查全记录
  • 互联网大厂Java求职者面试记:一场技术与幽默交织的面试
  • 突破平台限制:WorkshopDL让非Steam玩家高效获取创意工坊资源
  • 伏羲天气预报效果对比:FuXi vs GFS在东亚季风区温度预报MAE降低37%
  • Kali Linux下BeEF-XSS安装全攻略:从换源到解决常见报错(2024最新版)
  • 102_PyTorch 视觉预处理利器:Transforms 工具箱全解析
  • WorkshopDL:跨平台Steam创意工坊资源获取工具 - 轻量级解决方案与开发者实践指南
  • 测试系列之接口测试 (一)概念测试的有关概念
  • OpenMV(三)--DIY固件烧录与STM32H743硬件适配指南
  • 深入解析UnityEvent:Unity中的高效事件监听与广播机制
  • 软测概念
  • 快速体验GLM-4-9B-Chat-1M:vLLM部署+Chainlit前端,无需复杂配置
  • Amazon 商品中的视频下载原理详解:为什么解析工具可以提取 m3u8
  • 零基础小白能玩转 OpenClaw 吗?低成本便捷工具轻松搞定
  • Qwen3-VL-8B AI聊天系统快速上手:3步搭建,无需代码基础
  • SpringBoot封装MusePublic:让艺术创作能力轻松接入业务系统
  • Linux操作系统的安装过程
  • OpenCore Legacy Patcher:让旧Mac焕发新生的技术普惠方案
  • CLIP-GmP-ViT-L-14多场景落地:金融研报图表→关键结论文本提取
  • CTF流量分析神器:NetA让复杂流量解析变得简单高效
  • Axis1.4漏洞实战:如何通过CVE-2019-0227获取服务器权限