os_map_ref 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e2b921bf19f2d0da1e4137e3d99405406c3b0bd
4
- data.tar.gz: 3ab34f8c15a09653a0fe9832c6d2582f12fba8ac
3
+ metadata.gz: 63ae3fcaaf973eec7b4724150197b0ab202538be
4
+ data.tar.gz: 08a5ebe1a235a599ea73648a2b0a8718134f3b7b
5
5
  SHA512:
6
- metadata.gz: 5aa6dadbd16152dc75dbadf0bb18fba8861c884687e1562912316279355fd06bb9f789ce3c1ce5b3a4d2efa2d77c57177b90803a0c41dd8d7a67b239c9338e3f
7
- data.tar.gz: c87a6547421f334dc30ca1f71b271043773139fcff45a38924426b57424d476261f8c7f1eb027965b1d7c07d7c9553ff0106f55690b6c59b9d501c0cbb930515
6
+ metadata.gz: de6195a4927e318ebc2c00cf8c61677ee3a9d144cbbf1cd3a76ce80920e5768ff4a2810272d979917e90a39841f2866d4e55dbcc360c65513231be3b93b4b322
7
+ data.tar.gz: e21af0b63498777aa48e6ec7b2e6ab6dc1ac5dc6ece9f94b9eb9c3e7fc397f2fb8e409adf3a219fdbb52be4441a7a7fa6a25e29c83c7280a267accf733d826f2
data/README.md CHANGED
@@ -41,15 +41,59 @@ location.northing == 171043
41
41
  location.map_reference == 'ST 58801 71043'
42
42
  ```
43
43
 
44
+ ### From OS Map Reference to Longitude and Latitude
45
+
46
+ If your end result needs to be longitude and latitude, you can combine the
47
+ OsMapRef output with that of another gem:
48
+ [global_convert](https://github.com/reggieb/global_convert)
49
+
50
+ For example
51
+
52
+ ```ruby
53
+ require 'global_convert'
54
+ require 'os_map_ref'
55
+
56
+ os_location = OsMapRef::Location.for 'ST 58801 71043'
57
+
58
+ location = GlobalConvert::Location.new(
59
+ input: {
60
+ projection: :osgb36,
61
+ lon: os_location.easting,
62
+ lat: os_location.northing
63
+ },
64
+ output: {
65
+ projection: :wgs84
66
+ }
67
+ )
68
+
69
+ puts "Latitude = #{location.lat} in radians."
70
+ puts "Longitude = #{location.lon} in radians."
71
+ ```
72
+
44
73
  ## Development
45
74
 
46
- After checking out the repo, run `bin/setup` to install dependencies.
47
- Then, run `rake test` to run the tests. You can also run `bin/console`
75
+ After checking out the repo, run `bin/setup` to install dependencies.
76
+ Then, run `rake test` to run the tests. You can also run `bin/console`
48
77
  for an interactive prompt that will allow you to experiment.
49
78
 
50
- To install this gem onto your local machine, run `bundle exec rake install`.
79
+ To install this gem onto your local machine, run `bundle exec rake install`.
51
80
 
52
81
  ## Contributing
53
82
 
54
83
  Bug reports and pull requests are welcome on GitHub at https://github.com/reggieb/os_map_ref.
55
84
 
85
+ ## License
86
+
87
+ THIS INFORMATION IS LICENSED UNDER THE CONDITIONS OF THE OPEN GOVERNMENT LICENCE found at:
88
+
89
+ http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3
90
+
91
+ The following attribution statement MUST be cited in your products and applications when using this information.
92
+
93
+ > Contains public sector information licensed under the Open Government license v3
94
+
95
+ ### About the license
96
+
97
+ The Open Government Licence (OGL) was developed by the Controller of Her Majesty's Stationery Office (HMSO) to enable information providers in the public sector to license the use and re-use of their information under a common open licence.
98
+
99
+ It is designed to encourage use and re-use of information freely and flexibly, with only a few conditions.
data/Rakefile CHANGED
@@ -7,4 +7,6 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :spec
10
+ task :spec => :test
11
+
12
+ task :default => :test
@@ -1,92 +1,92 @@
1
1
  require 'matrix'
2
2
  module OsMapRef
3
3
  class Location
4
-
4
+
5
5
  def self.for(text)
6
6
  input_processor = InputProcessor.new(text)
7
7
  new input_processor.params
8
8
  end
9
-
9
+
10
10
  def initialize(args={})
11
11
  @map_reference = args[:map_reference].freeze if args[:map_reference]
12
12
  @easting = args[:easting].to_i if args[:easting]
13
13
  @northing = args[:northing].to_i if args[:northing]
14
14
  end
15
-
15
+
16
16
  def map_reference
17
17
  @map_reference ||= build_map_reference.freeze
18
18
  end
19
-
19
+
20
20
  def build_map_reference
21
21
  [grid_reference_prefix, short_easting, short_northing].join(' ')
22
22
  end
23
-
23
+
24
24
  def grid_easting
25
25
  easting.to_s[0].to_i
26
26
  end
27
-
27
+
28
28
  def short_easting
29
29
  easting.to_s[1..-1].to_i
30
30
  end
31
-
31
+
32
32
  def long_northing?
33
33
  northing.to_s.length >= 7
34
34
  end
35
-
35
+
36
36
  def grid_northing
37
37
  northing.to_s[0..(chars_in_northing_start - 1)].to_i
38
38
  end
39
-
39
+
40
40
  def short_northing
41
41
  northing.to_s[chars_in_northing_start..-1].to_i
42
42
  end
43
-
43
+
44
44
  def chars_in_northing_start
45
45
  long_northing? ? 2 : 1
46
46
  end
47
-
47
+
48
48
  def grid_reference_prefix
49
49
  grid[grid_northing][grid_easting]
50
50
  end
51
-
51
+
52
52
  def easting
53
53
  @easting ||= easting_from_map_reference.to_i
54
54
  end
55
-
55
+
56
56
  def northing
57
57
  @northing ||= northing_from_map_reference.to_i
58
- end
59
-
58
+ end
59
+
60
60
  def northing_from_map_reference
61
61
  northing_easting_from_map_reference[0].to_s + map_reference_parts[2]
62
62
  end
63
-
63
+
64
64
  def easting_from_map_reference
65
65
  northing_easting_from_map_reference[1].to_s + map_reference_parts[1]
66
66
  end
67
-
67
+
68
68
  # The parts should be a pair of letters then two sets of numbers
69
- # 'ST 58901 71053' becomes ['ST', '58901', '71053']
69
+ # 'ST 58901 71053' becomes ['ST', '58901', '71053']
70
70
  def map_reference_parts
71
71
  @map_reference_parts ||= map_reference.split
72
72
  end
73
-
73
+
74
74
  # Returns array of [grid_northing, grid_easting] for the gird element
75
75
  # matching the map reference start. So 'ST 58901 71053' will return [1, 3]
76
76
  def northing_easting_from_map_reference
77
77
  @northing_easting_from_map_reference ||= matrix.index map_reference_parts[0]
78
78
  end
79
-
79
+
80
80
  def matrix
81
81
  @matrix ||= Matrix[*grid]
82
82
  end
83
-
83
+
84
84
  # Grid of 100km squares as they are arranged over the UK.
85
- # The grid is reversed so that the origin (0,0) is the
85
+ # The grid is reversed so that the origin (0,0) is the
86
86
  # bottom left corner ('SV').
87
87
  def grid
88
88
  @grid ||= [
89
- %w[HL HM HN HO HP JL JM JH JO JP],
89
+ %w[HL HM HN HO HP JL JM JN JO JP],
90
90
  %w[HQ HR HS HT HU JQ JR JS JT JU],
91
91
  %w[HV HW HX HY HZ JV JW JX JY JZ],
92
92
  %w[NA NB NC ND NE OA OB OC OD OE],
@@ -1,3 +1,3 @@
1
1
  module OsMapRef
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: os_map_ref
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Nichols
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2016-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler