Java 我想用gps计算距离
我目前正在做一个gps项目。我已经阅读了一个xml文件,我可以以minLat、maxLat、minLon、maxLon的形式打印出经度和纬度边界。方式、关系和节点属性,如id、用户、uid、版本、可见、变更集和时间戳。我还可以打印出标记键和值以及引用。我现在的问题是,我想使用纬度和经度计算两点之间的距离,但我不清楚如何计算,以及我打印到控制台的哪些属性确实需要计算。所以我需要一些帮助 您需要使用哈弗森公式计算。 下面是一个perl脚本的片段,它正好做到了这一点,我建议看一看,以获得更好的解释: 下面是对这个问题的更深入的解释: 哈弗森公式:Java 我想用gps计算距离,java,Java,我目前正在做一个gps项目。我已经阅读了一个xml文件,我可以以minLat、maxLat、minLon、maxLon的形式打印出经度和纬度边界。方式、关系和节点属性,如id、用户、uid、版本、可见、变更集和时间戳。我还可以打印出标记键和值以及引用。我现在的问题是,我想使用纬度和经度计算两点之间的距离,但我不清楚如何计算,以及我打印到控制台的哪些属性确实需要计算。所以我需要一些帮助 您需要使用哈弗森公式计算。 下面是一个perl脚本的片段,它正好做到了这一点,我建议看一看,以获得更好的解释:
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
式中,R为地球半径(平均半径=6371km);请注意,角度需要以弧度为单位才能传递到trig函数
(来源是上面的链接)您需要使用哈弗森公式计算。 下面是一个perl脚本的片段,它正好做到了这一点,我建议看一看,以获得更好的解释: 下面是对这个问题的更深入的解释: 哈弗森公式:
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
式中,R为地球半径(平均半径=6371km);请注意,角度需要以弧度为单位才能传递到trig函数
(来源是上面的链接)
这一个被标记为已回答,并且有一个示例函数。
这一个被标记为已回答,并且有一个示例函数。@serrghi,我应该使用minlat、maxlat、minlon和maxlon来计算它吗?@serrghi,我应该使用minlat、maxlat、minlon和maxlon来计算它吗?我有点不确定它们代表什么,但是我猜这是对你位置的粗略计算(你在minlat是最小的,在maxlat是最大的),所以也许你需要计算差异(不确定)。是的,它们是xml文件中的属性边界。但是我还有节点标记中的纬度和经度,这就是为什么我真的不知道应该用哪个纬度和经度来计算重量。我应该用minlat、maxlat、minlon和maxlon来计算吗?我有点不确定它们代表什么,但我猜这只是粗略计算你的位置(你在minlat最小,在maxlat最大),因此,可能需要计算差异(不确定)。是的,它们是xml文件中的属性边界。但我还有节点标记中的纬度和经度,这就是为什么我不知道应该使用哪个纬度和经度来计算权重。