我正在尝试在raster包中使用 distanceFromPoints 函数:
distanceFromPoints(object,xy,...)
Run Code Online (Sandbox Code Playgroud)
其中,对象是光栅,xy是矩阵x和y坐标
现在,例如,如果我的栅格有 1000 个像元并xy表示一个点,我将得到 1000 个值,表示xy每个栅格像元之间的距离。我的问题是当xy有多个坐标时,例如 10 点。函数描述表明xy可以是多个点,但是当我用多个XY点运行这个函数时,我仍然只得到 1000 个值,而我期望XY. 这是如何运作的?
谢谢!
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))
Run Code Online (Sandbox Code Playgroud)
这给出了一个栅格图层列表,每个图层都有到一个点的距离
# for example, 1st raster in the list has the distance to the 1st point
plot(dp[[1]])
points(p[1,])
Run Code Online (Sandbox Code Playgroud)
为方便起见,您可以将此列表转换为栅格堆栈
st = stack(dp)
plot(st)
Run Code Online (Sandbox Code Playgroud)
最后提醒一句:
应该注意的是,这样创建的栅格对象实际上并不包含比生成它们的点列表更多的信息。因此,它们是一种存储该信息的计算和内存昂贵的方式。我无法轻易想到在任何情况下这是解决特定问题的明智方法。因此,可能值得再次考虑您需要这些栅格图层的原因,并询问是否有更有效的方法来解决您的整体问题。