如何生成具有模式的空间点
How to generate spatial points with a pattern
我正在做一些工作,我需要在多边形上生成 a) 随机空间点 b) 非随机空间点,即对于 b) 点概率取决于例如东西梯度,或者与某些点源或其他东西的距离
对于 a) 我可以使用 sp
包中的 spsample()
命令在多边形上生成随机点,如下所示:
# 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)。但是,这是否可以针对 b) 进行修改,例如,东部比西部更有可能出现积分? (同时仍然能够指定我想要 100 分?)
我只知道如何使用 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)
我正在做一些工作,我需要在多边形上生成 a) 随机空间点 b) 非随机空间点,即对于 b) 点概率取决于例如东西梯度,或者与某些点源或其他东西的距离
对于 a) 我可以使用 sp
包中的 spsample()
命令在多边形上生成随机点,如下所示:
# 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)。但是,这是否可以针对 b) 进行修改,例如,东部比西部更有可能出现积分? (同时仍然能够指定我想要 100 分?)
我只知道如何使用 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)