Генерация случайных точек для каждого объекта полигона, пропорционального каждой области объекта полигона - PullRequest
1 голос
/ 25 сентября 2019

Мне интересно, как проще всего создать случайных точек для каждого объекта полигона, используя sp::spsample, чтобы количество точек в каждом объекте было пропорционально соответствующей области многоугольника .Я знаю, как сделать это на одном полигоне, но я не уверен, как мне это сделать для каждой функции.

Пример данных

p <- shapefile(system.file("external/lux.shp", package="raster"))

1 Ответ

1 голос
/ 25 сентября 2019

Один из способов сделать это, как показано ниже:

library(raster)
library(sf)

set.seed(123)

# shape file from raster package
p <- shapefile(system.file("external/lux.shp", package="raster"))
plot(p)

# Using an old fashion for-loop
rpnt <- list()
for(i in 1:length(p)){
  pp <- p[p$ID_2==i,]
  rpnt[[i]] <- sp::spsample(pp, n=pp$AREA/20, "random") #modify it to what you want
  plot(rpnt[[i]], pch=i, col=(i), add=T)
}

out <- do.call(bind, rpnt)

enter image description here

...