These are built with the spread function internally.

Produces a SpatialPolygons object with 1 feature that will have approximately an area equal to area (expecting area in hectares), #' and a centre at approximately x.

  ras = raster(extent(0, 15, 0, 15), res = 1, vals = 0),
  numTypes = 2,

randomPolygon(x, hectares, area)

# S3 method for SpatialPoints
randomPolygon(x, hectares, area)

# S3 method for matrix
randomPolygon(x, hectares, area)

# S3 method for SpatialPolygons
randomPolygon(x, hectares, area)



A raster that whose extent will be used for the randomPolygons.


Numeric value. The number of unique polygon types to use.


Other arguments passed to spread. No known uses currently.


Either a SpatialPoints, SpatialPolygons, or matrix with two dimensions, 1 row, with the approximate centre of the new random polygon to create. If matrix, then longitude and latitude are assumed (epsg:4326)


Deprecated. Use area in meters squared.


A numeric, the approximate area in meters squared of the random polygon.


A map of extent ext with random polygons.

A SpatialPolygons object, with approximately the area request, centred approximately at the coordinates requested, in the projection of x

See also

spread, raster, randomPolygons

gaussMap and randomPolygons


library(quickPlot) set.seed(1234) Ras <- randomPolygons(numTypes = 5) if (interactive()) { clearPlot() Plot(Ras, cols = c("yellow", "dark green", "blue", "dark red")) } library(raster) # more complex patterning, with a range of patch sizes a <- randomPolygons(numTypes = 400, raster(extent(0, 50, 0, 50), res = 1, vals = 0)) a[a<320] <- 0 a[a>=320] <- 1 suppressWarnings(clumped <- clump(a)) # warning sometimes occurs, but not important aHist <- hist(table(getValues(clumped)), plot = FALSE) if (interactive()) { clearPlot() Plot(a) Plot(aHist) } library(raster) b <- SpatialPoints(cbind(-110, 59)) crs(b) <- sp::CRS("+init=epsg:4326") a <- randomPolygon(b, area = 1e6)
#> The CRS provided is not in meters; . Converting internally to UTM so area will be approximately correct
if (interactive()) { plot(a) points(b, pch = 19) }