使用Ruby进行离线地理计算,可以完成吗?

时间:2013-02-28 13:45:56

标签: ruby database geolocation

我是GeoCoding / GeoData / etc的新手,对于在不连接在线Geo服务的情况下进行计算有疑问。

如果已经知道x的经度和纬度,以及y的经度和纬度,是否可以在不访问在线服务的情况下确定两点之间的距离(即Google,Geocoder .ca等)?

目前,数据位于MySQL数据库中。

注意:我在这里找到了几个半相关的答案,但它们链接到C库,而我正在使用Ruby。

更新:如果您已经在使用RubyGeocoder进行在线服务查询,您可能有兴趣知道它内置了Haversine功能,documented here

2 个答案:

答案 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%