我正在尝试使用terra::distance,就像使用raster::distanceFromPoints一样。然而,terra::distance只报告从点到NA单元的距离。这是预期的结果吗?我在解决方案中包括了示例代码。
距离计算用带点的栅格图

地形图::点的距离

期望输出

r <- terra::rast(ncols=10, nrows=10)
valR <- rep(1, length = 100)
valR[c(1,12,23,34,45,56,67,78,89,100)] <- NA
terra::values(r) <- valR
xp <- c(50)
yp <- c(50)
xyp <- cbind(xp, yp)
vecP <- terra::vect(xyp)
terra::plot(r)
terra::plot(vecP, add=T)
rDist <- terra::distance(r, vecP)
terra::plot(rDist) #only NA cells have the distance value
# WORKAROUND
r1 = r*0
r1[is.na(r1)] <- 100
r1[r1<1] <- NA
r1Dist <- terra::distance(r1, vecP)
terra::plot(r1Dist)
####################
# using raster::distanceFromPoints
####################
rR <- raster::raster(ncols=10, nrows=10)
raster::values(rR) <- valR
raster::plot(rR)
rRDist <- raster::distanceFromPoints(rR, xyp)
rRDist <- raster::mask(rRDist, rR)
raster::plot(rRDist)发布于 2021-12-08 18:50:23
我使用距离( SpatVector )来测试这一点,而不是使用点。这似乎如预期的那样起作用。我想,也许这一点还没有得到实施。
因此,您可以使用的另一个解决方法是计算到零长度线的距离(这基本上相当于点):
x1 <- rbind(c(50,50), c(50,50))
colnames(x1) <- c('x', 'y')
lns <- vect(x1, "lines")
rDist <- distance(r, lns)
plot(rDist)

https://stackoverflow.com/questions/70279456
复制相似问题