geo_units

Distance unit modules and functionality for use in geo libraries

MIT License

Downloads
710.6K
Stars
5
Committers
1

h1. 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.

h2. Usage

in Gemfile:

@gem 'geo_units'@

Then run the bundler!

@$ bundle@

h2. 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 :)

h2. GeoUnits API

h2. Core extensions API

h2. Dms Converter

module GeoUnits::DmsConverter

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

h2. 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)

h2. 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

... end

h2. 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.

h2. Copyright

Copyright (c) 2011 Kristian Mandrup. See LICENSE.txt for further details.