geo_units 0.2.6 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,117 +0,0 @@
1
- module GeoUnits
2
- module NumericExt
3
- def to_lat
4
- normalize_lat
5
- end
6
-
7
- def to_lng
8
- normalize_lng
9
- end
10
-
11
- def is_between? lower, upper
12
- (lower..upper).cover? self
13
- end
14
-
15
- def to_dms format = :dms, dp = nil
16
- GeoUnits::DmsConverter.to_dms self, format, dp
17
- end
18
-
19
- def to_lat_dms format = :dms, dp = nil
20
- GeoUnits::Converter.to_lat self, format, dp
21
- end
22
-
23
- def to_lon_dms format = :dms, dp = nil
24
- GeoUnits::Converter.to_lon self, format, dp
25
- end
26
- alias_method :to_lng_dms, :to_lon_dms
27
-
28
- # Converts numeric degrees to radians
29
- def to_rad
30
- self * Math::PI / 180
31
- end
32
- alias_method :to_radians, :to_rad
33
- alias_method :as_rad, :to_rad
34
- alias_method :as_radians, :to_rad
35
- alias_method :in_rad, :to_rad
36
- alias_method :in_radians, :to_rad
37
-
38
-
39
- # Converts radians to numeric (signed) degrees
40
- # latitude (north to south) from equator +90 up then -90 down (equator again) = 180 then 180 for south = 360 total
41
- # longitude (west to east) east +180, west -180 = 360 total
42
- def to_deg
43
- self * 180 / Math::PI
44
- end
45
-
46
- alias_method :to_degrees, :to_deg
47
- alias_method :as_deg, :to_deg
48
- alias_method :as_degrees, :to_deg
49
- alias_method :in_deg, :to_deg
50
- alias_method :in_degrees, :to_deg
51
-
52
-
53
- # Formats the significant digits of a number, using only fixed-point notation (no exponential)
54
- #
55
- # @param {Number} precision: Number of significant digits to appear in the returned string
56
- # @returns {String} A string representation of number which contains precision significant digits
57
- def to_precision precision
58
- self.round(precision).to_s
59
- end
60
- alias_method :to_fixed, :to_precision
61
-
62
- # all degrees between -180 and 180
63
- def normalize_lng
64
- case self
65
- when -360, 0, 360
66
- 0
67
- when -360..-180
68
- self % 180
69
- when -180..0
70
- -180 + (self % 180)
71
- when 0..180
72
- self
73
- when 180..360
74
- self % 180
75
- else
76
- return (self % 360).normalize_lng if self > 360
77
- return (360 - (self % 360)).normalize_lng if self < -360
78
- raise ArgumentError, "Degrees #{self} out of range"
79
- end
80
- end
81
-
82
- # all degrees between -90 and 90
83
- def normalize_lat
84
- case self
85
- when -360, 0, 360
86
- 0
87
- when -180, 180
88
- 0
89
- when -360..-270
90
- self % 90
91
- when -270..-180
92
- 90 - (self % 90)
93
- when -180..-90
94
- - (self % 90)
95
- when -90..0
96
- -90 + (self % 90)
97
- when 0..90
98
- self
99
- when 90..180
100
- self % 90
101
- when 180..270
102
- - (self % 90)
103
- when 270..360
104
- - 90 + (self % 90)
105
- else
106
- return (self % 360).normalize_lat if self > 360
107
- return (360 - (self % 360)).normalize_lat if self < -360
108
- raise ArgumentError, "Degrees #{self} out of range"
109
- end
110
- end
111
-
112
- def normalize_deg shift = 0
113
- (self + shift) % 360
114
- end
115
- alias_method :normalize_degrees, :normalize_deg
116
- end
117
- end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
-
3
- # - www.movable-type.co.uk/scripts/latlong.html
4
- describe Array do
5
- # deg, format, dp
6
- describe '#to_dms' do
7
- it 'should convert [58.3, 4] to string of dms format' do
8
- dms_arr = [58.3, 4].to_dms
9
- puts dms_arr.inspect
10
- end
11
- end
12
- end