如何使用 terra/sf R 包创建到最近要素的距离栅格?

问题描述 投票:0回答:1

我有一个由线(道路)组成的简单要素对象,我想从中创建一个栅格,其中每个单元格代表到最近线的距离。就我而言,是一个带有到最近道路距离的栅格。

这是一个简单的多行 sf 对象:

library(sf)

#Code for multi-line string creation in sf
s1 <- rbind(c(0,3),c(0,4),c(1,5),c(2,5))
s2 <- rbind(c(0.2,3), c(0.2,4), c(1,4.8), c(2,4.8))
s3 <- rbind(c(0,4.4), c(0.6,5))

#sf multi-line string 
mls <- st_multilinestring(list(s1,s2,s3))

但是,我有一个额外的标准,我希望留在

terra
sf
生态系统中,因为我已经在使用这些生态系统,并且我正在尝试限制我的依赖项数量。我已经找到了使用 starsExtra
 的解决方案,但我怀疑这个问题在 
terra
sf
 中完全有可能,而且它可能会更有效一些,因为我的实际多行对象很大。

这是

starsExtra

解决方案:

library(sf) library(stars) library(starsExtra) # Make grid r <- make_grid(mls, res = 0.01) d <- dist_to_nearest(r, mls, progress = FALSE) # Plot plot(d, breaks = "equal", axes = TRUE, reset = FALSE) plot(st_geometry(mls), add = TRUE)

sf

terra
 中是否有 
starsExtra::dist_to_nearest
 的同义词?或者用另一种方法来完成同样的事情?

r geospatial distance terra
1个回答
0
投票
以下是如何使用 terra 来实现这一目标

s1 <- rbind(c(0,3),c(0,4),c(1,5),c(2,5)) s2 <- rbind(c(0.2,3), c(0.2,4), c(1,4.8), c(2,4.8)) s3 <- rbind(c(0,4.4), c(0.6,5)) library(terra) v <- vect(list(s1,s2,s3), "lines", crs="local") |> aggregate() r <- rast(v, res = 0.01) r <- rasterize(v, r) d <- distance(r)
    
© www.soinside.com 2019 - 2024. All rights reserved.