h1. Haversine Distance
This gem calculates the Haversine distance between two points given their longitude and latitude. This is done using trigonometry without ActiveRecord or SQL. See http://en.wikipedia.org/wiki/Haversine_formula for details on the Haversine formula.
This is a replacement for all geo libraries that use built-in SQL DB functionality for their calculations.
h2. Install & Usage
Install this gem with @gem install haversine@. Calling @Haversine.distance@ with four lat/lon coordinates returns a @Haversine::Distance@ object which can provide output in kilometers, meters, miles, or feet.
require 'haversine' distance = Haversine.distance(35.61488, 139.5813, 48.85341, 2.3488) distance.class => Haversine::Distance distance.to_miles => 6032.71091869803 distance.to_kilometers => 9715.47049115903 distance.to_meters => 9715470.49115903 distance.to_feet => 31852713.6507256 distance.to_nautical_miles => 5242.2799481204265
Convenience aliases for the measurements exist:
distance.to_kilometers == distance.to_km distance.to_meters == distance.to_m distance.to_miles == distance.to_mi distance.to_feet == distance.to_ft distance.to_nautical_miles == distance.to_nm
Note that @to_m@ is the distance in meters, not miles.
If you have lat/lon pairs stored in an array, you can alternately provide two arrays when calling @Haversine.distance@:
require 'haversine' new_york_city = [40.71427, -74.00597] santiago_chile = [-33.42628, -70.56656] Haversine.distance(new_york_city, santiago_chile).to_miles => 5123.73
Note: Haversine is used in the "geo_magic":https://github.com/kristianmandrup/geo_magic gem
h2. Contributing to haversine
h2. Copyright
Copyright (c) 2011 Kristian Mandrup. See LICENSE.txt for further details.