geodesic_wgs84 1.32.7 → 1.32.8

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: ae5e103f4963574c9c9d14020f30da27f8223b11
4
- data.tar.gz: 8de4ef5f7f44b1ecec778aec3bbaf72470c1a3dd
3
+ metadata.gz: 8a421f900057b282fa125e757054177066471301
4
+ data.tar.gz: a6561306299110ffb927339ddc7ea3a436f80c35
5
5
  SHA512:
6
- metadata.gz: 8333f8fad8608d24a7dfe53c96d5d95755ca56b5478c2602dd28f25f43000f0b02dc6f9a09cd2ac2a4c6402209cfd47fd9e32694c2daf32fbd406ce0919f52cf
7
- data.tar.gz: 5f0c0a3bf995c8b2112291813abd59e5304bfc680583631b568651434dc6f8047bcb22e07be5dd0e6e750234c27d2fe35e8c9d617fb749c04a0e0aa24b819669
6
+ metadata.gz: b13512d9ae017bec057487c5af896c57bacf40b660fd44705cc311f9c55ad662596f6ad027f3bb4a918196e8a87047b0fa216d60703a387e6e47ea937256a9fb
7
+ data.tar.gz: 30b88b55a54ae2bf0522194968f57a786b6652a00d8789f9f21d81d32ebc6c64a3a89f64084c993626cbb426be727916a1d39be42e0837ab601be1c6b3813a90
data/Makefile CHANGED
@@ -3,11 +3,24 @@
3
3
  # Makefile for building the Gem
4
4
  #
5
5
 
6
- all:
6
+ all: build
7
+ git status
8
+
9
+ rel: build
10
+ vim lib/geodesic_wgs84/version.rb
11
+ git commit -a
12
+ sudo gem uninstall geodesic_wgs84 --all
13
+ rake release
14
+
15
+ install: build
16
+ git commit -a
17
+ sudo gem uninstall geodesic_wgs84 --all
18
+ sudo rake install
19
+ sudo rm -rf pkg
20
+
21
+ build:
7
22
  rake compile
8
23
  git add ext
9
24
  git add lib
10
25
  git add spec
11
- vim lib/geodesic_wgs84/version.rb
12
- git commit -a
13
- rake release
26
+
@@ -44,11 +44,10 @@ wgs84_get_value(VALUE arg)
44
44
  memcpy(buf, RSTRING_PTR(arg), RSTRING_LEN(arg));
45
45
 
46
46
  if (sscanf(buf, "%d.%d.%d,%d", &dd, &mm, &ss, &ff) == 4) {
47
- dbl = (double) dd;
48
- dbl += (double) mm / 60.0;
49
- dbl += (double) ss / 3600.0;
50
- dbl += (double) ff / 36000.0;
51
- sprintf(buf, "%.6f", dbl);
47
+ ff += (dd * 36000) + (mm * 600) + (ss * 10);
48
+ dbl = (double) ff;
49
+ dbl /= 36000.0;
50
+ sprintf(buf, "%.6lf", dbl);
52
51
  } else if (sscanf(buf, "%d,%d", &dd, &ff) == 2) {
53
52
  *strchr(buf, ',') = '.';
54
53
  }
@@ -73,55 +72,33 @@ wgs84_lat_lon(int argc, VALUE *argv, VALUE klass)
73
72
  if (argc == 2) {
74
73
  lat = wgs84_get_value(argv[0]);
75
74
  lon = wgs84_get_value(argv[1]);
76
- return rb_ary_new3(2L, rb_float_new(lat), rb_float_new(lon));
77
- }
78
-
79
- if (argc == 1 && TYPE(*argv) == T_ARRAY && RARRAY_LEN(*argv) == 2) {
75
+ } else if (argc == 1 && TYPE(*argv) == T_ARRAY && RARRAY_LEN(*argv) == 2) {
80
76
  lat = wgs84_get_value(rb_ary_entry(*argv, 0));
81
77
  lon = wgs84_get_value(rb_ary_entry(*argv, 1));
82
- return rb_ary_new3(2L, rb_float_new(lat), rb_float_new(lon));
83
- }
84
-
85
- if (argc == 1 && !NIL_P(tmp = rb_check_array_type(*argv))) {
78
+ } else if (argc == 1 && !NIL_P(tmp = rb_check_array_type(*argv))) {
86
79
  lat = wgs84_get_value(rb_ary_entry(tmp, 0));
87
80
  lon = wgs84_get_value(rb_ary_entry(tmp, 1));
88
- return rb_ary_new3(2L, rb_float_new(lat), rb_float_new(lon));
81
+ } else {
82
+ rb_raise(rb_eArgError, "wrong number of arguments");
83
+ return Qnil;
89
84
  }
90
85
 
91
- rb_raise(rb_eArgError, "wrong number of arguments");
92
- return Qnil;
86
+ return rb_ary_new3(2L, rb_float_new(lat), rb_float_new(lon));
93
87
  }
94
88
 
95
89
 
96
90
  static void
97
91
  wgs84_make_dms(double val, char *buf)
98
92
  {
99
- int tmp;
100
93
  char *ptr;
101
94
 
102
- /* get degrees */
103
- tmp = (int) val;
104
- sprintf(buf, "%02d", tmp);
105
- val -= (double) tmp;
95
+ sprintf(buf, "%d.", (int) trunc(val));
106
96
  ptr = buf + strlen(buf);
107
-
108
- /* get minutes */
109
- val *= 60.0;
110
- tmp = (int) val;
111
- sprintf(ptr, ".%02d", tmp);
112
- val -= (double) tmp;
113
- ptr = buf + strlen(buf);
114
-
115
- /* get seconds */
116
- val *= 60.0;
117
- tmp = (int) val;
118
- sprintf(ptr, ".%02d", tmp);
119
- val -= (double) tmp;
97
+ sprintf(ptr, "%d.", (int) fmod(trunc(fabs(val) * 60.0), 60.0));
120
98
  ptr = buf + strlen(buf);
121
-
122
- /* get tenth of seconds */
123
- val *= 10.0;
124
- sprintf(ptr, ",%.0f", val);
99
+ sprintf(ptr, "%.1lf", fmod(fabs(val) * 3600.0, 60.0));
100
+ if ((ptr = strchr(ptr, '.')) != NULL)
101
+ *ptr = ',';
125
102
  }
126
103
 
127
104
 
@@ -129,36 +106,26 @@ static VALUE
129
106
  wgs84_lat_lon_dms(int argc, VALUE *argv, VALUE klass)
130
107
  {
131
108
  double lat, lon;
132
- int valid = 0;
133
109
  char lat_buf[64], lon_buf[64];
134
110
  VALUE tmp;
135
111
 
136
112
  if (argc == 2) {
137
113
  lat = wgs84_get_value(argv[0]);
138
114
  lon = wgs84_get_value(argv[1]);
139
- valid = 1;
140
- }
141
-
142
- if (argc == 1 && TYPE(*argv) == T_ARRAY && RARRAY_LEN(*argv) == 2) {
115
+ } else if (argc == 1 && TYPE(*argv) == T_ARRAY && RARRAY_LEN(*argv) == 2) {
143
116
  lat = wgs84_get_value(rb_ary_entry(*argv, 0));
144
117
  lon = wgs84_get_value(rb_ary_entry(*argv, 1));
145
- valid = 1;
146
- }
147
-
148
- if (argc == 1 && !NIL_P(tmp = rb_check_array_type(*argv))) {
118
+ } else if (argc == 1 && !NIL_P(tmp = rb_check_array_type(*argv))) {
149
119
  lat = wgs84_get_value(rb_ary_entry(tmp, 0));
150
120
  lon = wgs84_get_value(rb_ary_entry(tmp, 1));
151
- valid = 1;
152
- }
153
-
154
- if (valid == 1) {
155
- wgs84_make_dms(lat, lat_buf);
156
- wgs84_make_dms(lon, lon_buf);
157
- return rb_ary_new3(2L, rb_str_new2(lat_buf), rb_str_new2(lon_buf));
121
+ } else {
122
+ rb_raise(rb_eArgError, "wrong number of arguments");
123
+ return Qnil;
158
124
  }
159
125
 
160
- rb_raise(rb_eArgError, "wrong number of arguments");
161
- return Qnil;
126
+ wgs84_make_dms(lat, lat_buf);
127
+ wgs84_make_dms(lon, lon_buf);
128
+ return rb_ary_new3(2L, rb_str_new2(lat_buf), rb_str_new2(lon_buf));
162
129
  }
163
130
 
164
131
 
@@ -1,3 +1,3 @@
1
1
  module GeodesicWgs84
2
- VERSION = "1.32.7"
2
+ VERSION = "1.32.8"
3
3
  end
@@ -7,7 +7,7 @@ class TestGeodesicWgs84 < MiniTest::Test
7
7
  end
8
8
 
9
9
  def test_lat_lon_two_doubles
10
- assert_equal [1.0, 2.0], @wgs84.lat_lon(1.0, 2.0)
10
+ assert_equal [50.833833, 8.769333], @wgs84.lat_lon(50.833833, 8.769333)
11
11
  end
12
12
 
13
13
  def test_lat_lon_array_of_doubles
@@ -21,5 +21,61 @@ class TestGeodesicWgs84 < MiniTest::Test
21
21
  def test_lat_lon_doubles_with_comma
22
22
  assert_equal [1.0, 2.0], @wgs84.lat_lon("1,0", "2,0")
23
23
  end
24
+
25
+ def test_lat_lon_dms_string
26
+ assert_equal ["50.50.1,8", "8.46.9,6"], @wgs84.lat_lon_dms("50.50.01,8", "08.46.09,6")
27
+ end
28
+
29
+ def test_lat_lon_dms_alsfeld
30
+ assert_equal ["50.45.6,4", "9.15.6,7"], @wgs84.lat_lon_dms(50.751778, 9.251861)
31
+ end
32
+
33
+ def test_lat_lon_dms_vilbel
34
+ assert_equal ["50.11.31,3", "8.44.5,0"], @wgs84.lat_lon_dms(50.192028, 8.734722)
35
+ end
36
+
37
+ def test_lat_lon_dms_butzbach
38
+ assert_equal ["50.25.38,7", "8.40.48,2"], @wgs84.lat_lon_dms(50.427417, 8.680056)
39
+ end
40
+
41
+ def test_lat_lon_dms_gilserberg
42
+ assert_equal ["50.56.46,0", "9.4.15,5"], @wgs84.lat_lon_dms(50.946111, 9.070972)
43
+ end
44
+
45
+ def test_lat_lon_dms_gruenberg
46
+ assert_equal ["50.36.34,9", "8.54.15,0"], @wgs84.lat_lon_dms(50.609694, 8.904167)
47
+ end
48
+
49
+ def test_lat_lon_dms_haiger
50
+ assert_equal ["50.45.42,5", "8.9.24,6"], @wgs84.lat_lon_dms(50.761806, 8.156833)
51
+ end
52
+
53
+ def test_lat_lon_dms_herborn
54
+ assert_equal ["50.40.13,2", "8.15.30,8"], @wgs84.lat_lon_dms(50.670333, 8.258556)
55
+ end
56
+
57
+ def test_lat_lon_dms_homberg
58
+ assert_equal ["50.44.37,1", "9.1.9,2"], @wgs84.lat_lon_dms(50.743639, 9.019222)
59
+ end
60
+
61
+ def test_lat_lon_dms_limburg
62
+ assert_equal ["50.24.20,8", "8.4.56,0"], @wgs84.lat_lon_dms(50.405778, 8.082222)
63
+ end
64
+
65
+ def test_lat_lon_dms_marburg
66
+ assert_equal ["50.50.1,8", "8.46.9,6"], @wgs84.lat_lon_dms(50.833833, 8.769333)
67
+ end
68
+
69
+ def test_lat_lon_dms_pohlheim
70
+ assert_equal ["50.32.12,6", "8.42.45,0"], @wgs84.lat_lon_dms(50.536833, 8.7125)
71
+ end
72
+
73
+ def test_lat_lon_dms_siegen
74
+ assert_equal ["50.51.10,9", "8.0.2,4"], @wgs84.lat_lon_dms(50.853028, 8.000667)
75
+ end
76
+
77
+ def test_lat_lon_dms_wetzlar
78
+ assert_equal ["50.33.13,6", "8.29.32,2"], @wgs84.lat_lon_dms(50.553778, 8.492278)
79
+ end
24
80
  end
25
81
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geodesic_wgs84
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.32.7
4
+ version: 1.32.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volker Wiegand