【发布时间】:2015-05-11 13:14:44
【问题描述】:
所以我有一个计算两个位置之间距离的公式,但是我想要第二个函数使用这个。 第二个函数将获取一个包含对应数字 1、2、3 等的 lat、long 值的列表。然后对于列表中的每个点,对该列中的所有其他 lat long 数据运行 GPSDist。找出距离 (d) 值最小的集合,并说出 lat long 对应的数字。
GPSDist <- function(lon1,lat1,lon2,lat2,u){
if (u=="k"){R<-6373}
if (u=="m"){R<-6378137}
if (u=="M"){R<-3961}
if (u=="k"){print("unit = kilometers")}
if (u=="m"){print("unit = meters")}
if (u=="M"){print("unit = miles")}
radians <- 0.0174532925
lon1 <- lon1* radians
lat1 <- lat1* radians
lon2 <- lon2* radians
lat2 <- lat2* radians
dlon <- lon2-lon1
dlat <- lat2-lat1
a <- ((sin((dlat)/2))^2) + cos(lat1) * cos(lat2) * ((sin((dlon)/2))^2)
c <- 2 * atan2(sqrt(a), sqrt(1-a))
d = c*R
return(d)
}
为了清楚起见,我想在每个点上使用该功能(GPSDist),假设有一个数据集 1 到 5; 使用点 1 对抗点 2、3、4、5。按其各自的编号找到最小的列表。 使用第 2 点与第 1、3、4、5 点等进行比较。
【问题讨论】:
-
您的问题是什么?您的函数
GPSDist()似乎正在按您的计划工作。 -
我认为 RyanMe321 想知道如何找到点之间的最小距离,前提是它们都在数据框或矩阵中。
-
我想在每个点上使用该函数(GPSDist),假设有一个数据集 1 到 5;使用点 1 对抗点 2、3、4、5。按其各自的编号找到最小的列表。使用第 2 点与第 1、3、4、5 点等进行比较。
标签: r