Module: Libgeo::Coordinate::ClassMethods
- Included in:
- Libgeo::Coordinate
- Defined in:
- lib/libgeo/coordinate/class_methods.rb
Constant Summary collapse
- DMS_SEPARATORS =
/['°′"`\ \,]+/.freeze
- NMEA_SEPARATORS =
/(,\ |,|\ )/.freeze
Instance Method Summary collapse
-
#decimal(value) ⇒ Object
Factory: make a coordinate from decimal value.
-
#degrees_minutes(degrees, minutes) ⇒ Object
Factory: make a coordinate from degrees and full minutes.
-
#dms(input) ⇒ Object
Factory: make a coordinate from dms value.
-
#nmea(input) ⇒ Object
Factory: make a coordinate from nmea input.
Instance Method Details
#decimal(value) ⇒ Object
Factory: make a coordinate from decimal value
Examples:
Longitude.decimal(39.342679) # => #<Longitude hemisphere=E degrees=39 minutes=20 ...
Params:
-
value Float decimal coordinate
Returns: Latitude|Longitude|Coordinate instance
22 23 24 25 |
# File 'lib/libgeo/coordinate/class_methods.rb', line 22 def decimal(value) minutes = value.abs.to_d.modulo(1) * 60 # extract minutes from decimal degrees create(dir_from(value), value.abs.to_i, *min_with_sec(minutes)) end |
#degrees_minutes(degrees, minutes) ⇒ Object
Factory: make a coordinate from degrees and full minutes
Params:
-
degrees Fixnum degrees part
-
minutes Float full minutes, with seconds
Examples:
Latitude.degrees_minutes(-39, 20.56074) # => #<Latitude hemisphere=S degrees=39 minutes=20 ...
Returns: Latitude|Longitude|Coordinate instance
89 90 91 |
# File 'lib/libgeo/coordinate/class_methods.rb', line 89 def degrees_minutes(degrees, minutes) create(dir_from(degrees), degrees.abs.to_i, *min_with_sec(minutes)) end |
#dms(input) ⇒ Object
Factory: make a coordinate from dms value
Examples:
Longitude.dms("58°39′13.5 S") # => #<Longitude hemisphere=S degrees=58 minutes=39 ...
Params:
-
inputs String dms coordinate
Returns: Latitude|Longitude|Coordinate instance
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/libgeo/coordinate/class_methods.rb', line 63 def dms(input) string_values = input.split(DMS_SEPARATORS) degrees = string_values[0].to_i # get degrees and minutes minutes = (string_values[1] || 0).to_i seconds = (string_values[2] || 0).to_f hemi = string_values[3] direction = dir_from_values(degrees, hemi) create(direction, degrees.abs, minutes, seconds, hemi) end |
#nmea(input) ⇒ Object
Factory: make a coordinate from nmea input
Examples:
Longitude.nmea('03920.56074,E') # => #<Longitude hemisphere=E degrees=39 minutes=20 ...
Params:
-
input String nmea coordinate
Returns: Latitude|Longitude|Coordinate instance
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/libgeo/coordinate/class_methods.rb', line 39 def nmea(input) value, hemi = prepare_nmea(input) value = value.to_f direction = dir_from_values(value, hemi) degrees = value.to_i.abs / 100 create(direction, degrees, *min_with_sec_nmea(value.abs), hemi) end |