首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >terra::距离只报告到NA光栅细胞的距离。

terra::距离只报告到NA光栅细胞的距离。
EN

Stack Overflow用户
提问于 2021-12-08 17:43:32
回答 1查看 244关注 0票数 1

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

距离计算用带点的栅格图

地形图::点的距离

期望输出

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-12-08 18:50:23

我使用距离( SpatVector )来测试这一点,而不是使用点。这似乎如预期的那样起作用。我想,也许这一点还没有得到实施。

因此,您可以使用的另一个解决方法是计算到零长度线的距离(这基本上相当于点):

代码语言:javascript
复制
x1 <- rbind(c(50,50), c(50,50))
colnames(x1) <- c('x', 'y')
lns <- vect(x1, "lines")

rDist <- distance(r, lns)
plot(rDist) 

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70279456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档