Rails / ruby​​使用给定距离和从起点开始的方位计算新坐标

时间:2012-08-23 14:53:40

标签: ruby ruby-on-rails-3 geolocation geometry

在ruby / rails中有一个简单的非数学类和确定的方法,输入是:

1) An Initial Geo-Coordinate 
2) A Bearing
3) A Distance in the Bearing's Direction

输出是新的Geo-Coordinate

我查看了Ruby Geocoder Gem,但它没有这样做。

谢谢!

1 个答案:

答案 0 :(得分:7)

首次点击Google中的“距离”:Calculate distance, bearing and more between Latitude/Longitude points

JavaScript代码在Ruby中运行良好:

lat1 = 0.9250245 # starting point's latitude (in radians)
lon1 = 0.0174532 # starting point's longitude (in radians)
brng = 1.67551   # bearing (in radians)
d    = 124.8     # distance to travel in km
R    = 6371.0    # earth's radius in km

lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
          Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) )
# => 0.9227260710962849                  

lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                 Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2))
# => 0.0497295729068199      

# NB. Ensure that all values are cast to floats