
Spatial verbs for ForestGEO-style stem maps
stems_spatial.RdStems in forest dynamics plots (ForestGEO / CTFS) are mapped in local
metre coordinates (gx, gy). These verbs are the spatial part of a stem
workflow:
stems_quadrat()assigns each stem to a square quadrat (ForestGEO default 20 m) and addsquadrat,quadrat_x,quadrat_y,quadrat_colandquadrat_row.stems_habitat()joins quadrat-level habitat or topography byquadrator byquadrat_x/quadrat_y.stems_neighbours()counts neighbours withinradiusmetres of each stem, either all stems or conspecifics only.
Census summaries (stems_abundance(), stems_basal_area(),
stems_demography(), stems_as_community()) live in tidydiversity. Map
stems with plot_topo() and test habitat associations with
stems_habitat_test().
Usage
stems_quadrat(data, grid = 20, gx = gx, gy = gy)
stems_habitat(data, habitat, grid = 20)
stems_neighbours(
data,
radius = 10,
conspecific = TRUE,
alive_only = TRUE,
alive = "A"
)Arguments
- data
A ForestGEO-like stem or tree table with species and local coordinates (
gx/gyorx/y).- grid
Quadrat size in metres (ForestGEO default 20).
- gx, gy
Bare column names for local metre coordinates.
- habitat
A data frame of quadrat-level habitat or topography (
quadrat, orquadrat_x/quadrat_y, plus covariates).- radius
Neighbourhood radius in metres.
- conspecific
Count only neighbours of the same species (
TRUE) or all neighbours (FALSE).- alive_only
Keep only stems whose
statusis inalive?- alive
Character codes of
statusthat mean alive (default"A").
References
Condit, R. (1998). Tropical Forest Census Plots. Springer. Anderson-Teixeira, K. J. et al. (2015). CTFS-ForestGEO: a worldwide network monitoring forests in an era of global change. Global Change Biology, 21, 528-549. doi:10.1111/gcb.12712 .
Examples
stems <- geo_example_stems()
q <- stems_quadrat(stems, grid = 20)
head(q[c("gx", "gy", "quadrat", "quadrat_col", "quadrat_row")])
#> # A tibble: 6 × 5
#> gx gy quadrat quadrat_col quadrat_row
#> <dbl> <dbl> <chr> <int> <int>
#> 1 27.5 97.2 20_80 1 4
#> 2 37.7 49.6 20_40 1 2
#> 3 57.0 48.5 40_40 2 2
#> 4 89.2 18.7 80_0 4 0
#> 5 21.4 74.5 20_60 1 3
#> 6 88.2 45.6 80_40 4 2
hab <- unique(q[c("quadrat", "quadrat_x", "quadrat_y")])
hab$elev <- hab$quadrat_x + hab$quadrat_y
head(stems_habitat(stems, hab))
#> # A tibble: 6 × 16
#> plot treeID stemID gx gy dbh species status quadrat_x.x quadrat_y.x
#> <chr> <int> <int> <dbl> <dbl> <dbl> <chr> <chr> <dbl> <dbl>
#> 1 demo100 1 1 27.5 97.2 6.8 Homala… A 20 80
#> 2 demo100 2 2 37.7 49.6 18.9 Pometi… A 20 40
#> 3 demo100 3 3 57.0 48.5 8 Homala… A 40 40
#> 4 demo100 4 4 89.2 18.7 8.2 Ficus_… A 80 0
#> 5 demo100 5 5 21.4 74.5 8.5 Pteroc… A 20 60
#> 6 demo100 6 6 88.2 45.6 13.4 Intsia… D 80 40
#> # ℹ 6 more variables: quadrat <chr>, quadrat_col <int>, quadrat_row <int>,
#> # quadrat_x.y <dbl>, quadrat_y.y <dbl>, elev <dbl>
head(stems_neighbours(stems, radius = 10))
#> # A tibble: 6 × 11
#> plot treeID stemID gx gy dbh species status n_neighbours
#> <chr> <int> <int> <dbl> <dbl> <dbl> <chr> <chr> <int>
#> 1 demo100 1 1 27.5 97.2 6.8 Homalanthus_novog… A 0
#> 2 demo100 2 2 37.7 49.6 18.9 Pometia_pinnata A 0
#> 3 demo100 3 3 57.0 48.5 8 Homalanthus_novog… A 0
#> 4 demo100 4 4 89.2 18.7 8.2 Ficus_sp A 0
#> 5 demo100 5 5 21.4 74.5 8.5 Pterocarpus_indic… A 0
#> 6 demo100 7 7 92.7 51.1 8.7 Pometia_pinnata A 0
#> # ℹ 2 more variables: neighbour_radius <dbl>, conspecific <lgl>