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.
Usage
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
2.radians_to(:kms) => 222.34
@2.miles_to(:kms) => 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
end
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
Copyright © 2011 Kristian Mandrup. See LICENSE.txt for
further details.