gpt4 book ai didi

r - 从不同长度的不同数据集中找到最近的经纬度点

转载 作者:行者123 更新时间:2023-12-02 11:23:47 26 4
gpt4 key购买 nike

我有两个不同站的数据集。数据基本上是带有坐标、经度和纬度的 data.frames。给定第一个数据集(反之亦然),我想为另一个数据集中的每个站找到最近的站。我的主要问题是坐标没有排序并且数据集有不同的长度。例如,第一个包含 2228 个站点,第二个包含 1782 个站点。所以,我不知道如何处理。
我知道函数 rdist.earth 并且我尝试使用它。这是一个简短的示例:

      #First data set of stations
set1 <- structure(list(lon = c(13.671114, 12.866947, 15.94223, 11.099736,
12.958342, 14.203892, 11.86389, 16.526674, 16.193064, 17.071392
), lat = c(48.39167, 48.148056, 48.721111, 47.189167, 47.054443,
47.129166, 47.306667, 47.84, 47.304167, 48.109444)), .Names = c("lon",
"lat"), row.names = c(NA, 10L), class = "data.frame")

#Second data set
set2 <- structure(list(lon = structure(c(14.4829998016357, 32.4000015258789,
-8.66600036621094, 15.4670000076294, 18.9160003662109, 19.0160007476807,
31.0990009307861, 14.3660001754761, 9.59899997711182, 11.0830001831055
), .Dim = 10L), lat = structure(c(35.8499984741211, 34.75, 70.9329986572266,
78.25, 69.6829986572266, 74.515998840332, 70.3659973144531, 67.265998840332,
63.6990013122559, 60.1990013122559), .Dim = 10L)), .Names = c("lon",
"lat"), row.names = c(NA, 10L), class = "data.frame")
#computing distance
dd<- rdist.earth(set1,set2,miles=FALSE)

现在我有矩阵 dd,有距离……但我不知道如何找到每个点的信息。我的意思是,例如,从数据集 1 中,第一个点,第二个数据集中最近的站点是什么?任何的想法??

非常感谢。

最佳答案

这是另一种可能的解决方案:

library(rgeos)
set1sp <- SpatialPoints(set1)
set2sp <- SpatialPoints(set2)
set1$nearest_in_set2 <- apply(gDistance(set1sp, set2sp, byid=TRUE), 1, which.min)

head(set1)
lon lat nearest_in_set2
## 1 13.67111 48.39167 10
## 2 12.86695 48.14806 10
## 3 15.94223 48.72111 10
## 4 11.09974 47.18917 1
## 5 12.95834 47.05444 1
## 6 14.20389 47.12917 1

关于r - 从不同长度的不同数据集中找到最近的经纬度点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442506/

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