Produce a grains of connectivity model at multiple scales (patch-based or lattice GOC)
Source:R/GOC.R
GOC.Rd
Produce a grains of connectivity (GOC) model at multiple scales (resistance thresholds) by scalar analysis. Patch-based or lattice GOC modelling can be done with this function.
Usage
GOC(x, ...)
# S4 method for class 'mpg'
GOC(
x,
nThresh = NULL,
doThresh = NULL,
weight = "lcpPerimWeight",
verbose = 0,
...
)
Arguments
- x
A
mpg
object produced byMPG()
. For lattice GOCMPG
must be run with patch set as an integer value.- ...
Additional arguments (not used).
- nThresh
Optional. An integer giving the number of thresholds (or scales) at which to create GOC models. Thresholds are selected to produce a maximum number of unique grains (i.e., models).
nThresh
thresholds are also approximately evenly spread between 0 and the threshold at which all patches or focal points on the landscape are connected. This is a simple way to get a representative subset of all possible GOC models. Provide eithernThresh
ordoThresh
not both.- doThresh
Optional. A vector giving the link thresholds at which to create GOC models. Use
threshold()
to identify thresholds of interest. Provide eithernThresh
ordoThresh
not both.- weight
A string giving the link weight or attribute to use for threshold.
"lcpPerimWeight"
uses the accumulated resistance or least-cost path distance from the perimeters of patches as the link weight.- verbose
Set
verbose=0
for no progress information to console.
Value
A goc()
object.
Details
Grain or scalar analysis of connectivity may be appropriate for a variety of purposes, not limited to visualization and improving connectivity estimates for highly-mobile organisms. See Galpern et al. (2012), Galpern & Manseau (2013a, 2013b) for applications and review of these capabilities.
Note
Researchers should consider whether the use of a patch-based GOC or a lattice GOC model is appropriate based on the patch-dependency of the organism under study. Patch-based models make most sense when animals are restricted to, or dependent on, a resource patch. Lattice models can be used as a generalized and functional approach to scaling resistance surfaces.
See MPG()
for warning related to areal measurements.
References
Fall, A., M.-J. Fortin, M. Manseau, D. O'Brien. (2007) Spatial graphs: Principles and applications for habitat connectivity. Ecosystems 10:448:461.
Galpern, P., M. Manseau. (2013a) Finding the functional grain: comparing methods for scaling resistance surfaces. Landscape Ecology 28:1269-1291.
Galpern, P., M. Manseau. (2013b) Modelling the influence of landscape connectivity on animal distribution: a functional grain approach. Ecography 36:1004-1016.
Galpern, P., M. Manseau, A. Fall. (2011) Patch-based graphs of landscape connectivity: a guide to construction, analysis, and application for conservation. Biological Conservation 144:44-55.
Galpern, P., M. Manseau, P.J. Wilson. (2012) Grains of connectivity: analysis at multiple spatial scales in landscape genetics. Molecular Ecology 21:3996-4009.
Examples
## Load raster landscape
tiny <- raster::raster(system.file("extdata/tiny.asc", package = "grainscape"))
## Create a resistance surface from a raster using an is-becomes reclassification
tinyCost <- raster::reclassify(tiny, rcl = cbind(c(1, 2, 3, 4), c(1, 5, 10, 12)))
## Produce a patch-based MPG where patches are resistance features=1
tinyPatchMPG <- MPG(cost = tinyCost, patch = tinyCost == 1)
## Extract a representative subset of 5 grains of connectivity
tinyPatchGOC <- GOC(tinyPatchMPG, nThresh = 5)
## Examine the properties of the GOC graph of grain 3 of 5
graphdf(grain(tinyPatchGOC, whichThresh = 3))
#> [[1]]
#> [[1]]$v
#> name polygonId centroidX centroidY polygonArea totalPatchArea
#> 1 9 9 82.775739 30.824978 1117 80
#> 2 14 14 91.982587 6.067164 201 26
#> 3 1 1 31.441401 71.328875 2355 349
#> 4 13 13 55.800797 12.209163 502 32
#> 5 2 2 72.141353 87.096043 1567 202
#> 6 8 8 40.915855 33.420723 719 88
#> 7 7 7 11.853001 32.207019 983 68
#> 8 12 12 22.657810 12.435588 621 42
#> 9 5 5 92.944795 58.755521 317 6
#> 10 4 4 8.658451 58.595070 284 9
#> 11 15 15 64.756757 3.216216 74 2
#> 12 10 10 96.468504 35.633858 127 3
#> 13 11 11 60.324561 33.085965 285 15
#> 14 6 6 73.349741 51.795337 193 4
#> 15 3 3 60.669856 71.672249 418 2
#> 16 17 17 76.169643 4.223214 112 2
#> 17 16 16 36.820000 3.692000 125 2
#> totalPatchEdgeArea totalCoreArea
#> 1 80 0
#> 2 26 0
#> 3 336 13
#> 4 32 0
#> 5 197 5
#> 6 84 4
#> 7 68 0
#> 8 39 3
#> 9 6 0
#> 10 9 0
#> 11 2 0
#> 12 3 0
#> 13 15 0
#> 14 4 0
#> 15 2 0
#> 16 2 0
#> 17 2 0
#> patchId
#> 1 68, 80, 86
#> 2 100
#> 3 5, 7, 22, 30, 32, 37, 40, 41, 48, 54, 55, 56
#> 4 95, 103
#> 5 8, 9, 12, 14, 19, 28, 29, 31
#> 6 67, 85
#> 7 62, 64, 74, 84
#> 8 93
#> 9 60
#> 10 50
#> 11 105
#> 12 73, 78
#> 13 76
#> 14 61
#> 15 46
#> 16 107
#> 17 106
#>
#> [[1]]$e
#> e1 e2 maxWeight linkIdMaxWeight minWeight linkIdMinWeight medianWeight
#> 1 9 14 55 34 55 34 55.0
#> 2 14 17 54 35 54 35 54.0
#> 3 1 4 135 79 55 36 95.0
#> 4 1 11 64 37 64 37 64.0
#> 5 1 6 59 38 59 38 59.0
#> 6 13 15 75 42 65 39 70.0
#> 7 1 2 107 65 69 41 75.0
#> 8 8 11 95 62 75 43 85.0
#> 9 1 8 210 96 75 44 85.0
#> 10 7 12 80 48 80 48 80.0
#> 11 2 3 220 97 81 49 140.0
#> 12 9 17 85 51 85 51 85.0
#> 13 12 16 85 52 85 52 85.0
#> 14 13 8 85 56 85 56 85.0
#> 15 5 10 88 60 88 60 88.0
#> 16 7 4 130 82 105 64 117.5
#> 17 15 17 105 66 105 66 105.0
#> 18 9 10 129 76 105 67 113.0
#> 19 8 12 146 87 105 69 125.5
#> 20 1 3 132 84 105 70 127.0
#> 21 13 16 125 81 115 73 120.0
#> 22 13 12 115 74 115 74 115.0
#> 23 9 5 130 75 130 75 130.0
#> 24 13 11 123 77 123 77 123.0
#> 25 9 6 210 92 123 78 166.5
#> 26 9 11 144 85 144 85 144.0
#> 27 8 7 180 89 151 86 165.5
#> 28 2 5 290 98 162 90 226.0
#> 29 11 6 200 91 200 91 200.0
#> 30 13 17 195 93 195 93 195.0
#> 31 9 13 208 95 201 94 204.5
#> 32 6 3 365 99 365 99 365.0
#> 33 9 2 358 100 358 100 358.0
#> 34 2 6 432 101 432 101 432.0
#> meanWeight numEdgesWeight linkIdAll eucCentroidWeight
#> 1 55.00000 1 34 26.41430
#> 2 54.00000 1 35 15.92009
#> 3 95.00000 2 36, 79 26.10005
#> 4 64.00000 1 37 47.92449
#> 5 59.00000 1 38 46.23709
#> 6 70.00000 2 39, 42 12.69182
#> 7 83.66667 3 41, 47, 65 43.64733
#> 8 85.00000 2 43, 62 19.41159
#> 9 113.75000 4 44, 45, 61, 96 39.07420
#> 10 80.00000 2 48, 53 22.53117
#> 11 147.00000 3 49, 88, 97 19.22209
#> 12 85.00000 1 51 27.40975
#> 13 85.00000 1 52 16.64386
#> 14 85.00000 1 56 25.91316
#> 15 88.00000 1 60 23.38863
#> 16 117.50000 2 64, 82 26.58071
#> 17 105.00000 1 66 11.45723
#> 18 115.00000 4 67, 71, 72, 76 14.51266
#> 19 125.50000 2 69, 87 27.81604
#> 20 121.33333 3 70, 83, 84 29.23047
#> 21 120.00000 2 73, 81 20.80415
#> 22 115.00000 1 74 33.14376
#> 23 130.00000 1 75 29.72415
#> 24 123.00000 1 77 21.36130
#> 25 166.50000 2 78, 92 22.99142
#> 26 144.00000 1 85 22.56474
#> 27 165.50000 2 86, 89 29.08819
#> 28 226.00000 2 90, 98 35.15634
#> 29 200.00000 1 91 22.79684
#> 30 195.00000 1 93 21.87842
#> 31 204.50000 2 94, 95 32.77493
#> 32 365.00000 1 99 23.57692
#> 33 358.00000 1 100 57.26712
#> 34 432.00000 1 101 35.32138
#>
#>
## Extract grains of connectivity
## representation of the finest grain and three others
## by giving thresholds in link weights (doThresh)
tinyPatchGOC <- GOC(tinyPatchMPG, doThresh = c(0, 20, 40))