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 17 stars 1 forks Updated 1 weeks ago MIT

Install

View on GitHub

Quality Score: 81/100

Stars 20%
42
Recency 20%
90
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
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 months ago
Last Updated
1 weeks ago
Language
Python
License
MIT

Bundled in these plugins

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. This skill owns vertical datum agreement, co-registration, and vertical-accuracy budgets whenever two acquisitions are differenced, including subsidence and elevation-change claims. Route analysis of an already derived DEM, DTM, DSM, or CHM to terrain-hydrology unless point-level classification, comparability, or metrics remain in scope.

17 Updated 1 weeks ago
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.

17 Updated 1 weeks ago
muend
AI & Automation Listed

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).

27 Updated 4 days ago
Zhonghao1995