具有多个XY坐标的DistanceFromPoints

时间:2016-12-27 18:40:22

标签: r spatial raster

我尝试在raster包中使用distanceFromPoints函数:

distanceFromPoints(object,xy,...)

其中,对象是栅格,xyxy坐标的矩阵

现在,如果我的栅格有1000个单元格而xy代表一个点,我会得到1000个值,表示xy和每个栅格单元之间的距离。我的问题是当xy有多个坐标时,例如10个点。函数描述表明xy可以是多个点但是当我运行具有多个XY点的函数时,我仍然只获得1000个值,而我期望{{{}每个坐标的1000个值1}}。这是如何工作的?

谢谢!

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,])

enter image description here

为方便起见,您可以将此列表转换为栅格堆栈

st = stack(dp)
plot(st)

enter image description here

最后提醒:

应该注意,这样创建的栅格对象实际上不包含比生成它们的点列表更多的信息。因此,它们是存储该信息的计算和内存昂贵的方式。我不能轻易想到任何可以解决特定问题的合理方法。因此,您可能需要再次考虑您希望这些栅格图层的原因,并询问是否有更有效的方法来解决您的整体问题。