national_grid 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 91d57aee8d888d98b249a9b6a9441ba16e14f821
4
+ data.tar.gz: 586d14b009bc0408103838f903b03d712ce10b0d
5
+ SHA512:
6
+ metadata.gz: 366673606396f5ced7ca47ce7d02551463681c13c0939a4a9a9944620e9740302ea502b3eca594d9f79de4b9cf55df4bab57f0eb9bdc284c1d70416b827f4bc2
7
+ data.tar.gz: f296578bb91fe0ff92d6b0cd8847b407df3d65e09ecf5bf97d25e64bced713113059c31caf34d1f773374fe2198709bc1580fb4eaf0bfa4981a161676891f36e
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ *.bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "ext/ostn02c"]
2
+ path = ext/ostn02c
3
+ url = git@github.com:jawj/OSTN02C.git
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,31 @@
1
+ Copyright © 2014 Andrew Haines
2
+
3
+ NationalGrid uses the OSTN02C implementation of the Ordnance Survey National
4
+ Grid Transformation (OSTN02) and Ordnance Survey Geoid model (OSGM02).
5
+
6
+ OSTN02C © 2014 George MacKerron
7
+
8
+ OSTN02 and OSGM02 are trademarks of Ordnance Survey.
9
+ OSTN02 and OSGM02 data © Crown copyright 2002. All rights reserved.
10
+
11
+
12
+ MIT License
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining
15
+ a copy of this software and associated documentation files (the
16
+ "Software"), to deal in the Software without restriction, including
17
+ without limitation the rights to use, copy, modify, merge, publish,
18
+ distribute, sublicense, and/or sell copies of the Software, and to
19
+ permit persons to whom the Software is furnished to do so, subject to
20
+ the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be
23
+ included in all copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # NationalGrid
2
+
3
+ NationalGrid is a Ruby binding to [OSTN02C](https://github.com/jawj/OSTN02C), which converts between National Grid easting-northing coordinates (OSGB36) and GPS latitude-longitude coordinates (ETRS89) using the OSTN02 transformation.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'national_grid'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install national_grid
18
+
19
+ ## Usage
20
+
21
+ ```ruby
22
+ require "national_grid"
23
+
24
+ NationalGrid::EastingNorthing.new(362269.979, 169978.688, 54.467).to_latitude_longitude
25
+ # => #<NationalGrid::LatitudeLongitude:0x3ff8f955f0b4 latitude=51.427547 longitude=-2.544076 elevation=104.018>
26
+
27
+ NationalGrid::LatitudeLongitude.new(53.779110, -3.040455, 64.940).to_easting_northing
28
+ # => #<NationalGrid::EastingNorthing:0x3ff8f995f04c easting=331534.545 northing=431920.763 elevation=12.636>
29
+ ```
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/extensiontask"
3
+ require "rake/testtask"
4
+ require_relative "ext/ostn02c"
5
+
6
+ CLEAN.include OSTN02C.object_path
7
+
8
+ file OSTN02C.library => OSTN02C.sources do
9
+ OSTN02C.make or fail "Building libostn02 failed"
10
+ end
11
+
12
+ Rake::ExtensionTask.new "national_grid" do |ext|
13
+ ext.lib_dir = "lib/national_grid"
14
+ end
15
+
16
+ Rake::Task["compile"].prerequisites.unshift FileList[OSTN02C.library]
17
+
18
+ Rake::TestTask.new "test" => "compile" do |test|
19
+ test.pattern = "test/**/*_test.rb"
20
+ end
21
+
22
+ task "default" => "test"
@@ -0,0 +1,6 @@
1
+ #include <common.h>
2
+
3
+ double default_to_zero(VALUE value) {
4
+ if (NIL_P(value)) return 0;
5
+ return NUM2DBL(value);
6
+ }
@@ -0,0 +1,4 @@
1
+ #pragma once
2
+ #include <national_grid.h>
3
+
4
+ double default_to_zero(VALUE value);
@@ -0,0 +1,8 @@
1
+ require "mkmf"
2
+ require_relative "../ostn02c"
3
+
4
+ dir_config "ostn02c", [OSTN02C.include_path], [OSTN02C.lib_path]
5
+
6
+ abort "libostn02 not found" unless have_library "ostn02", "test(false)", "OSTN02.h"
7
+
8
+ create_makefile "national_grid/national_grid"
@@ -0,0 +1,10 @@
1
+ #include <national_grid.h>
2
+
3
+ VALUE mNationalGrid;
4
+
5
+ void Init_national_grid() {
6
+ mNationalGrid = rb_define_module("NationalGrid");
7
+
8
+ Init_national_grid_easting_northing();
9
+ Init_national_grid_latitude_longitude();
10
+ }
@@ -0,0 +1,9 @@
1
+ #pragma once
2
+
3
+ #include <ruby.h>
4
+ #include <OSTN02.h>
5
+ #include <common.h>
6
+ #include <national_grid_easting_northing.h>
7
+ #include <national_grid_latitude_longitude.h>
8
+
9
+ extern VALUE mNationalGrid;
@@ -0,0 +1,60 @@
1
+ #include <national_grid_easting_northing.h>
2
+
3
+ VALUE cNationalGridEastingNorthing;
4
+
5
+ static EastingNorthing* easting_northing(VALUE self) {
6
+ EastingNorthing* data;
7
+ Data_Get_Struct(self, EastingNorthing, data);
8
+ return data;
9
+ }
10
+
11
+ static VALUE allocate(VALUE class) {
12
+ EastingNorthing* data = ALLOC(EastingNorthing);
13
+ return Data_Wrap_Struct(class, NULL, xfree, data);
14
+ }
15
+
16
+ static VALUE initialize(int argc, VALUE* argv, VALUE self) {
17
+ VALUE easting, northing, elevation;
18
+ rb_scan_args(argc, argv, "03", &easting, &northing, &elevation);
19
+
20
+ EastingNorthing* data = easting_northing(self);
21
+ data->e = default_to_zero(easting);
22
+ data->n = default_to_zero(northing);
23
+ data->elevation = default_to_zero(elevation);
24
+
25
+ return self;
26
+ }
27
+
28
+ static VALUE easting(VALUE self) {
29
+ return DBL2NUM(easting_northing(self)->e);
30
+ }
31
+
32
+ static VALUE northing(VALUE self) {
33
+ return DBL2NUM(easting_northing(self)->n);
34
+ }
35
+
36
+ static VALUE elevation(VALUE self) {
37
+ return DBL2NUM(easting_northing(self)->elevation);
38
+ }
39
+
40
+ static VALUE to_latitude_longitude(VALUE self) {
41
+ LatLonDecimal data = ETRS89LatLonFromETRS89EastingNorthing(ETRS89EastingNorthingFromOSGB36EastingNorthing(*easting_northing(self)));
42
+ if (data.geoid == 0) return Qnil;
43
+ return new_national_grid_latitude_longitude(data);
44
+ }
45
+
46
+ void Init_national_grid_easting_northing() {
47
+ cNationalGridEastingNorthing = rb_define_class_under(mNationalGrid, "EastingNorthing", rb_cObject);
48
+ rb_define_alloc_func(cNationalGridEastingNorthing, allocate);
49
+ rb_define_method(cNationalGridEastingNorthing, "initialize", initialize, -1);
50
+ rb_define_method(cNationalGridEastingNorthing, "easting", easting, 0);
51
+ rb_define_method(cNationalGridEastingNorthing, "northing", northing, 0);
52
+ rb_define_method(cNationalGridEastingNorthing, "elevation", elevation, 0);
53
+ rb_define_method(cNationalGridEastingNorthing, "to_latitude_longitude", to_latitude_longitude, 0);
54
+ }
55
+
56
+ VALUE new_national_grid_easting_northing(EastingNorthing data) {
57
+ VALUE instance = allocate(cNationalGridEastingNorthing);
58
+ *easting_northing(instance) = data;
59
+ return instance;
60
+ }
@@ -0,0 +1,6 @@
1
+ #pragma once
2
+ #include <national_grid.h>
3
+
4
+ extern VALUE cNationalGridEastingNorthing;
5
+ void Init_national_grid_easting_northing();
6
+ VALUE new_national_grid_easting_northing(EastingNorthing data);
@@ -0,0 +1,60 @@
1
+ #include <national_grid_latitude_longitude.h>
2
+
3
+ VALUE cNationalGridLatitudeLongitude;
4
+
5
+ static LatLonDecimal* latitude_longitude(VALUE self) {
6
+ LatLonDecimal* data;
7
+ Data_Get_Struct(self, LatLonDecimal, data);
8
+ return data;
9
+ }
10
+
11
+ static VALUE allocate(VALUE class) {
12
+ LatLonDecimal* data = ALLOC(LatLonDecimal);
13
+ return Data_Wrap_Struct(class, NULL, xfree, data);
14
+ }
15
+
16
+ static VALUE initialize(int argc, VALUE* argv, VALUE self) {
17
+ VALUE latitude, longitude, elevation;
18
+ rb_scan_args(argc, argv, "03", &latitude, &longitude, &elevation);
19
+
20
+ LatLonDecimal* data = latitude_longitude(self);
21
+ data->lat = default_to_zero(latitude);
22
+ data->lon = default_to_zero(longitude);
23
+ data->elevation = default_to_zero(elevation);
24
+
25
+ return self;
26
+ }
27
+
28
+ static VALUE latitude(VALUE self) {
29
+ return DBL2NUM(latitude_longitude(self)->lat);
30
+ }
31
+
32
+ static VALUE longitude(VALUE self) {
33
+ return DBL2NUM(latitude_longitude(self)->lon);
34
+ }
35
+
36
+ static VALUE elevation(VALUE self) {
37
+ return DBL2NUM(latitude_longitude(self)->elevation);
38
+ }
39
+
40
+ static VALUE to_easting_northing(VALUE self) {
41
+ EastingNorthing data = OSGB36EastingNorthingFromETRS89EastingNorthing(ETRS89EastingNorthingFromETRS89LatLon(*latitude_longitude(self)));
42
+ if (data.geoid == 0) return Qnil;
43
+ return new_national_grid_easting_northing(data);
44
+ }
45
+
46
+ void Init_national_grid_latitude_longitude() {
47
+ cNationalGridLatitudeLongitude = rb_define_class_under(mNationalGrid, "LatitudeLongitude", rb_cObject);
48
+ rb_define_alloc_func(cNationalGridLatitudeLongitude, allocate);
49
+ rb_define_method(cNationalGridLatitudeLongitude, "initialize", initialize, -1);
50
+ rb_define_method(cNationalGridLatitudeLongitude, "latitude", latitude, 0);
51
+ rb_define_method(cNationalGridLatitudeLongitude, "longitude", longitude, 0);
52
+ rb_define_method(cNationalGridLatitudeLongitude, "elevation", elevation, 0);
53
+ rb_define_method(cNationalGridLatitudeLongitude, "to_easting_northing", to_easting_northing, 0);
54
+ }
55
+
56
+ VALUE new_national_grid_latitude_longitude(LatLonDecimal data) {
57
+ VALUE instance = allocate(cNationalGridLatitudeLongitude);
58
+ *latitude_longitude(instance) = data;
59
+ return instance;
60
+ }
@@ -0,0 +1,6 @@
1
+ #pragma once
2
+ #include <national_grid.h>
3
+
4
+ extern VALUE cNationalGridLatitudeLongitude;
5
+ void Init_national_grid_latitude_longitude();
6
+ VALUE new_national_grid_latitude_longitude(LatLonDecimal data);
data/ext/ostn02c.rb ADDED
@@ -0,0 +1,52 @@
1
+ require "rbconfig"
2
+ require "fileutils"
3
+
4
+ module OSTN02C
5
+ module_function
6
+
7
+ def make
8
+ compile and package
9
+ end
10
+
11
+ def compile
12
+ puts "Compiling libostn02"
13
+ FileUtils.mkdir_p object_path
14
+ Dir.chdir object_path do
15
+ system RbConfig.expand("$(CC) -I#{include_path} $(CPPFLAGS) $(CFLAGS) -c #{sources.join(" ")}")
16
+ end
17
+ end
18
+
19
+ def package
20
+ puts "Packaging libostn02"
21
+ FileUtils.mkdir_p lib_path
22
+ system RbConfig.expand("$(AR) -crsv #{library} #{objects}")
23
+ end
24
+
25
+ def sources
26
+ Dir.glob(File.join(include_path, "*.c"))
27
+ end
28
+
29
+ def objects
30
+ File.join(object_path, "*.o")
31
+ end
32
+
33
+ def library
34
+ File.join(lib_path, "libostn02.a")
35
+ end
36
+
37
+ def include_path
38
+ File.expand_path("ostn02c/OSTN02", __dir__)
39
+ end
40
+
41
+ def lib_path
42
+ File.join(output_path, "lib")
43
+ end
44
+
45
+ def object_path
46
+ File.join(output_path, "obj")
47
+ end
48
+
49
+ def output_path
50
+ File.expand_path("../tmp/ostn02c", __dir__)
51
+ end
52
+ end
@@ -0,0 +1,15 @@
1
+ module NationalGrid
2
+ class EastingNorthing
3
+ include Inspect
4
+
5
+ def to_a
6
+ [easting, northing, elevation]
7
+ end
8
+
9
+ private
10
+
11
+ def inspect_attributes
12
+ "easting=%.3f northing=%.3f elevation=%.3f" % to_a
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module NationalGrid
2
+ module Inspect
3
+ def inspect
4
+ "#<#{self.class.name}:0x%x #{inspect_attributes}>" % object_id
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module NationalGrid
2
+ class LatitudeLongitude
3
+ include Inspect
4
+
5
+ def to_a
6
+ [latitude, longitude, elevation]
7
+ end
8
+
9
+ private
10
+
11
+ def inspect_attributes
12
+ "latitude=%.6f longitude=%.6f elevation=%.3f" % to_a
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module NationalGrid
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,5 @@
1
+ require "national_grid/version"
2
+ require "national_grid/national_grid"
3
+ require "national_grid/inspect"
4
+ require "national_grid/easting_northing"
5
+ require "national_grid/latitude_longitude"
@@ -0,0 +1,22 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "national_grid/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "national_grid"
7
+ spec.version = NationalGrid::VERSION
8
+ spec.authors = ["Andrew Haines"]
9
+ spec.email = ["andrew@haines.org.nz"]
10
+ spec.summary = "Converts between Ordnance Survey National Grid easting-northing coordinates and GPS latitude-longitude coordinates"
11
+ spec.homepage = "https://github.com/haines/national_grid"
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.test_files = spec.files.grep(%r{^test/})
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.add_development_dependency "bundler", "~> 1.5"
19
+ spec.add_development_dependency "rake"
20
+ spec.add_development_dependency "rake-compiler"
21
+ spec.add_development_dependency "minitest", "~> 5.3"
22
+ end
@@ -0,0 +1,54 @@
1
+ require "minitest/autorun"
2
+ require "national_grid"
3
+
4
+ module NationalGrid
5
+ class EastingNorthingTest < Minitest::Test
6
+ def test_initialize_with_defaults
7
+ point = EastingNorthing.new
8
+
9
+ assert_equal 0, point.easting
10
+ assert_equal 0, point.northing
11
+ assert_equal 0, point.elevation
12
+ end
13
+
14
+ def test_initialize_with_easting_and_northing
15
+ point = EastingNorthing.new(12345.6, 78901.2)
16
+
17
+ assert_equal 12345.6, point.easting
18
+ assert_equal 78901.2, point.northing
19
+ assert_equal 0, point.elevation
20
+ end
21
+
22
+ def test_initialize_with_easting_northing_and_elevation
23
+ point = EastingNorthing.new(12345.6, 78901.2, 345.6)
24
+
25
+ assert_equal 12345.6, point.easting
26
+ assert_equal 78901.2, point.northing
27
+ assert_equal 345.6, point.elevation
28
+ end
29
+
30
+ def test_inspect
31
+ assert_match /^#<NationalGrid::EastingNorthing:0x\h+ easting=12345.678 northing=90123.456 elevation=789.012>$/, EastingNorthing.new(12345.6779, 90123.4559, 789.0119).inspect
32
+ end
33
+
34
+ def test_to_a
35
+ assert_equal [12345.6, 78901.2, 345.6], EastingNorthing.new(12345.6, 78901.2, 345.6).to_a
36
+ end
37
+
38
+ def test_to_latitude_longitude
39
+ assert_close LatitudeLongitude.new(51.427547, -2.544076, 104.018), EastingNorthing.new(362269.979, 169978.688, 54.467).to_latitude_longitude
40
+ end
41
+
42
+ def test_to_latitude_longitude_when_outside_the_grid
43
+ assert_nil EastingNorthing.new(999999.999, 999999.999, 99.999).to_latitude_longitude
44
+ end
45
+
46
+ private
47
+
48
+ def assert_close(expected, actual)
49
+ assert_in_delta expected.latitude, actual.latitude, 0.5e-6
50
+ assert_in_delta expected.longitude, actual.longitude, 0.5e-6
51
+ assert_in_delta expected.elevation, actual.elevation, 0.5e-3
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,54 @@
1
+ require "minitest/autorun"
2
+ require "national_grid"
3
+
4
+ module NationalGrid
5
+ class LatitudeLongitudeTest < Minitest::Test
6
+ def test_initialize_with_defaults
7
+ point = LatitudeLongitude.new
8
+
9
+ assert_equal 0, point.latitude
10
+ assert_equal 0, point.longitude
11
+ assert_equal 0, point.elevation
12
+ end
13
+
14
+ def test_initialize_with_latitude_and_longitude
15
+ point = LatitudeLongitude.new(12.3, 45.6)
16
+
17
+ assert_equal 12.3, point.latitude
18
+ assert_equal 45.6, point.longitude
19
+ assert_equal 0, point.elevation
20
+ end
21
+
22
+ def test_initialize_with_latitude_longitude_and_elevation
23
+ point = LatitudeLongitude.new(12.3, 45.6, 789.0)
24
+
25
+ assert_equal 12.3, point.latitude
26
+ assert_equal 45.6, point.longitude
27
+ assert_equal 789.0, point.elevation
28
+ end
29
+
30
+ def test_inspect
31
+ assert_match /^#<NationalGrid::LatitudeLongitude:0x\h+ latitude=12.345678 longitude=90.123456 elevation=789.012>$/, LatitudeLongitude.new(12.3456779, 90.1234559, 789.0119).inspect
32
+ end
33
+
34
+ def test_to_a
35
+ assert_equal [12.3, 45.6, 789.0], LatitudeLongitude.new(12.3, 45.6, 789.0).to_a
36
+ end
37
+
38
+ def test_to_easting_northing
39
+ assert_close EastingNorthing.new(331534.545, 431920.763, 12.636), LatitudeLongitude.new(53.779110, -3.040455, 64.940).to_easting_northing
40
+ end
41
+
42
+ def test_to_easting_northing_when_outside_the_grid
43
+ assert_nil LatitudeLongitude.new(-45.878761, 170.502798).to_easting_northing
44
+ end
45
+
46
+ private
47
+
48
+ def assert_close(expected, actual)
49
+ assert_in_delta expected.easting, actual.easting, 0.5e-3
50
+ assert_in_delta expected.northing, actual.northing, 0.5e-3
51
+ assert_in_delta expected.elevation, actual.elevation, 0.5e-3
52
+ end
53
+ end
54
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: national_grid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Haines
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.3'
69
+ description:
70
+ email:
71
+ - andrew@haines.org.nz
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".gitmodules"
78
+ - Gemfile
79
+ - LICENSE
80
+ - README.md
81
+ - Rakefile
82
+ - ext/national_grid/common.c
83
+ - ext/national_grid/common.h
84
+ - ext/national_grid/extconf.rb
85
+ - ext/national_grid/national_grid.c
86
+ - ext/national_grid/national_grid.h
87
+ - ext/national_grid/national_grid_easting_northing.c
88
+ - ext/national_grid/national_grid_easting_northing.h
89
+ - ext/national_grid/national_grid_latitude_longitude.c
90
+ - ext/national_grid/national_grid_latitude_longitude.h
91
+ - ext/ostn02c.rb
92
+ - lib/national_grid.rb
93
+ - lib/national_grid/easting_northing.rb
94
+ - lib/national_grid/inspect.rb
95
+ - lib/national_grid/latitude_longitude.rb
96
+ - lib/national_grid/version.rb
97
+ - national_grid.gemspec
98
+ - test/national_grid/easting_northing_test.rb
99
+ - test/national_grid/latitude_longitude_test.rb
100
+ homepage: https://github.com/haines/national_grid
101
+ licenses:
102
+ - MIT
103
+ metadata: {}
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 2.2.2
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: Converts between Ordnance Survey National Grid easting-northing coordinates
124
+ and GPS latitude-longitude coordinates
125
+ test_files:
126
+ - test/national_grid/easting_northing_test.rb
127
+ - test/national_grid/latitude_longitude_test.rb