---
title: "Introduction"
output:
html_document:
toc: true
toc_float:
collapsed: false
smooth_scroll: false
toc_depth: 3
theme: united
vignette: >
%\VignetteIndexEntry{Introduction}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
dpi = 50
)
options(preferRaster = TRUE)
```
## Package `starsExtra`
R package `starsExtra` provides several miscellaneous functions for working with `stars` objects, mainly single-band rasters. Currently includes functions for:
* Focal filtering
* Detrending of Digital Elevation Models
* Calculating flow length
* Calculating the Convergence Index
* Calculating topographic slope
* Calculating topographic aspect
## Installation
CRAN version:
```{r installation1, eval=FALSE}
install.packages("starsExtra")
```
GitHub version:
```{r installation2, eval=FALSE}
install.packages("remotes")
remotes::install_github("michaeldorman/starsExtra")
```
## Usage
Once installed, the library can be loaded as follows:
```{r}
library(starsExtra)
```
## Examples
### Focal filter: aggregation functions
```{r}
data(dem)
dem_mean3 = focal2(dem, matrix(1, 3, 3), "mean", na.rm = TRUE)
dem_sum3 = focal2(dem, matrix(1, 3, 3), "sum", na.rm = TRUE)
dem_min3 = focal2(dem, matrix(1, 3, 3), "min", na.rm = TRUE)
dem_max3 = focal2(dem, matrix(1, 3, 3), "max", na.rm = TRUE)
```
```{r, fig.width=6, fig.height=4, out.width="45%", fig.show="hold"}
plot(dem, main = "input", text_values = TRUE, breaks = "equal", col = terrain.colors(10))
plot(dem, col = rep(NA, 3), key.pos = NULL, main = "")
plot(round(dem_mean3, 1), main = "mean (k=3)", text_values = TRUE, breaks = "equal", col = terrain.colors(10))
plot(dem_sum3, main = "sum (k=3)", text_values = TRUE, breaks = "equal", col = terrain.colors(10))
plot(dem_min3, main = "min (k=3)", text_values = TRUE, breaks = "equal", col = terrain.colors(10))
plot(dem_max3, main = "max (k=3)", text_values = TRUE, breaks = "equal", col = terrain.colors(10))
```
### Focal filter: window size
```{r}
data(carmel)
carmel_mean9 = focal2(carmel, matrix(1, 9, 9), "mean", na.rm = TRUE, mask = TRUE)
carmel_mean27 = focal2(carmel, matrix(1, 27, 27), "mean", na.rm = TRUE, mask = TRUE)
```
```{r, fig.width=4, fig.height=6, out.width="30%", fig.show="hold"}
plot(carmel, main = "input", breaks = "equal", col = terrain.colors(10))
plot(carmel_mean9, main = "mean (k=9)", breaks = "equal", col = terrain.colors(10))
plot(carmel_mean27, main = "mean (k=27)", breaks = "equal", col = terrain.colors(10))
```
### Topographic slope
```{r}
data(carmel)
carmel_slope = slope(carmel)
```
```{r, fig.width=4, fig.height=6, out.width="45%", fig.show="hold"}
plot(carmel, breaks = "equal", col = terrain.colors(11))
plot(carmel_slope, breaks = "equal", col = hcl.colors(11, "Spectral"))
```
### Topographic aspect
```{r}
data(carmel)
carmel_aspect = aspect(carmel)
```
```{r, fig.width=4, fig.height=6, out.width="45%", fig.show="hold"}
plot(carmel, breaks = "equal", col = terrain.colors(11))
plot(carmel_aspect, breaks = "equal", col = hcl.colors(11, "Spectral"))
```
### Convergence Index
```{r}
data(golan)
golan_asp = aspect(golan)
golan_ci = CI(golan_asp, k = 25)
```
```{r, fig.width=4, fig.height=6, out.width="30%", fig.show="hold"}
plot(golan, breaks = "equal", col = terrain.colors(11))
plot(golan_asp, breaks = "equal", col = hcl.colors(11, "Spectral"))
plot(golan_ci, breaks = "equal", col = hcl.colors(11, "Spectral"))
```