Geo Units

Distance unit functionality (conversions etc.) for Geo libraries. See specs for details.

This gem is used by the geo_point and geo_calc gems and perhaps by others. The aim is that it will contain most of the basic distance unit functionality required by typical Geo projects.


in Gemfile:

gem 'geo_units'

Then run the bundler!

$ bundle

Status update (Sept 21, 2011)

GeoUnits is currently undergoing a major refactoring effort in order to group functionality in a more granular fashion, to allow for greater flexibility. Also, the new GeoUnits will not specifically target use for geo calculations for Earth, but also other globes/worlds, such as in a fantasy setting, planets, suns etc. Please help in this effort :)

The master branch has now been updated in order to allow specification of the order: Set the `GeoUnit.default_coords_order` to fit your usage scenario.

`GeoUnit.default_coords_order = :lng_lat`

`GeoUnit.default_coords_order = :lat_lng`

All specs pass again and the dependencies have been updated :)

GeoUnits API

GeoUnits.key(:foot) # will convert any kind of unit into one of (:feet, :meters, :kms, :miles, :radians)
=> :feet
GeoUnits.kms_to :meters, 5 # convert number of one distance unit to another unit
=> 5000  

Core extensions API

=> 222.34  
=> 3.21

Dms Converter

module GeoUnits::DmsConverter

  • parse_dms(string)
  • to_dms(deg, format = :dms, dp = nil)

Numeric conversions

module GeoUnits::NumericExt

This module is included on the Fixnum and Float classes

  • to_lat
  • to_lng
  • to_dms
  • to_lat_dms
  • to_lon_dms
  • to_rad
  • to_deg
  • normalize_lng
  • normalize_lat
  • normalize_deg(shift)

Using specific GeoUnits modules

The main GeoUnits module consist of various sub-modules that can be used on a case basis. Including the GeoUnits module will include and extend the base class with all these sub-modules.

class MyGeoThingy include GeoUnits::Maps # various maps, mapping unit to some distance etc. extend GeoUnits::Constants # useful geo constants


Contributing to geo_units

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet
  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.


Copyright © 2011 Kristian Mandrup. See LICENSE.txt for further details.