【问题标题】:I want to calculate distance in a gps我想用gps计算距离
【发布时间】:2011-07-01 20:47:19
【问题描述】:

我目前正在从事一个 GPS 项目。我已经阅读了一个xml文件,我可以以minLat、maxLat、minLon、maxLon的形式打印出经纬度界限。 Way、Relation 和 Node 属性,例如 id、user、uid、version、visible、changeset 和 timestamp。我还可以打印出标签键和值以及参考。我现在的问题是我想使用纬度和经度来计算两点之间的距离,我不清楚如何做到这一点,以及我打印到控制台的哪些属性我真的需要这样做。所以我需要一些帮助!

【问题讨论】:

    标签: java


    【解决方案1】:

    您需要使用 Haversine 公式计算此值。 这是一个 perl 脚本的 sn-p 正是这样做的,我建议看一下它以获得更好的解释:http://jan.ucc.nau.edu/~cvm/latlon_formula.html

    这里是对问题的更深入解释:http://www.movable-type.co.uk/scripts/latlong.html

    Haversine 公式:

     a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2) 
     c = 2.atan2(√a, √(1−a)) 
     d = R.c    
    

    其中 R 是地球的半径(平均半径 = 6,371 公里);请注意,角度需要以弧度为单位才能传递给三角函数!

    (来源是上面的链接)

    【讨论】:

    • 我应该使用minlat、maxlat、minlon和maxlon来计算吗?
    • 我有点不确定它们代表什么,但我猜测它是你位置的粗略计算(你在 minlat 时是最小值,在 maxlat 时是最大值),所以也许你需要计算差异(不确定)。
    • 是的,它们是 xml 文件中的属性边界。但是我也有来自 Node 标记的纬度和经度,这就是为什么我真的不知道应该使用哪个纬度和经度计算重量。
    【解决方案2】:

    Calculate distance in meters when you know longitude and latitude in java

    这个被标记为已回答,并且有一个示例函数。

    【讨论】:

    • @serrghi,我应该使用 minlat、maxlat、minlon 和 maxlon 来计算吗?
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多