mcpField
T
terrain-hydrology

terrain-hydrology

github.com/muend数据与数据库3766 次安装2 周前更新
代码仓库

关于 terrain-hydrology

terrain-hydrology 是用于地形栅格分析的技能,可从高程数据生成并验证地形导数、河网、流域和视域。它帮助 GIS 从业者检查 DEM、选择算法并排查单位和水文处理错误。

主要功能

  1. 01检查 DEM 来源、单位和无数据值
  2. 02计算坡度、坡向和曲率
  3. 03洼地处理与水流路径计算
  4. 04河网和流域划分
  5. 05视域参数指导
  6. 06验证与结果记录

适用场景

  1. 01准备高程栅格用于分析
  2. 02划分河网和汇水流域
  3. 03将流域结果与参考数据核对
  4. 04为选址分析生成视域

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/muend/geoai-skills --skill terrain-hydrology

安装后在 Claude Code 中输入/terrain-hydrology确认已加载。

附带文件agents/openai.yamlreferences/authoritative-sources.md

详细介绍

地形与水文

目的:生成数值具有物理意义的地形产品。反复出现的两种问题是:单位不匹配(经纬度坐标与米制高程混用,会悄然破坏所有导数计算)和未进行水文处理的 DEM(水流汇入虚假的洼地,导致河网零散且不真实)。

先处理 DEM

检查项规则
地表类型水文分析/坡度分析使用 DTM(裸地);视域分析/太阳能分析使用 DSM(包含树冠/建筑物)。使用 DSM 划分流域会导致河流沿着树冠流淌。
来源对大多数全球范围的工作,Copernicus GLO-30 优于 SRTM;有条件时使用国家级 LiDAR DTM(参见 point-cloud-lidar 自行制作)。记录来源和采集日期。
无数据值识别无数据值(-9999、-32768、3.4e38)并进行掩膜处理——切勿让它进入统计或填洼算法,被当作“极深的坑”。
空洞在水文处理之前填补数据空洞(从边缘插值);记录填补区域。
CRS + 单位重投影到投影 CRS,使水平单位与垂直单位一致(米)。对 4326 DEM 计算坡度而不校正 z 因子,是典型的隐蔽错误。如果继续使用地理坐标系,则应用随纬度变化的 z 因子——更好的做法是:不要这样做。

派生指标

import whitebox
wbt = whitebox.WhiteboxTools()
wbt.slope("dem.tif", "slope_deg.tif", units="degrees")
wbt.aspect("dem.tif", "aspect_deg.tif")
wbt.plan_curvature("dem.tif", "plan_curv.tif")
  • 坡度:注明单位(度数还是百分比——45° = 100%);Horn 方法 (3×3)是标准方法;地形越陡,越应考虑分辨率的影响 (像元尺寸增大时,坡度会变缓——每项坡度统计都应报告像元尺寸)。
  • 坡向:这是循环变量——切勿直接进行算术平均;使用向量 (sin/cos)平均;平坦像元的坡向未定义(应进行掩膜处理,不要赋值为 0)。
  • 曲率:平面曲率(汇流)与剖面曲率(流速变化)—— 根据问题选择。
  • 山体阴影用于制图(参见 cartography-geoviz),切勿作为分析输入。
  • 地形崎岖度/位置:TRI、TPI(取决于半径——应报告半径)、 用于地貌分类的 geomorphons。

水文处理——顺序很重要

voids filled → breach depressions (preferred) → fill remaining pits
→ flow direction → flow accumulation → streams → watersheds
  • 先挖沟后填洼(WhiteboxTools BreachDepressionsLeastCost):在障碍物中开挖通道(例如穿过涵洞上方的道路堤坝),而不是将上游区域淹平。对平坦/有堤坝的地形直接填洼,会形成大型人工湖,流路也会随意生成。
  • 真实洼地确实存在(喀斯特、草原壶穴、蓄水池)。如果地貌确实蓄水,就不要把它们处理掉——应使用显式洼地处理进行建模,并说明这一点。
  • 流向:用于河网/流域划分时使用 D8(离散、标准);在坡面上计算扩散量(湿润度指数、侵蚀)时使用 D-infinity/MFD。

河流与流域

  • 河流提取阈值(最小汇流累积量)是建模选择:根据已绘制的参考河网推导(使河流总长度相匹配),或报告阈值并展示两种备选结果——切勿将某个阈值生成的河网说成“真实”的河流。
  • 出口点捕捉:出口坐标很少正好落在建模的河流像元上。将其捕捉到搜索半径内汇流累积量最高的像元(wbt.jenson_snap_pour_points)——未捕捉的出口点会悄然产生一个很小且错误的流域。
  • 验证划分结果:将流域面积与权威流域数据对比(误差 ±5-10%),并在 3 处将建模河网叠加到影像/地形图上检查。
  • 湿润度指数(TWI)、河流功率(SPA):根据经过水文处理的 DEM 和 MFD 汇流累积量计算;它们是相对指数——不要跨区域比较绝对阈值。

可视域

  • 使用 DSM(或 DTM + 地物高度)——裸地可视域会夸大树木或建筑物所在区域的可见性;请注明使用了哪种表面。
  • 明确设置观察者高度(约 1.7 m 的行人高度、基础设施的塔高)和目标高度;不同工具的默认值各不相同。
  • 在距离超过约 5 km 时考虑地球曲率和折射(wbt.viewshed 会处理;请核实相关标志)。
  • 在元数据中提供二值可见/不可见结果、观察点和参数;对于选址问题,候选点集的累积可视域可用于 mcda-suitability-analysis。

工具

WhiteboxTools(地形校正、完整水文分析套件、速度快)· pysheds(轻量级 Python 流域分析)· richdem(地形派生量)· GDAL(gdaldem),用于快速计算坡度/山体阴影 · GRASS(r.watershed),用于超大 DEM(无需显式填洼——采用最小成本路径)。

验证流程

  1. 派生量直方图:大范围坡度 > 60° 或负值累积量 = 单位/NoData 错误。
  2. 在 3 处将河网叠加到影像上检查,其中包括一处平坦区域(伪影容易集中于此)。
  3. 将流域面积与权威流域多边形交叉核对。
  4. 报告中应列出 DEM 来源/日期/分辨率、地形校正方法、流向算法和河流阈值。

常见问题检查清单

  • 从地理坐标系 DEM 计算坡度时未使用 z-factor(数值偏差约 100 倍)。
  • 使用 DSM 划分流域(河流会流过树冠)。
  • 仅填洼进行地形校正,导致道路路堤处出现虚假湖泊。
  • 出水口未吸附到河网,导致产生 3 个像元的“流域”。
  • 对坡向取算术平均(350° 和 10° 的平均值指向南方,而非北方)。
  • 在填洼/统计时将 NoData 当作高程处理。
  • 将一个任意的河流阈值当作排水网络呈现。

执行规范

  • **工作流:**检查 DEM 来源、CRS、垂直单位、基准面、分辨率和 NoData;校正地形;推导梯度和流向;划定产品;测试阈值;根据影像和控制点进行验证。
  • **决策规则:**对栅格高程产品使用地形工作流,在生成 DEM 前使用点云工作流,并根据景观特征和尺度选择地形校正方法及流向算法。
  • **验证流程:**检查派生量分布、山体阴影伪影、河网叠加结果、流域面积、出水口吸附、阈值敏感性和高程控制点残差。
  • **失败模式:**因误用 DSM、地理坐标单位下的坡度、垂直基准面不匹配、障碍物未校正、NoData 污染、出水口未吸附,或分辨率超出源数据支持范围而拒绝产品。
  • **交付物:**校正后的 DEM、派生量和水文产品、参数与阈值记录、CRS 和垂直基准面、QA 地图、验证指标及局限性。
  • **来源时效性:**应用工具算法或产品规则前,请查阅权威来源注册表,并记录查阅日期。

评论

支持 Markdown