Add geomorphons and topographic openness
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start by inspecting the existing Weiss TPI-based landform classification and hydrology tools in xarray-spatial. Map the scope into geomorphons, positive and negative topographic openness, and per-basin hypsometric curves and integrals; done means all requested outputs, parameters, ray directions, and the stated dask or parallelization behavior are supported.
Written by the indexing model from the issue text.
Description
The current landform classification uses Weiss TPI-based classes, which are sensitive to window size and don't generalize well across scales. Geomorphons (Jasiewicz & Stepinski 2013) are a better alternative that classifies landforms using ternary pattern recognition from line-of-sight profiles.
Scope
Geomorphons. Produce a 10-class landform map (flat, summit, ridge, shoulder, spur, slope, hollow, footslope, valley, depression) from 8-direction line-of-sight profiles. Parameters: search radius and flatness threshold. Each pixel gets a ternary pattern based on whether neighboring terrain along each profile is higher, lower, or at the same level, and that pattern maps to one of the 10 forms.
Positive and negative topographic openness. For each cell, compute the mean zenith angle (positive openness) or mean nadir angle (negative openness) along 8 azimuth directions. These are related to but distinct from sky view factor. Positive openness highlights valleys and depressions; negative openness highlights ridges and peaks. Useful on their own as terrain visualization tools and as inputs to other analyses.
Hypsometric curves and integrals per basin. Given a DEM and basin delineation raster, compute the hypsometric curve (area-altitude relationship) and hypsometric integral for each basin. This pairs well with the existing hydrology tools.
Implementation notes
Geomorphons are straightforward to parallelize since each pixel looks independently along radial profiles out to the search radius. The only data dependency is the elevation values along each ray. This makes it a good candidate for GPU kernels where each thread handles one pixel and walks 8 directions.
For dask, use map_overlap with depth equal to the search radius.
Topographic openness follows the same pattern (8 radial profiles per pixel), so it can share the same ray-walking infrastructure as geomorphons.
Reference
Jasiewicz, J. & Stepinski, T.F. (2013). "Geomorphons — a pattern recognition approach to classification and mapping of landforms." Geomorphology, 182, 147-156.
- Dominant language
- Python
- Stars
- 972
- Forks
- 92
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 7
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from xarray-contrib/xarray-spatial
-
Difficulty 1/5 Under an hour Newbie friendliness 68/100
xarray-contrib/xarray-spatial#3726 ·
-
api area:surface bug severity:medium sweep-api-consistency
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
xarray-contrib/xarray-spatial#3712 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
xarray-contrib/xarray-spatial#3710 ·
-
bug
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
xarray-contrib/xarray-spatial#3707 ·
-
area:surface documentation user-guide-example
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
xarray-contrib/xarray-spatial#3464 ·
All issues in xarray-contrib/xarray-spatial
Similar issues
-
link-check link-check:sphinx-theme
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
OpenHands/extensions#626 · 1 comment ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
CSCfi/sd-search-api#39 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100