gpt4 book ai didi

r - SpatialLinesDataFrame : how to calculate the min. 点和线之间的距离

转载 作者:行者123 更新时间:2023-12-04 10:25:37 24 4
gpt4 key购买 nike

我有一个带有街道的 SpatialLinesDataFrame,我有一个 GPS 坐标列表。我需要做的是为每个单独的 GPS 坐标找出 10 个最近的街道名称。

R 中是否有一个函数/包可以计算 SpatialLinesDataFrame 的线和点之间的距离?我看不到任何对“sp”有帮助的东西。

有一个相关的问题:Calculating the distance between polygon and point in R ,但我想找到线对象和点之间的距离,而不是多边形/点,点/点。

最佳答案

您可以使用 rgeos::gDistance()byid=TRUE得到从每个点到每条线的距离矩阵。从那里,提取离每个点最近的 10 行的 id 相对容易:

library(sp)
library(rgeos)

## Create a SpatialPoints and a SpatialLines object
example("SpatialPoints-class", ask=FALSE, echo=FALSE)
example("SpatialLines-class", ask=FALSE, echo=FALSE)

## Compute the matrix of distances between them.
(m <- gDistance(S, Sl, byid=TRUE))
# 1 2 3 4 5
# a 0.000000 0.0 2.757716 1.414214 2.757716
# b 1.788854 0.5 3.640055 1.000000 3.605551

## And then use it to extract the ids of the 10 (or in this case 1) lines
## closest to each point.
## apply(m, 2, function(X) rownames(m)[order(X)][1:10]) ## Finds 10 closest
apply(m, 2, function(X) rownames(m)[order(X)][1]) ## Finds single closest
# 1 2 3 4 5
# "a" "a" "a" "b" "a"

关于r - SpatialLinesDataFrame : how to calculate the min. 点和线之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19126998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com