geodesic version 1.0.0 has been released!
Geodesic is a Ruby library for calculating distance and bearing on the
Earth’s surface using longitude and latitude. I found it helpful in
some basic position management applications. See README at above site
for install instructions.
Geodesic contains the following features:
- A Position class to encapsulate an Earth position
(latitude and longitude) - A method to calculate the distance between two positions
using Haversine formula - A method to calculate the distance between two positions
using the Law of Cosines - A method to calculate the initial bearing between two positions
- A method to calculate a position a given distance from another
position along a bearing
Sample Usage
require ‘rubygems’
require ‘geodesic’
fremont = Geodesic::Position.new(37.549531, -121.998711)
farmington = Geodesic::Position.new(37.923482, -121.015263)
d = Geodesic::dist_haversine(fremont.lat, fremont.lon, farmington.lat,
farmington.lon)
print "distance from Fremont to Farmington is “, d, " kilometers\n”
b = Geodesic::bearing(fremont.lat, fremont.lon, farmington.lat,
farmington.lon)
print "bearing is “, b, " degrees\n”
p = Geodesic::dest_position(fremont.lat, fremont.lon, b, d + 10)
print "10 kilometers beyond farmington is ", p.lat, ", ", p.lon, “\n”
The output is:
distance from Fremont to Farmington is 95.957632116596 kilometers
bearing is 64.0206814526114 degrees
10 kilometers beyond farmington is 37.9619800970259, -120.912203460738
Credits
The original author of the JavaScript implementation, Chris Veness,
can be found at:
Calculate distance and bearing between two Latitude/Longitude points using haversine formula in JavaScript
License
GNU LGPL, Lesser General Public License version 2.1. For details,
see file “COPYING.LESSER”.