geodesic_wgs84 1.32.10 → 1.32.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/geodesic_wgs84/geodesic_wgs84.c +9 -13
- data/lib/geodesic_wgs84/version.rb +1 -1
- data/spec/geodesic_wgs84_spec.rb +17 -21
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dfc25463144c1a96d0c3a050c5e512d8d743302
|
4
|
+
data.tar.gz: 2fd502d57cda6615775e9a847b4aad6e57594f13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15dcdedbf79c9b7d81b67c0f50d68809bbd45b7fa5cb9017c2752729256be898a9a6fe1384500fc3a2e7e5673b4e22324fe9fe57fc796c495fcd8538e58e6472
|
7
|
+
data.tar.gz: bd48201cfdbf377474f587b81d1399b54e93d2696b8b33976644973ea4d6870fc79bb4a3538bc8173d498938a0e3e1d48a05b2f699e90e37c6c18fe3ff2ce19e
|
@@ -33,17 +33,21 @@ wgs84_get_value(VALUE arg)
|
|
33
33
|
int dd, mm, ss, ff;
|
34
34
|
double dbl;
|
35
35
|
|
36
|
+
if (TYPE(arg) == T_FLOAT)
|
37
|
+
return NUM2DBL(arg);
|
38
|
+
|
39
|
+
if (TYPE(arg) == T_FIXNUM)
|
40
|
+
return (double) NUM2INT(arg);
|
41
|
+
|
36
42
|
if (TYPE(arg) == T_STRING && RSTRING_LEN(arg) < 60) {
|
37
43
|
memset(buf, 0, sizeof(buf));
|
38
44
|
memcpy(buf, RSTRING_PTR(arg), RSTRING_LEN(arg));
|
39
45
|
|
40
|
-
if (sscanf(buf, "%d
|
46
|
+
if (sscanf(buf, "%d %d %d.%d", &dd, &mm, &ss, &ff) == 4) {
|
41
47
|
ff += (dd * 36000) + (mm * 600) + (ss * 10);
|
42
48
|
dbl = (double) ff;
|
43
49
|
dbl /= 36000.0;
|
44
50
|
sprintf(buf, "%.6lf", dbl);
|
45
|
-
} else if (sscanf(buf, "%d,%d", &dd, &ff) == 2) {
|
46
|
-
*strchr(buf, ',') = '.';
|
47
51
|
}
|
48
52
|
|
49
53
|
if (sscanf(buf, "%d.%d", &dd, &ff) == 2) {
|
@@ -52,12 +56,6 @@ wgs84_get_value(VALUE arg)
|
|
52
56
|
}
|
53
57
|
}
|
54
58
|
|
55
|
-
if (TYPE(arg) == T_FLOAT)
|
56
|
-
return NUM2DBL(arg);
|
57
|
-
|
58
|
-
if (TYPE(arg) == T_FIXNUM)
|
59
|
-
return (double) NUM2INT(arg);
|
60
|
-
|
61
59
|
rb_raise(rb_eArgError, "invalid (lat/lon) argument");
|
62
60
|
return 0.0;
|
63
61
|
}
|
@@ -68,13 +66,11 @@ wgs84_make_dms(double val, char *buf)
|
|
68
66
|
{
|
69
67
|
char *ptr;
|
70
68
|
|
71
|
-
sprintf(buf, "%d
|
69
|
+
sprintf(buf, "%d ", (int) trunc(val));
|
72
70
|
ptr = buf + strlen(buf);
|
73
|
-
sprintf(ptr, "%d
|
71
|
+
sprintf(ptr, "%d ", (int) fmod(trunc(fabs(val) * 60.0), 60.0));
|
74
72
|
ptr = buf + strlen(buf);
|
75
73
|
sprintf(ptr, "%.1lf", fmod(fabs(val) * 3600.0, 60.0));
|
76
|
-
if ((ptr = strchr(ptr, '.')) != NULL)
|
77
|
-
*ptr = ',';
|
78
74
|
}
|
79
75
|
|
80
76
|
|
data/spec/geodesic_wgs84_spec.rb
CHANGED
@@ -11,15 +11,15 @@ class TestGeodesicWgs84 < MiniTest::Test
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_dms_as_deg
|
14
|
-
assert_equal 50.833833, @wgs84.as_deg("50
|
14
|
+
assert_equal 50.833833, @wgs84.as_deg("50 50 01.8")
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_deg_as_dms
|
18
|
-
assert_equal "50
|
18
|
+
assert_equal "50 50 1.8", @wgs84.as_dms(50.833833)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_dms_as_dms
|
22
|
-
assert_equal "50
|
22
|
+
assert_equal "50 50 1.8", @wgs84.as_dms("50 50 01.8")
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_lat_lon_two_doubles
|
@@ -34,64 +34,60 @@ class TestGeodesicWgs84 < MiniTest::Test
|
|
34
34
|
assert_equal [3.5, 4.123], @wgs84.lat_lon(["3.5", "4.123"])
|
35
35
|
end
|
36
36
|
|
37
|
-
def test_lat_lon_doubles_with_comma
|
38
|
-
assert_equal [1.0, 2.0], @wgs84.lat_lon("1,0", "2,0")
|
39
|
-
end
|
40
|
-
|
41
37
|
def test_lat_lon_dms_string
|
42
|
-
assert_equal ["50
|
38
|
+
assert_equal ["50 50 1.8", "8 46 9.6"], @wgs84.lat_lon_dms("50 50 01.8", "08 46 09.6")
|
43
39
|
end
|
44
40
|
|
45
41
|
def test_lat_lon_dms_alsfeld
|
46
|
-
assert_equal ["50
|
42
|
+
assert_equal ["50 45 6.4", "9 15 6.7"], @wgs84.lat_lon_dms(50.751778, 9.251861)
|
47
43
|
end
|
48
44
|
|
49
45
|
def test_lat_lon_dms_vilbel
|
50
|
-
assert_equal ["50
|
46
|
+
assert_equal ["50 11 31.3", "8 44 5.0"], @wgs84.lat_lon_dms(50.192028, 8.734722)
|
51
47
|
end
|
52
48
|
|
53
49
|
def test_lat_lon_dms_butzbach
|
54
|
-
assert_equal ["50
|
50
|
+
assert_equal ["50 25 38.7", "8 40 48.2"], @wgs84.lat_lon_dms(50.427417, 8.680056)
|
55
51
|
end
|
56
52
|
|
57
53
|
def test_lat_lon_dms_gilserberg
|
58
|
-
assert_equal ["50
|
54
|
+
assert_equal ["50 56 46.0", "9 4 15.5"], @wgs84.lat_lon_dms(50.946111, 9.070972)
|
59
55
|
end
|
60
56
|
|
61
57
|
def test_lat_lon_dms_gruenberg
|
62
|
-
assert_equal ["50
|
58
|
+
assert_equal ["50 36 34.9", "8 54 15.0"], @wgs84.lat_lon_dms(50.609694, 8.904167)
|
63
59
|
end
|
64
60
|
|
65
61
|
def test_lat_lon_dms_haiger
|
66
|
-
assert_equal ["50
|
62
|
+
assert_equal ["50 45 42.5", "8 9 24.6"], @wgs84.lat_lon_dms(50.761806, 8.156833)
|
67
63
|
end
|
68
64
|
|
69
65
|
def test_lat_lon_dms_herborn
|
70
|
-
assert_equal ["50
|
66
|
+
assert_equal ["50 40 13.2", "8 15 30.8"], @wgs84.lat_lon_dms(50.670333, 8.258556)
|
71
67
|
end
|
72
68
|
|
73
69
|
def test_lat_lon_dms_homberg
|
74
|
-
assert_equal ["50
|
70
|
+
assert_equal ["50 44 37.1", "9 1 9.2"], @wgs84.lat_lon_dms(50.743639, 9.019222)
|
75
71
|
end
|
76
72
|
|
77
73
|
def test_lat_lon_dms_limburg
|
78
|
-
assert_equal ["50
|
74
|
+
assert_equal ["50 24 20.8", "8 4 56.0"], @wgs84.lat_lon_dms(50.405778, 8.082222)
|
79
75
|
end
|
80
76
|
|
81
77
|
def test_lat_lon_dms_marburg
|
82
|
-
assert_equal ["50
|
78
|
+
assert_equal ["50 50 1.8", "8 46 9.6"], @wgs84.lat_lon_dms(50.833833, 8.769333)
|
83
79
|
end
|
84
80
|
|
85
81
|
def test_lat_lon_dms_pohlheim
|
86
|
-
assert_equal ["50
|
82
|
+
assert_equal ["50 32 12.6", "8 42 45.0"], @wgs84.lat_lon_dms(50.536833, 8.7125)
|
87
83
|
end
|
88
84
|
|
89
85
|
def test_lat_lon_dms_siegen
|
90
|
-
assert_equal ["50
|
86
|
+
assert_equal ["50 51 10.9", "8 0 2.4"], @wgs84.lat_lon_dms(50.853028, 8.000667)
|
91
87
|
end
|
92
88
|
|
93
89
|
def test_lat_lon_dms_wetzlar
|
94
|
-
assert_equal ["50
|
90
|
+
assert_equal ["50 33 13.6", "8 29 32.2"], @wgs84.lat_lon_dms(50.553778, 8.492278)
|
95
91
|
end
|
96
92
|
end
|
97
93
|
|