2015-11-23 8 views
4

Я выполняю некоторую работу, где мне нужно сгенерировать как a) случайные пространственные точки; b) неслучайные пространственные точки, над многоугольником, т. Е. Для b) вероятность точек зависит, например, от Восток-Запад градиент, или расстояние от некоторой точки источника или что-то ещеКак создать пространственные точки с шаблоном

Для) я могу генерировать случайные точки над полигоном, используя команду spsample() в sp пакете следующим образом:

# Load a spatial polygon from maptools package 
library(maptools) 
nc <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1],  proj4string=CRS("+proj=longlat +datum=NAD27")) 
plot(nc) 

library(sp) 
pts <- spsample(nc, 100, type="random") 
plot(nc) 
points(pts, pch=19, col="red") 

Это дает точно что я хочу для a). Но может ли это быть изменено для б), так что точки более вероятны на Востоке, чем Запад, например? (и пока все еще можно указать, что я хочу 100 баллов?)

ответ

3

Я знаю, как это сделать, используя пакет spatstat. С помощью функции rpoint Вы можете использовать любую функцию координат x, y, чтобы определить вашу неровную плотность точек. Здесь я определить функцию, чтобы иметь значение 0 в конце Западного региона и растут линейно с наклоном 100 на восток:

library(maptools) 
library(spatstat) 
nc <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1], 
        proj4string=CRS("+proj=longlat +datum=NAD27")) 
nc <- as.owin(nc) 
west0 <- nc$xrange[1] 
f <- function(x, y, ...){ 100 * (x - west0) } 
pts <- rpoint(1000, f, win = nc) 
plot(pts) 

Increasing intensity from West to East

+0

То великое спасибо Ege – user2498193