grid_square 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module GridSquare
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/grid_square.rb CHANGED
@@ -2,75 +2,76 @@ require 'location'
2
2
  require 'radix_enumerator'
3
3
  require 'string_ext'
4
4
 
5
- class GridSquare
6
- attr_reader :grid_reference, :origin
7
-
8
- # location can be a string containing a GS reference or a pair
9
- # containing longitude and latitude.
10
- def initialize(grid_reference)
11
- @grid_reference = grid_reference
12
- decode
13
- end
14
-
15
- def self.encode(longitude, latitude, precision=4 )
16
- longitude += 180
17
- latitude += 90
18
- radixes = RadixEnumerator.new
19
- grid_reference = ''
20
- size = Location.new(360.0, 180.0)
21
- precision.times do
22
- zero,radix = *radixes.next
23
-
24
- lng = (radix * longitude / size.longitude).floor
25
- lat = (radix * latitude / size.latitude).floor
26
-
27
- grid_reference += "%s%s" % [(zero + lng).chr, (zero + lat).chr]
28
- size /= radix
29
- longitude -= lng * size.longitude
30
- latitude -= lat * size.latitude
5
+ module GridSquare
6
+ class GridSquare
7
+ attr_reader :grid_reference, :origin
8
+
9
+ # location can be a string containing a GS reference or a pair
10
+ # containing longitude and latitude.
11
+ def initialize(grid_reference)
12
+ @grid_reference = grid_reference
13
+ decode
31
14
  end
32
-
33
- new grid_reference.downcase_last
34
- end
35
-
36
- # Maidenhead locator names
37
- def field; precision 1; end
38
- def square; precision 2; end
39
- def subsquare; precision 3; end
40
- def extended_subsquare; precision 4; end
41
-
42
- # Return code to a given number of 2-digit fields
43
- def precision(num_fields)
44
- raise IndexError.new "GridSquare.square: insufficient precision to index #{num_fields} fields" unless grid_reference.length >= num_fields * 2
45
- grid_reference[0...num_fields*2].downcase_last
46
- end
47
-
48
- def decode
49
- radixes = RadixEnumerator.new
50
- @origin, @size = Location.new(-180.0, -90.0), Location.new(360.0, 180.0)
51
-
52
- @grid_reference.upcase.chars.each_slice(2) do |lng, lat|
53
- zero, radix = *radixes.next
54
- @size /= radix
55
- @origin += Location.new(@size.longitude * (lng.ord - zero), @size.latitude * (lat.ord - zero))
15
+
16
+ def self.encode(longitude, latitude, precision=4 )
17
+ longitude += 180
18
+ latitude += 90
19
+ radixes = RadixEnumerator.new
20
+ grid_reference = ''
21
+ size = Location.new(360.0, 180.0)
22
+ precision.times do
23
+ zero,radix = *radixes.next
24
+
25
+ lng = (radix * longitude / size.longitude).floor
26
+ lat = (radix * latitude / size.latitude).floor
27
+
28
+ grid_reference += "%s%s" % [(zero + lng).chr, (zero + lat).chr]
29
+ size /= radix
30
+ longitude -= lng * size.longitude
31
+ latitude -= lat * size.latitude
32
+ end
33
+
34
+ new grid_reference.downcase_last
35
+ end
36
+
37
+ # Maidenhead locator names
38
+ def field; precision 1; end
39
+ def square; precision 2; end
40
+ def subsquare; precision 3; end
41
+ def extended_subsquare; precision 4; end
42
+
43
+ # Return code to a given number of 2-digit fields
44
+ def precision(num_fields)
45
+ raise IndexError.new "GridSquare.square: insufficient precision to index #{num_fields} fields" unless grid_reference.length >= num_fields * 2
46
+ grid_reference[0...num_fields*2].downcase_last
47
+ end
48
+
49
+ def decode
50
+ radixes = RadixEnumerator.new
51
+ @origin, @size = Location.new(-180.0, -90.0), Location.new(360.0, 180.0)
52
+
53
+ @grid_reference.upcase.chars.each_slice(2) do |lng, lat|
54
+ zero, radix = *radixes.next
55
+ @size /= radix
56
+ @origin += Location.new(@size.longitude * (lng.ord - zero), @size.latitude * (lat.ord - zero))
57
+ end
58
+ end
59
+
60
+ def width; @size.longitude; end
61
+ def height; @size.latitude; end
62
+
63
+ def left; @origin.longitude; end
64
+ def bottom; @origin.latitude; end
65
+ def top; (@origin + @size).latitude; end
66
+ def right; (@origin + @size).longitude; end
67
+
68
+ alias :west :left
69
+ alias :south :bottom
70
+ alias :east :right
71
+ alias :north :top
72
+
73
+ def center
74
+ @origin + @size/2
56
75
  end
57
- end
58
-
59
- def width; @size.longitude; end
60
- def height; @size.latitude; end
61
-
62
- def left; @origin.longitude; end
63
- def bottom; @origin.latitude; end
64
- def top; (@origin + @size).latitude; end
65
- def right; (@origin + @size).longitude; end
66
-
67
- alias :west :left
68
- alias :south :bottom
69
- alias :east :right
70
- alias :north :top
71
-
72
- def center
73
- @origin + @size/2
74
76
  end
75
77
  end
76
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grid_square
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: