Module: GeoUnits
- Extended by:
- GeoUnits
- Included in:
- GeoUnits
- Defined in:
- lib/geo_units.rb,
lib/geo_units/converter.rb,
lib/geo_units/numeric_ext.rb
Overview
Parses string representing degrees/minutes/seconds into numeric degrees
This is very flexible on formats, allowing signed decimal degrees, or deg-min-sec optionally suffixed by compass direction (NSEW). A variety of separators are accepted (eg 3º 37’ 09“W) or fixed-width format without separators (eg 0033709W). Seconds and minutes may be omitted. (Note minimal validation is done).
Defined Under Namespace
Modules: Converter, NumericExt
Instance Method Summary collapse
- #normalize_deg(degrees, shift = 0) ⇒ Object (also: #normalize_degrees)
-
#normalize_lat(deg) ⇒ Object
all degrees between -90 and 90.
-
#normalize_lng(deg) ⇒ Object
all degrees between -180 and 180.
Instance Method Details
#normalize_deg(degrees, shift = 0) ⇒ Object Also known as: normalize_degrees
117 118 119 |
# File 'lib/geo_units/converter.rb', line 117 def normalize_deg degrees, shift = 0 (degrees + shift) % 360 end |
#normalize_lat(deg) ⇒ Object
all degrees between -90 and 90
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/geo_units/converter.rb', line 94 def normalize_lat deg case deg when -360..-270 deg % 90 when -270..-180 90 - (deg % 90) when -180..-90 - (deg % 90) when -90..0 -90 + (deg % 90) when 0..90 deg when 90..180 deg % 90 when 180..270 - (deg % 90) when 270..360 - 90 + (deg % 90) else raise ArgumentError, "Degrees #{deg} out of range, must be between -360 to 360" end end |
#normalize_lng(deg) ⇒ Object
all degrees between -180 and 180
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/geo_units/converter.rb', line 78 def normalize_lng deg case deg when -360..-180 deg % 180 when -180..0 -180 + (deg % 180) when 0..180 deg when 180..360 deg % 180 else raise ArgumentError, "Degrees #{deg} out of range, must be between -360 to 360" end end |