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

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