我是GeoCoding / GeoData / etc的新手,对于在不连接在线Geo服务的情况下进行计算有疑问。
如果已经知道x
的经度和纬度,以及y
的经度和纬度,是否可以在不访问在线服务的情况下确定两点之间的距离(即Google,Geocoder .ca等)?
目前,数据位于MySQL数据库中。
注意:我在这里找到了几个半相关的答案,但它们链接到C库,而我正在使用Ruby。
更新:如果您已经在使用RubyGeocoder进行在线服务查询,您可能有兴趣知道它内置了Haversine功能,documented here。
答案 0 :(得分:2)
可以使用 Haversine公式计算点之间的距离。 (维基百科:http://en.wikipedia.org/wiki/Haversine_formula)
以下是一个示例实现: http://www.esawdust.com/blog/gps/files/HaversineFormulaInRuby.html
答案 1 :(得分:0)
由于我们的地球是椭球而不是球体,因此,如果您要寻找更精确的解决方案,请查看Lambert's formula。
我已经为此实现了。
https://github.com/tonytonyjan/geodesics
它通过了针对WGS84椭球的500,000个测地线测试集,精度超过了 99%。