/
stratunits.Rmd
150 lines (131 loc) · 6.47 KB
/
stratunits.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
title: "Stratification Units"
author: "rassta: Raster-based Spatial Stratification Algorithms"
output:
rmarkdown::html_vignette:
dev: "jpeg"
vignette: >
%\VignetteIndexEntry{Stratification Units}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
--------------------------------------------------------------------------------
Get the data required for this vignette
```{r data, fig.show = 'hold', fig.height = 2.5, fig.width = 2.8, message = FALSE, warning = FALSE, error = TRUE}
# Compressed folder with files from rassta’s installation folder
wasoil <- system.file("exdat/wasoil.zip", package = "rassta")
# Directory for temporary files
o <- tempdir()
# Copy compressed folder to directory for temporary files
file.copy(from = wasoil, to = o)
# Extract files to subfolder
d <- paste(o, "/rassta", sep = "")
unzip(paste(o, "/wasoil.zip", sep = ""), exdir = d)
```
--------------------------------------------------------------------------------
Stratification units are second-level spatial entities that result from the
spatial intersection of *n* sets of classification units. Each set of
classification units may represent a landscape factor (e.g., topography), or a
particular spatial scale of a landscape factor (e.g., micro-topography). One
example of a stratification unit can be a unit representing cold, dry, and
steeped terrain in high altitude. This stratification unit could have resulted
from the spatial intersection of climatic classification units representing both
precipitation and temperature gradients, and topographic classification units
representing both elevation and slope gradients. Currently, **rassta** allows
the creation of stratification units based on the simple intersection of raster
layers representing sets of classification units.
## Spatial intersection of classification units
The process to create stratification units is fairly simple. First, *n* sets of
classification units need to be loaded as a terra's multi-layer *SpatRaster*
object. Raster layers in this object must represent categorical data (i.e.,
classification units). Then, the function *strata()* is used to perform two
processes: (1) spatial intersection of raster layers, and (2) assignment of a
unique numeric code to each resulting unit.
For this example, three sets of classification units will be used to create one
set of stratification units. The sets of classification units correspond to (i)
climatic, (ii) soil parent material, and (iii) terrain classification units. The
maps below show the classification units and the interpretation for each set of
classification units.
```{r climclass, fig.show = 'hold', fig.height = 6, fig.width = 3.9, message = FALSE, warning = FALSE, error = TRUE}
# Load rassta and terra packages
library(rassta)
library(terra)
# Multi-layer SpatRaster with 3 sets of classification units
cu <- c("climate.tif", "material.tif", "terrain.tif")
cudir <- paste(d, cu, sep = "/")
all.cu <- rast(cudir)
# Plot the sets of classification units
par(mfrow = c(3, 1))
plot(all.cu[[1]], type = "classes", main = "Climatic Classification Units",
col = hcl.colors(4, "spectral"), mar = c(1.5, 1.5, 1.5, 16),
levels = c("1. Highest Rainfall and Lowest Temperature",
"2. High Rainfall and Low Temperature",
"3. Low Rainfall and High Temperature",
"4. Lowest Rainfall and Highest Temperature"
)
)
plot(all.cu[[2]], type = "classes", main = "Soil Parent Material Units",
col = hcl.colors(6, "spectral"), mar = c(1.5, 1.5, 1.5, 16),
levels = c("1. Igneous", "2. Sedimentary",
"3. Alluvium - Moderately weathered ",
"4. Alluvium - Somewhat weathered",
"5. Alluvium - Rich in organic matter",
"6. Alluvium - Rich in clay and organic matter"
)
)
plot(all.cu[[3]], type = "classes", main = "Terrain Classification Units",
col = hcl.colors(8, "spectral"), mar = c(1.5, 1.5, 1.5, 16),
levels = c("1. Summit", "2. Shoulder", "3. Backslope",
"4. Backslope - Steep", "5. Footslope",
"6. Footslope - Steep", "7. Toeslope", "8. Floodplain"
)
)
```
The following code demonstrates how to create stratification units from the
three sets of classification units with the function *strata()*.
```{r strata, fig.show = 'hold', fig.height = 2.9, fig.width = 5, message = FALSE, warning = FALSE, error = TRUE}
# Stratification units from the intersection of classification units
su <- strata(cu.rast = all.cu)
# Plot SpatRaster of stratification units
plot(su$su.rast, type = "classes", main = "Stratification Units",
col = hcl.colors(length(unique(su$su.rast)[, 1]), "spectral"),
plg = list(ncol = 4), mar = c(1.5, 1.5, 1.5, 12)
)
```
## Numeric code of stratification units
The numeric code makes it possible to trace back the specific classification
unit that composes a given stratification unit. The code below demonstrates how
to retrieve the *multipliers* used to create the numeric codes for the
stratification units.
```{r code, fig.show = 'hold', fig.height = 2.9, fig.width = 5, message = FALSE, warning = FALSE, error = TRUE}
# Print multipliers used to code each stratification unit
su$code.mult
```
The multipliers indicate the relative placement of the classification unit's
numeric ID from each landscape factor or factor scale. In this example, the
classification unit from climate is denoted by the hundreds digit, that from
soil parent material is denoted by the tens digit, and that from terrain is
denoted by the units digit. For example, the stratification unit **111**
indicates the spatial convergence of the climatic classification unit = **1**
(highest rainfall and lowest temperature), the parent material classification
unit = **1** (igneous), and the terrain classification unit = **1** (summit).
Therefore, the stratification unit **111** can be interpreted as summits located
on areas of volcanic origin (igneous), which are exposed to the highest amount
of precipitation and the lowest temperature, as compared to the rest of the
landscape.
---
Clean files from temporary directory
```{r clean, message = FALSE, warning = FALSE, error = TRUE}
unlink(c(paste(o, "/wasoil.zip", sep = ""), d), recursive = TRUE)
```
---
## References
- B.A. Fuentes, M.J. Dorantes, and J.R. Tipton. rassta: Raster-based Spatial
Stratification Algorithms. *EarthArXiv*, 2021.
https://doi.org/10.31223/X50S57