randomPolygons {SpaDES.tools} | R Documentation |
Produce a SpatRaster
of random polygons
Description
These are built with the spread()
function internally.
Produces a SpatVector
polygons object with 1 feature that will have approximately an area
equal to area
(expecting area in hectares), #' and a centre at approximately x
.
Usage
randomPolygons(
ras = rast(ext(0, 15, 0, 15), res = 1, vals = 0),
numTypes = 2,
...
)
randomPolygon(x, hectares, area)
## Default S3 method:
randomPolygon(x, hectares, area)
Arguments
ras |
A raster that whose extent will be used for the random polygons. |
numTypes |
Numeric value. The number of unique polygon types to use. |
... |
Other arguments passed to |
x |
Either a |
hectares |
Deprecated. Use |
area |
A numeric, the approximate area in |
Value
A map of extent ext
with random polygons.
A SpatVector
polygons object, with approximately the area request,
centred approximately at the coordinates requested, in the projection of x
.
See Also
Examples
origDTThreads <- data.table::setDTthreads(2L)
origNcpus <- options(Ncpus = 2L)
set.seed(1234)
Ras <- randomPolygons(numTypes = 5)
if (interactive() ) {
terra::plot(Ras, col = c("yellow", "dark green", "blue", "dark red"))
}
# more complex patterning, with a range of patch sizes
r <- terra::rast(terra::ext(0, 50, 0, 50), resolution = 1, vals = 0)
a <- randomPolygons(numTypes = 400, r)
a[a < 320] <- 0
a[a >= 320] <- 1
clumped <- terra::patches(a)
if (interactive()) {
terra::plot(a)
}
# clean up
data.table::setDTthreads(origDTThreads)
options(Ncpus = origNcpus)
a1 <- terra::vect(cbind(-110, 59), crs = "epsg:4326")
a2 <- randomPolygon(a1, area = 1e7)
if (interactive()) {
terra::plot(a1)
terra::points(a2, pch = 19)
}
if (require("sf", quietly = TRUE)) {
b1 <- list(cbind(
x = c(-122.98, -116.1, -99.2, -106, -122.98),
y = c(59.9, 65.73, 63.58, 54.79, 59.9)
)) |>
sf::st_polygon() |>
sf::st_sfc() |>
sf::st_sf(geometry = _, ID = 1L, shinyLabel = "zone2", crs = "epsg:4326")
b2 <- randomPolygon(b1, area = 1e10)
if (interactive()) {
plot(sf::st_geometry(b1))
plot(sf::st_geometry(b2), add = TRUE)
}
}