Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想用gps计算距离_Java - Fatal编程技术网

Java 我想用gps计算距离

Java 我想用gps计算距离,java,Java,我目前正在做一个gps项目。我已经阅读了一个xml文件,我可以以minLat、maxLat、minLon、maxLon的形式打印出经度和纬度边界。方式、关系和节点属性,如id、用户、uid、版本、可见、变更集和时间戳。我还可以打印出标记键和值以及引用。我现在的问题是,我想使用纬度和经度计算两点之间的距离,但我不清楚如何计算,以及我打印到控制台的哪些属性确实需要计算。所以我需要一些帮助 您需要使用哈弗森公式计算。 下面是一个perl脚本的片段,它正好做到了这一点,我建议看一看,以获得更好的解释:

我目前正在做一个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文件中的属性边界。但我还有节点标记中的纬度和经度,这就是为什么我不知道应该使用哪个纬度和经度来计算权重。