pytopocomplexity 0.7.4__tar.gz → 0.7.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/PKG-INFO +27 -26
- pytopocomplexity-0.7.5/README-pypi.md +63 -0
- pytopocomplexity-0.7.5/README.md +133 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pyproject.toml +0 -1
- pytopocomplexity-0.7.5/pytopocomplexity/__init__.py +6 -0
- pytopocomplexity-0.7.5/pytopocomplexity/pycwtmexhat.py +343 -0
- pytopocomplexity-0.7.5/pytopocomplexity/pyfracd.py +575 -0
- pytopocomplexity-0.7.5/pytopocomplexity/pyrugosity.py +421 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pytopocomplexity.egg-info/PKG-INFO +27 -26
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pytopocomplexity.egg-info/requires.txt +0 -1
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/setup.py +1 -2
- pytopocomplexity-0.7.4/README-pypi.md +0 -62
- pytopocomplexity-0.7.4/README.md +0 -140
- pytopocomplexity-0.7.4/pytopocomplexity/__init__.py +0 -5
- pytopocomplexity-0.7.4/pytopocomplexity/pycwtmexhat.py +0 -149
- pytopocomplexity-0.7.4/pytopocomplexity/pyfracd.py +0 -259
- pytopocomplexity-0.7.4/pytopocomplexity/pyrugosity.py +0 -119
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/LICENSE +0 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pytopocomplexity.egg-info/SOURCES.txt +0 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pytopocomplexity.egg-info/dependency_links.txt +0 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/pytopocomplexity.egg-info/top_level.txt +0 -0
- {pytopocomplexity-0.7.4 → pytopocomplexity-0.7.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytopocomplexity
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.5
|
|
4
4
|
Summary: A package for topographic complexity analysis
|
|
5
5
|
Home-page: https://github.com/GeoLarryLai/pyTopoComplexity
|
|
6
6
|
Author: Larry Syu-Heng Lai
|
|
@@ -216,16 +216,16 @@ Requires-Python: >=3.10
|
|
|
216
216
|
Description-Content-Type: text/markdown
|
|
217
217
|
License-File: LICENSE
|
|
218
218
|
|
|
219
|
-
# pyTopoComlexity
|
|
219
|
+
# pyTopoComlexity
|
|
220
220
|
[](https://doi.org/10.5281/zenodo.11239338)
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
**pyTopoComplexity** is an open-source Python package designed to measure the topographic complexity (i.e., surface roughness) of land surfaces using digital elevation model (DEM) data. This package includes modules for three methods commonly used in the fields of geomorphology and oceanography for measuring topographic complexity, which are not fully available in Geographic Information System (GIS) software like QGIS.
|
|
223
223
|
|
|
224
|
-
| Modules | Method Descriptions |
|
|
225
|
-
| ------------- | ------------- |
|
|
226
|
-
| pycwtmexhat.py
|
|
227
|
-
| pyfracd.py
|
|
228
|
-
| pyrugostiy.py
|
|
224
|
+
| Modules | Classes | Method Descriptions |
|
|
225
|
+
| ------------- | ------------- | ------------- |
|
|
226
|
+
| pycwtmexhat.py | CWTMexHat | Quanitfy the wavelet-based curvature of the terrain surface using two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet |
|
|
227
|
+
| pyfracd.py | FracD | Conduct fractal dimension analysis on the terrain surface using variogram procedure |
|
|
228
|
+
| pyrugostiy.py | RugosityIndex | Calculate rugosity index of the terrain surface |
|
|
229
229
|
|
|
230
230
|
## Installation
|
|
231
231
|
|
|
@@ -235,46 +235,47 @@ pip install pytopocomplexity
|
|
|
235
235
|
|
|
236
236
|
## Modules for Surface Complexity Measurement
|
|
237
237
|
|
|
238
|
-
### 1.
|
|
238
|
+
### 1. Two-Dimensional Continuous Wavelet Transform Analysis
|
|
239
239
|
|
|
240
240
|
```python
|
|
241
|
-
from pytopocomplexity import
|
|
241
|
+
from pytopocomplexity import CWTMexHat
|
|
242
242
|
```
|
|
243
243
|
|
|
244
|
-
The module
|
|
244
|
+
The module **pycwtmexhat.py** uses two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet to measure the topographic complexity (i.e., surface roughness) of a land surface from a Digital Elevation Model (DEM). Such method quanitfy the wavelet-based curvature of the surface, which has been proposed to be a effective geomorphic metric for identifying and estimating the ages of historical deep-seated landslide deposits.
|
|
245
245
|
|
|
246
246
|
The method and early version of the code was developed by Dr. Adam M. Booth (Portland State Univeristy) in [2009](https://doi.org/10.1016/j.geomorph.2009.02.027), written in MATLAB (Source code available from [Booth's personal website](https://web.pdx.edu/~boothad/tools.html)). This MATLAB code was later revised and adapted by Dr. Sean R. LaHusen (Univeristy of Washington) and Dr. Erich N. Herzig (Univeristy of Washington) in their research ([LaHusen et al., 2020](https://doi.org/10.1126/sciadv.aba6790); [Herzig et al. (2023)](https://doi.org/10.1785/0120230079)). Dr. Larry Syu-Heng Lai (Univeristy of Washington), under the supervision of Dr. Alison R. Duvall (Univeristy of Washington), translated the code into this optimized open-source Python version in 2024.
|
|
247
247
|
|
|
248
|
-
### 2.
|
|
248
|
+
### 2. Fractal Dimentsion Analysis
|
|
249
249
|
|
|
250
250
|
```python
|
|
251
|
-
from pytopocomplexity import
|
|
251
|
+
from pytopocomplexity import FracD
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
The
|
|
254
|
+
The **pyfracd.py** module calculates local fractal dimensions to assess topographic complexity. It also computes reliability parameters such as the standard error and the coefficient of determination (R²). The development of this module was greatly influenced by the Fortran code shared by Dr. Eulogio Pardo-Igúzquiza from his work in [Pardo-Igúzquiza and Dowd (2022)](https://doi.org/10.1016/j.icarus.2022.115109).
|
|
255
255
|
|
|
256
256
|
The local fractal dimension is determined by intersecting the surface within a moving window with four vertical planes in principal geographical directions, simplifying the problem to one-dimensional topographic profiles. The fractal dimension of these profiles is estimated using the variogram method, which models the relationship between dissimilarity and distance using a power-law function. While the fractal dimension value does not directly scale with the degree of surface roughness, smoother or more regular surfaces generally have lower fractal dimension values (closer to 2), whereas surfaces with higher fractal dimension values tend to be more complex or irregular. This method has been applied in terrain analysis for understanding spatial variability in surface roughness, classifying geomorphologic features, uncovering hidden spatial structures, and supporting geomorphological and geological mapping on Earth and other planetary bodies.
|
|
257
257
|
|
|
258
|
-
### 3.
|
|
258
|
+
### 3. Rugosity Index Calculation
|
|
259
259
|
|
|
260
260
|
```python
|
|
261
|
-
from pytopocomplexity import
|
|
261
|
+
from pytopocomplexity import RugosityIndex
|
|
262
262
|
```
|
|
263
263
|
|
|
264
|
-
The module
|
|
264
|
+
The module **pyrugosity.py** measure rugosity index of the land surface, which is widely used to assess landscape structural complexity.
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
By definition, the rugosity index has a minimum value of one, representing a completely flat surface. Typical values of the conventional rugosity index without slope correction ([Jenness, 2004](https://onlinelibrary.wiley.com/doi/abs/10.2193/0091-7648%282004%29032%5B0829%3ACLSAFD%5D2.0.CO%3B2)) range from one to three, although larger values are possible in very steep terrains. The slope-corrected rugosity index, also known as the Arc-Chord Ratio (ACR) rugosity index ([Du Preez, 2015](https://doi.org/10.1007/s10980-014-0118-8)), provides a better representation of local surface complexity. This method has been applied in classifying seafloor types by marine geologists and geomorphologists, studying small-scale hydrodynamics by oceanographers, and assessing available habitats in landscapes by ecologists and coral biologists.
|
|
267
267
|
|
|
268
268
|
## Requirements
|
|
269
269
|
For `pytopocomplexity` package
|
|
270
270
|
* Python >= 3.10
|
|
271
|
-
* `numpy`
|
|
272
|
-
* `scipy`
|
|
273
|
-
* `rasterio`
|
|
274
|
-
* `dask`
|
|
275
|
-
* `matplotlib`
|
|
276
|
-
* `tqdm`
|
|
277
|
-
* `numba`
|
|
271
|
+
* `numpy` >= 1.24
|
|
272
|
+
* `scipy` >= 1.10
|
|
273
|
+
* `rasterio` >= 1.3
|
|
274
|
+
* `dask` >= 2024.3
|
|
275
|
+
* `matplotlib` >= 3.7
|
|
276
|
+
* `tqdm` >= 4.66
|
|
277
|
+
* `numba` >= 0.57
|
|
278
|
+
* `statsmodels` >= 0.14
|
|
278
279
|
|
|
279
280
|
## License
|
|
280
|
-
pyTopoComlexity is licensed under the [Apache License 2.0](LICENSE).
|
|
281
|
+
**pyTopoComlexity** is licensed under the [Apache License 2.0](LICENSE).
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# pyTopoComlexity
|
|
2
|
+
[](https://doi.org/10.5281/zenodo.11239338)
|
|
3
|
+
|
|
4
|
+
**pyTopoComplexity** is an open-source Python package designed to measure the topographic complexity (i.e., surface roughness) of land surfaces using digital elevation model (DEM) data. This package includes modules for three methods commonly used in the fields of geomorphology and oceanography for measuring topographic complexity, which are not fully available in Geographic Information System (GIS) software like QGIS.
|
|
5
|
+
|
|
6
|
+
| Modules | Classes | Method Descriptions |
|
|
7
|
+
| ------------- | ------------- | ------------- |
|
|
8
|
+
| pycwtmexhat.py | CWTMexHat | Quanitfy the wavelet-based curvature of the terrain surface using two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet |
|
|
9
|
+
| pyfracd.py | FracD | Conduct fractal dimension analysis on the terrain surface using variogram procedure |
|
|
10
|
+
| pyrugostiy.py | RugosityIndex | Calculate rugosity index of the terrain surface |
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pip install pytopocomplexity
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Modules for Surface Complexity Measurement
|
|
19
|
+
|
|
20
|
+
### 1. Two-Dimensional Continuous Wavelet Transform Analysis
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from pytopocomplexity import CWTMexHat
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The module **pycwtmexhat.py** uses two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet to measure the topographic complexity (i.e., surface roughness) of a land surface from a Digital Elevation Model (DEM). Such method quanitfy the wavelet-based curvature of the surface, which has been proposed to be a effective geomorphic metric for identifying and estimating the ages of historical deep-seated landslide deposits.
|
|
27
|
+
|
|
28
|
+
The method and early version of the code was developed by Dr. Adam M. Booth (Portland State Univeristy) in [2009](https://doi.org/10.1016/j.geomorph.2009.02.027), written in MATLAB (Source code available from [Booth's personal website](https://web.pdx.edu/~boothad/tools.html)). This MATLAB code was later revised and adapted by Dr. Sean R. LaHusen (Univeristy of Washington) and Dr. Erich N. Herzig (Univeristy of Washington) in their research ([LaHusen et al., 2020](https://doi.org/10.1126/sciadv.aba6790); [Herzig et al. (2023)](https://doi.org/10.1785/0120230079)). Dr. Larry Syu-Heng Lai (Univeristy of Washington), under the supervision of Dr. Alison R. Duvall (Univeristy of Washington), translated the code into this optimized open-source Python version in 2024.
|
|
29
|
+
|
|
30
|
+
### 2. Fractal Dimentsion Analysis
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from pytopocomplexity import FracD
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The **pyfracd.py** module calculates local fractal dimensions to assess topographic complexity. It also computes reliability parameters such as the standard error and the coefficient of determination (R²). The development of this module was greatly influenced by the Fortran code shared by Dr. Eulogio Pardo-Igúzquiza from his work in [Pardo-Igúzquiza and Dowd (2022)](https://doi.org/10.1016/j.icarus.2022.115109).
|
|
37
|
+
|
|
38
|
+
The local fractal dimension is determined by intersecting the surface within a moving window with four vertical planes in principal geographical directions, simplifying the problem to one-dimensional topographic profiles. The fractal dimension of these profiles is estimated using the variogram method, which models the relationship between dissimilarity and distance using a power-law function. While the fractal dimension value does not directly scale with the degree of surface roughness, smoother or more regular surfaces generally have lower fractal dimension values (closer to 2), whereas surfaces with higher fractal dimension values tend to be more complex or irregular. This method has been applied in terrain analysis for understanding spatial variability in surface roughness, classifying geomorphologic features, uncovering hidden spatial structures, and supporting geomorphological and geological mapping on Earth and other planetary bodies.
|
|
39
|
+
|
|
40
|
+
### 3. Rugosity Index Calculation
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
from pytopocomplexity import RugosityIndex
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The module **pyrugosity.py** measure rugosity index of the land surface, which is widely used to assess landscape structural complexity.
|
|
47
|
+
|
|
48
|
+
By definition, the rugosity index has a minimum value of one, representing a completely flat surface. Typical values of the conventional rugosity index without slope correction ([Jenness, 2004](https://onlinelibrary.wiley.com/doi/abs/10.2193/0091-7648%282004%29032%5B0829%3ACLSAFD%5D2.0.CO%3B2)) range from one to three, although larger values are possible in very steep terrains. The slope-corrected rugosity index, also known as the Arc-Chord Ratio (ACR) rugosity index ([Du Preez, 2015](https://doi.org/10.1007/s10980-014-0118-8)), provides a better representation of local surface complexity. This method has been applied in classifying seafloor types by marine geologists and geomorphologists, studying small-scale hydrodynamics by oceanographers, and assessing available habitats in landscapes by ecologists and coral biologists.
|
|
49
|
+
|
|
50
|
+
## Requirements
|
|
51
|
+
For `pytopocomplexity` package
|
|
52
|
+
* Python >= 3.10
|
|
53
|
+
* `numpy` >= 1.24
|
|
54
|
+
* `scipy` >= 1.10
|
|
55
|
+
* `rasterio` >= 1.3
|
|
56
|
+
* `dask` >= 2024.3
|
|
57
|
+
* `matplotlib` >= 3.7
|
|
58
|
+
* `tqdm` >= 4.66
|
|
59
|
+
* `numba` >= 0.57
|
|
60
|
+
* `statsmodels` >= 0.14
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
**pyTopoComlexity** is licensed under the [Apache License 2.0](LICENSE).
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# pyTopoComlexity
|
|
2
|
+
[](https://doi.org/10.5281/zenodo.11239338)
|
|
3
|
+
<p align="left">
|
|
4
|
+
<img src="image/pyTopoComplexity_logo.png" width="30%" height="30%""/>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
**pyTopoComplexity** is an open-source Python package designed to measure the topographic complexity (i.e., surface roughness) of land surfaces using digital elevation model (DEM) data. This package includes modules for three methods commonly used in the fields of geomorphology and oceanography for measuring topographic complexity, which are not fully available in Geographic Information System (GIS) software like QGIS.
|
|
8
|
+
|
|
9
|
+
| Modules | Classes | Method Descriptions |
|
|
10
|
+
| ------------- | ------------- | ------------- |
|
|
11
|
+
| pycwtmexhat.py | CWTMexHat | Quanitfy the wavelet-based curvature of the terrain surface using two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet |
|
|
12
|
+
| pyfracd.py | FracD | Conduct fractal dimension analysis on the terrain surface using variogram procedure |
|
|
13
|
+
| pyrugostiy.py | RugosityIndex | Calculate rugosity index of the terrain surface |
|
|
14
|
+
|
|
15
|
+
In this GitHub repository, each module has a corresponding example Jupyter Notebook file that includes detailed instructions on module usage and brief explanations of the applied theories with cited references. Example raster file data are included in the `~/example/` folder.
|
|
16
|
+
|
|
17
|
+
There is also an additional Jupyter Notebook, **nonlineardiff_Landlab.ipynb**, which leverages the power of [Landlab](https://landlab.readthedocs.io/en/latest/index.html) to perform forward simulation of landscape smoothing through non-linear hillslope diffusion process.
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
pip install pytopocomplexity
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Citation
|
|
26
|
+
|
|
27
|
+
A manuscript is being prepared for submission to the [Journal of Open Source Software](https://joss.theoj.org). If you use pyTopoComplexity and the associated Jupyter Notebooks in your work, please consider citing the paper once it is accepted. In the meantime, users may cite the [Zenodo DOI](https://doi.org/10.5281/zenodo.11239338)).
|
|
28
|
+
|
|
29
|
+
## Modules for Surface Complexity Measurement
|
|
30
|
+
|
|
31
|
+
### 1. Two-Dimensional Continuous Wavelet Transform Analysis
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from pytopocomplexity import CWTMexHat
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The module **pycwtmexhat.py** uses two-dimensional continuous wavelet transform (2D-CWT) with a Mexican Hat wevalet to measure the topographic complexity (i.e., surface roughness) of a land surface from a Digital Elevation Model (DEM). Such method quanitfy the wavelet-based curvature of the surface, which has been proposed to be a effective geomorphic metric for identifying and estimating the ages of historical deep-seated landslide deposits.
|
|
38
|
+
|
|
39
|
+
The method and early version of the code was developed by Dr. Adam M. Booth (Portland State Univeristy) in [2009](https://doi.org/10.1016/j.geomorph.2009.02.027), written in MATLAB (source code available from [Booth's personal website](https://web.pdx.edu/~boothad/tools.html)). This MATLAB code was later revised and adapted by Dr. Sean R. LaHusen (Univeristy of Washington) and Dr. Erich N. Herzig (Univeristy of Washington) in their research ([LaHusen et al., 2020](https://doi.org/10.1126/sciadv.aba6790); [Herzig et al. (2023)](https://doi.org/10.1785/0120230079)). Dr. Larry Syu-Heng Lai (Univeristy of Washington), under the supervision of Dr. Alison R. Duvall (Univeristy of Washington), translated the code into this optimized open-source Python version in 2024.
|
|
40
|
+
|
|
41
|
+
See **pycwtmexhat_example.ipynb** for detailed explanations and usage instructions.
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="image/CWTMexHat.png" width="100%" height="100%""/>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
### 2. Fractal Dimentsion Analysis
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from pytopocomplexity import FracD
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The **pyfracd.py** module calculates local fractal dimensions to assess topographic complexity. It also computes reliability parameters such as the standard error and the coefficient of determination (R²). The development of this module was greatly influenced by the Fortran code shared by Dr. Eulogio Pardo-Igúzquiza from his work in [Pardo-Igúzquiza and Dowd (2022)](https://doi.org/10.1016/j.icarus.2022.115109).
|
|
54
|
+
|
|
55
|
+
The local fractal dimension is determined by intersecting the surface within a moving window with four vertical planes in principal geographical directions, simplifying the problem to one-dimensional topographic profiles. The fractal dimension of these profiles is estimated using the variogram method, which models the relationship between dissimilarity and distance using a power-law function. While the fractal dimension value does not directly scale with the degree of surface roughness, smoother or more regular surfaces generally have lower fractal dimension values (closer to 2), whereas surfaces with higher fractal dimension values tend to be more complex or irregular. This method has been applied in terrain analysis for understanding spatial variability in surface roughness, classifying geomorphologic features, uncovering hidden spatial structures, and supporting geomorphological and geological mapping on Earth and other planetary bodies.
|
|
56
|
+
|
|
57
|
+
See **pyfracd_example.ipynb** for detailed explanations and usage instructions.
|
|
58
|
+
|
|
59
|
+
<p align="center">
|
|
60
|
+
<img src="image/FracD.png" width="100%" height="100%""/>
|
|
61
|
+
</p>
|
|
62
|
+
|
|
63
|
+
### 3. Rugosity Index Calculation
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from pytopocomplexity import RugosityIndex
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The module **pyrugosity.py** measure rugosity index of the land surface, which is widely used to assess landscape structural complexity.
|
|
70
|
+
|
|
71
|
+
By definition, the rugosity index has a minimum value of one, representing a completely flat surface. Typical values of the conventional rugosity index without slope correction ([Jenness, 2004](https://onlinelibrary.wiley.com/doi/abs/10.2193/0091-7648%282004%29032%5B0829%3ACLSAFD%5D2.0.CO%3B2)) range from one to three, although larger values are possible in very steep terrains. The slope-corrected rugosity index, also known as the Arc-Chord Ratio (ACR) rugosity index ([Du Preez, 2015](https://doi.org/10.1007/s10980-014-0118-8)), provides a better representation of local surface complexity. This method has been applied in classifying seafloor types by marine geologists and geomorphologists, studying small-scale hydrodynamics by oceanographers, and assessing available habitats in landscapes by ecologists and coral biologists.
|
|
72
|
+
|
|
73
|
+
See **pyrugosity_example.ipynb** for detailed explanations and usage instructions.
|
|
74
|
+
|
|
75
|
+
<p align="center">
|
|
76
|
+
<img src="image/RugosityIndex.png" width="100%" height="100%""/>
|
|
77
|
+
</p>
|
|
78
|
+
|
|
79
|
+
## Forward Simulation of Landscape Smoothing through Nonlinear Hillslope Diffusion Process
|
|
80
|
+
|
|
81
|
+
In the `~/example/` folder, the Jupyter Notebook file **nonlineardiff_Landlab.ipynb** demonstrates the use of [Landlab](https://landlab.readthedocs.io/en/latest/index.html), an open-source Python framework for simulating landscape evolution, to model topographic smoothing driven by near-surface soil disturbance and downslope soil creep processes. Specifically, this notebook employs the [`TaylorNonLinearDiffuser`](https://landlab.readthedocs.io/en/latest/reference/components/taylor_nonlinear_hillslope_flux.html) component from [Landlab](https://landlab.readthedocs.io/en/latest/index.html), described as one element in the [`terrainBento`](https://github.com/TerrainBento/terrainbento) package, developed by [Barnhart et al. (2019)](https://gmd.copernicus.org/articles/12/1267/2019/), to simulate topographic smoothing over time through non-linear hillslope diffusion processes ([Roering et al., 1999](https://doi.org/10.1029/1998WR900090)).
|
|
82
|
+
|
|
83
|
+
Users need to define the diffusion coefficient (K) for the simulation. The code will automatically detect the units of the XYZ directions (must be in feet or meters) of the input DEM raster file and convert the unit for K accordingly.
|
|
84
|
+
|
|
85
|
+
<p align="center">
|
|
86
|
+
<img src="image/NonlinearDiff_demo.gif" width="65%" height="65%" align="center"/>
|
|
87
|
+
</p>
|
|
88
|
+
|
|
89
|
+
## Example DEM Raster Files
|
|
90
|
+
|
|
91
|
+
This repository include example LiDAR DEM files under `~/example/ExampleDEM/` that cover the area and nearby region of a deep-seated landslide occurred in 2014 at Oso area of the North Fork Stillaguamish River (NFSR) valley, Washington State, USA. The souce LiDAR DEM files were compiled from 'Stillaguamish 2014' and 'Snohoco Hazel 2006' projects that was originally contracted by Washington State Department of Transportation (WSDOT), downloaded from the [Washington Lidar Portal](http://lidarportal.dnr.wa.gov) on April 4, 2024.
|
|
92
|
+
|
|
93
|
+
A goal of this work allow users to reproduce the research by [Booth et al. (2017)](https://doi.org/10.1002/2016JF003934) and permit comparison of topographic complexity metrics derived from other regions using **pyTopoComplexity** package and the **nonlineardiff_Landlab.ipynb** simulation tools presented in this repository.
|
|
94
|
+
|
|
95
|
+
The example DEM raster files have various grid size, coordinate reference system (CRS), and unit of grid value (elevation, Z).
|
|
96
|
+
|
|
97
|
+
| LiDAR DEM Files | CRS | XY Grid Size | Z Unit | Descriptions |
|
|
98
|
+
| ------------- | ------------- | ------------- | ------------- | ------------- |
|
|
99
|
+
| Ososlid2014_f_3ftgrid.tif | NAD83/Washington South (ftUS) (EPSG: 2286) | 3.0 [US survey feet] | US survey feet | 2014 Oso Landslide |
|
|
100
|
+
| Ososlid2014_m_3ftgrid.tif | NAD83/Washington South (EPSG: 32149) | ~0.9144 [meters] | meters | 2014 Oso Landslide |
|
|
101
|
+
| Ososlid2014_f_6ftgrid.tif | NAD83/Washington South (ftUS) (EPSG: 2286) | 6.0 [US survey feet] | US survey feet | 2014 Oso Landslide |
|
|
102
|
+
| Ososlid2014_m_6ftgrid.tif | NAD83/Washington South (EPSG: 32149) | ~1.8288 [meters] | meters | 2014 Oso Landslide |
|
|
103
|
+
| Osoarea2014_f_6ftgrid.tif | NAD83/Washington South (ftUS) (EPSG: 2286) | 6.0 [US survey feet] | US survey feet | 2014 Oso Landslide & nearby NFSR valley |
|
|
104
|
+
|
|
105
|
+
> [!NOTE]
|
|
106
|
+
> When testing the code with the example DEM files, users should place the entire `~/ExampleDEM/` subfolder in the same directory as the Jupyter Notebook files. Both the **pyTopoComplexity** package and the **nonlineardiff_landlab.ipynb** land-smoothing modeling tool have the capability to automatically detect the grid spacing and the units of the XYZ directions (must be in feet or meters) of the input DEM raster and compute the results in SI units.
|
|
107
|
+
|
|
108
|
+
## Requirements
|
|
109
|
+
For **pyTopoComplexity** package
|
|
110
|
+
* Python >= 3.10
|
|
111
|
+
* `numpy` >= 1.24
|
|
112
|
+
* `scipy` >= 1.10
|
|
113
|
+
* `rasterio` >= 1.3
|
|
114
|
+
* `dask` >= 2024.3
|
|
115
|
+
* `matplotlib` >= 3.7
|
|
116
|
+
* `tqdm` >= 4.66
|
|
117
|
+
* `numba` >= 0.57
|
|
118
|
+
* `statsmodels` >= 0.14
|
|
119
|
+
|
|
120
|
+
Additional packages for Jupyter Notebook examples:
|
|
121
|
+
* `pandas` >= 2.1
|
|
122
|
+
* `jupyter` >= 1.0
|
|
123
|
+
|
|
124
|
+
for landscape smoothing simulation
|
|
125
|
+
* [`landlab`](https://landlab.readthedocs.io/en/latest/index.html) >= 2.7
|
|
126
|
+
* Used components: `TaylorNonLinearDiffuser`, `esri_ascii`, `imshowhs`
|
|
127
|
+
* `gdal`>= 3.6
|
|
128
|
+
* `ipywidgets` >= 8.1 [optional for interactive visualization]
|
|
129
|
+
|
|
130
|
+
See also the `environment.yml` file which can be used to create a virtual environment.
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
**pyTopoComlexity** is licensed under the [Apache License 2.0](LICENSE).
|