terrain-hydrology

Solid

Always invoke for terrain, drainage, viewshed, or visibility analysis from elevation, even before the DEM or correct surface is chosen. Covers DTM-versus-DSM selection, slope, aspect, curvature, hillshade, conditioning, flow direction/accumulation, streams, watersheds, and catchments. Use point-cloud-lidar first only when an elevation surface must be created from LiDAR or photogrammetric points.

AI & Automation 3 stars 0 forks Updated yesterday MIT

Install

View on GitHub

Quality Score: 79/100

Stars 20%
20
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Terrain & Hydrology Purpose: terrain products whose numbers are physically meaningful. The two recurring failure modes: **unit mismatch** (degree coordinates with meter elevations silently corrupts every derivative) and **unconditioned DEMs** (flow routed into spurious pits produces fragmented, fictional streams). ## DEM hygiene first | Check | Rule | |---|---| | Surface type | **DTM** (bare earth) for hydrology/slope; **DSM** (with canopy/buildings) for viewshed/solar. Using a DSM for watersheds routes rivers over treetops. | | Source | Copernicus GLO-30 > SRTM for most global work; national LiDAR DTMs when available (see `point-cloud-lidar` to make your own). Record source + acquisition date. | | Nodata | Identify the nodata value (-9999, -32768, 3.4e38) and mask it — never let it enter statistics or fill algorithms as "very deep hole". | | Voids | Fill data voids (interpolation from edges) BEFORE hydrological conditioning; document filled areas. | | **CRS + units** | Reproject to a projected CRS so horizontal units = vertical units (meters). Slope from a 4326 DEM without z-factor correction is the classic silent error. If staying geographic, apply a latitude-dependent z-factor — better: don't. | ## Derivatives ```python 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") ``` - Slope: state units (degrees vs percent — 45° = 100%); ...

Details

Author
muend
Repository
muend/geoai-skills
Created
1 weeks ago
Last Updated
yesterday
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category

DevOps & Infrastructure Solid

point-cloud-lidar

LiDAR and point cloud processing: PDAL pipelines, LAS/LAZ/COPC handling, ground classification, DTM/DSM/CHM generation, canopy and building metrics, and photogrammetric (SfM) point clouds. Use when the primary input is LAS, LAZ, COPC, LiDAR, or an unstructured 3D point cloud. Route analysis of an already derived DEM, DTM, DSM, or CHM to terrain-hydrology unless point-level classification or metrics remain in scope.

3 Updated yesterday
muend
AI & Automation Solid

remote-sensing-analysis

Always invoke for classical analysis, classification, validation, or comparability of satellite, aerial, or drone imagery. This skill owns sensor/product/processing-level harmonization, including multi-date inputs; add change-detection only after comparable observations exist. Covers spectral indices, masking, compositing, SAR, land cover, and accuracy assessment. Route neural methods to geo-deep-learning and planetary server-side execution to google-earth-engine.

3 Updated yesterday
muend
AI & Automation Solid

swmm-gis

GIS/DEM preprocessing for SWMM experiments using the user's own QGIS/GRASS layers. Use when the user asks to (1) delineate subcatchments through QGIS/GRASS (standard or entropy-guided), (2) preprocess QGIS-derived subcatchment polygons into builder-ready CSV, (3) identify high-entropy hotspot subcatchments, or (4) expose QGIS/GRASS-backed preprocessing as MCP tools for reproducible workflows. For bbox-only inputs WITHOUT real pipe data, use `swmm-anywhere` instead (it synthesises a plausible network from OSM streets + DEM).

21 Updated 3 days ago
Zhonghao1995