我尝试在raster
包中使用distanceFromPoints函数:
distanceFromPoints(object,xy,...)
其中,对象是栅格,xy
是x
和y
坐标的矩阵
现在,如果我的栅格有1000个单元格而xy
代表一个点,我会得到1000个值,表示xy
和每个栅格单元之间的距离。我的问题是当xy
有多个坐标时,例如10个点。函数描述表明xy
可以是多个点但是当我运行具有多个XY
点的函数时,我仍然只获得1000个值,而我期望{{{}每个坐标的1000个值1}}。这是如何工作的?
谢谢!
答案 0 :(得分:3)
在多个点上使用distanceFromPoints
为每个栅格单元格提供一个值,即到该单元格最近点的距离。
要创建栅格图层,分别给出每个点的距离,可以使用apply
一个可重复的例子:
r = raster(matrix(nrow = 10, ncol = 10))
p = data.frame(x=runif(5), y=runif(5))
dp = apply(p, 1, function(p) distanceFromPoints(r,p))
这给出了一个栅格图层列表,每个栅格图层与一个点的距离
# for example, 1st raster in the list has the distance to the 1st point
plot(dp[[1]])
points(p[1,])
为方便起见,您可以将此列表转换为栅格堆栈
st = stack(dp)
plot(st)
最后提醒:
应该注意,这样创建的栅格对象实际上不包含比生成它们的点列表更多的信息。因此,它们是存储该信息的计算和内存昂贵的方式。我不能轻易想到任何可以解决特定问题的合理方法。因此,您可能需要再次考虑您希望这些栅格图层的原因,并询问是否有更有效的方法来解决您的整体问题。