-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
135 lines (101 loc) · 4.36 KB
/
README.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
---
output:
github_document
---
<!-- To render, run:
Sys.setenv(RSTUDIO_PANDOC = "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools")
rmarkdown::render("README.Rmd")
-->
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# vectormetrics
<!-- badges: start -->
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)
[![Codecov test coverage](https://codecov.io/gh/r-spatialecology/vectormetrics/branch/main/graph/badge.svg)](https://app.codecov.io/gh/r-spatialecology/vectormetrics?branch=main)
[![R-CMD-check](https://github.com/r-spatialecology/vectormetrics/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/r-spatialecology/vectormetrics/actions/workflows/R-CMD-check.yaml)
<!-- badges: end -->
## Overview
`vectormetrics` is an R package for calculating landscape and shape metrics for vector layers.
Its aim is to provide a set of metrics that can characterize landscape patterns and properties of the shapes defined as polygons and multipolygons.
Whole package is based on Simple Feature geometry standard provided by **sf** package.
Every function can be used in a tidy, piped workflow, as it always takes the data as the first argument and returns a `tibble`.
## Installation
<!--You can install the released version of `vectormetrics` from [CRAN](https://CRAN.R-project.org) with:
```{r install_cran, eval = FALSE}
install.packages("vectormetrics")
```
-->
You can download most recent development version of the package from GitHub with:
```{r install_github, eval = FALSE}
remotes::install_github("r-spatialecology/vectormetrics")
```
## Using vectormetrics
### Function names structure
All functions in `vectormetrics` start with *vm_* (for vector metrics).
The second part of the name specifies the level (patch - *p*, class - *c* or landscape - *l*).
The last part of the function name is the abbreviation of the corresponding metric (e.g. *enn* for the euclidean nearest-neighbor distance and *rect* for the rectangularity).
Some landscape and class level functions have also a suffix at the end, that specifies the aggregation method (e.g. *mean*, *sd*).
```{r function_names, eval = FALSE}
# Patch level
## vm_p_"metric"
vm_p_area()
vm_p_square()
# Class level
## vm_c_"metric"[_"aggregation"]
vm_c_np()
vm_c_shape_sd()
# Landscape level
## vm_l_"metric"[_"aggregation"]
vm_l_lpi()
vm_l_square_mn()
```
### Examples
Some examples of calculating metrics on all levels and with different class and patch columns.
```{r vector_landscape, warning=FALSE, message=FALSE}
library(vectormetrics)
library(sf)
data("vector_landscape")
plot(vector_landscape)
```
```{r simple_examples}
## Shape index
vm_p_shape(vector_landscape, class_col = "class")
## Number of patches
vm_c_np(vector_landscape, class_col = "class")
## Largest patch index
vm_l_lpi(vector_landscape)
## Mean squareness
vm_l_square_mn(vector_landscape)
```
### Utility functions
For now there are two utility functions available in the package.
First one is `get_patches()` which breaks multipolygon geometries into polygons.
There are two types of neighborhood relations available: 4 (edge) and 8 (vertex).
This function enables users to create set of geometries from aggregated shapes and analyze each shape's properties separately.
```{r get_patches, message = FALSE}
vector_patches = get_patches(vector_landscape, class_col = "class", direction = 4)
vector_patches
vector_patches |>
dplyr::mutate(patch = as.factor(patch)) |>
plot()
## Shape index
vm_p_shape(vector_patches, class_col = "class", patch_col = "patch")
## Number of patches
vm_c_np(vector_patches, class_col = "class")
## Mean squareness
vm_l_square_mn(vector_patches)
```
Another utility function is `get_axes()` which calculates the length of the major and minor axes of the shape.
It is used to calculate the elongation metric in `vm_p_elong()` but since length of axes might be useful information itself, `get_axes()` was exported as a separate function.
```{r get_axes, message = FALSE}
get_axes(vector_patches, class_col = "class")
```
## Contributing
This is an experimental version of the package, so any feedback and contributions in the form of pull requests are welcome.