Geoskill: DEM Terrain Analysis

Generate slope, aspect, hillshade, contour, curvature, flow direction, and accumulation terrain products from DEM data using pure Python.

ruiduobao

@ruiduobao

What This Skill Does

Pure Python CLI tool that generates common terrain derivatives from Digital Elevation Model (DEM) data, including slope, aspect, hillshade, contour lines, curvature, TRI, TPI, roughness, flow direction, flow accumulation, watershed, and viewshed.

Replaces reliance on GIS desktop software or commercial libraries for terrain analysis by providing a lightweight, dependency-free command-line tool.

When to Use It

  • Generate slope and aspect maps from a DEM for terrain classification
  • Create hillshade visualizations for cartographic basemaps
  • Extract contour lines at specified intervals for topographic mapping
  • Compute flow direction and accumulation for hydrological modeling
  • Calculate terrain ruggedness index (TRI) for habitat suitability analysis
  • Perform viewshed analysis to determine visible areas from an observation point

Install

$ openclaw skills install @ruiduobao/dem-terrain-analysis

DEM Terrain Analysis

Generate common terrain derivatives from DEM (Digital Elevation Model) data using pure Python.

Features

  • Slope — rate of elevation change (degrees or percent)
  • Aspect — compass direction of slope (degrees from north)
  • Hillshade — simulated illumination visualization
  • Contour — iso-line vectors at specified intervals (GeoJSON)
  • Curvature — plan and profile curvature
  • Terrain Ruggedness Index (TRI) — elevation difference with neighbors
  • Topographic Position Index (TPI) — relative neighborhood elevation
  • Roughness — max elevation difference in neighborhood
  • Flow Direction (D8) — steepest descent direction
  • Flow Accumulation — upstream contributing cells
  • Watershed — upstream catchment from outlet point
  • Viewshed — visible area from observer point

Usage

# Slope analysis
python dem-terrain-analysis.py slope input_dem.tif --output slope.tif --unit degrees

# Aspect analysis
python dem-terrain-analysis.py aspect input_dem.tif --output aspect.tif

# Hillshade
python dem-terrain-analysis.py hillshade input_dem.tif --output hillshade.tif --azimuth 315 --altitude 45

# Contour
python dem-terrain-analysis.py contour input_dem.tif --output contour.geojson --interval 10

# Curvature
python dem-terrain-analysis.py curvature input_dem.tif --output curvature.tif --type plan

# TRI / TPI / Roughness
python dem-terrain-analysis.py tri input_dem.tif --output tri.tif
python dem-terrain-analysis.py tpi input_dem.tif --output tpi.tif --window 3
python dem-terrain-analysis.py roughness input_dem.tif --output roughness.tif

# Hydrology analysis
python dem-terrain-analysis.py flowdir input_dem.tif --output flowdir.tif
python dem-terrain-analysis.py flowacc input_dem.tif --output flowacc.tif

# Batch generate all products
python dem-terrain-analysis.py batch input_dem.tif --output-dir ./terrain/

Algorithm Notes

  • 3x3 window convolution: slope, aspect, hillshade, curvature use Zevenbergen-Thorne algorithm
  • D8 flow direction: computes slope in 8 directions, picks steepest
  • Marching Squares: contour generation via marching squares algorithm
  • Pure Python: no external dependencies

中文说明

从DEM(数字高程模型)数据派生常见地形产品的纯Python CLI工具。

功能特性

  • 坡度 (Slope) - 高程变化率,支持度数和百分比
  • 坡向 (Aspect) - 坡面朝向(北向起算角度)
  • 山体阴影 (Hillshade) - 模拟光照的可视化产品
  • 等高线 (Contour) - 指定间距的等值线(GeoJSON矢量)
  • 曲率 (Curvature) - 平面曲率和剖面曲率
  • 地形粗糙度指数 (TRI) - 相邻像元高程差
  • 地形位置指数 (TPI) - 相对邻域高程
  • 粗糙度 (Roughness) - 邻域最大高程差
  • 流向 (Flow Direction) - D8算法最陡下降方向
  • 汇流累积 (Flow Accumulation) - 上游汇流像元数
  • 流域划分 (Watershed) - 给定出口点划定上游流域
  • 视域 (Viewshed) - 给定观察点的可视区域

使用方法

# 坡度分析
python dem-terrain-analysis.py slope input_dem.tif --output slope.tif --unit degrees

# 坡向分析
python dem-terrain-analysis.py aspect input_dem.tif --output aspect.tif

# 山体阴影
python dem-terrain-analysis.py hillshade input_dem.tif --output hillshade.tif --azimuth 315 --altitude 45

# 等高线
python dem-terrain-analysis.py contour input_dem.tif --output contour.geojson --interval 10

# 曲率
python dem-terrain-analysis.py curvature input_dem.tif --output curvature.tif --type plan

# TRI/TPI/粗糙度
python dem-terrain-analysis.py tri input_dem.tif --output tri.tif
python dem-terrain-analysis.py tpi input_dem.tif --output tpi.tif --window 3
python dem-terrain-analysis.py roughness input_dem.tif --output roughness.tif

# 水文分析
python dem-terrain-analysis.py flowdir input_dem.tif --output flowdir.tif
python dem-terrain-analysis.py flowacc input_dem.tif --output flowacc.tif

# 批量生成所有产品
python dem-terrain-analysis.py batch input_dem.tif --output-dir ./terrain/

算法说明

  • 3×3窗口卷积: 坡度、坡向、山体阴影、曲率使用3×3窗口的Zevenbergen-Thorne算法
  • D8流向: 计算8个方向的坡度,选择最陡方向作为流向
  • Marching Squares: 等高线生成使用marching squares算法提取等值线
  • 纯Python实现: 仅使用Python标准库,无外部依赖

Top skills in this category