geodesic_wgs84 1.32.1 → 1.32.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/ext/geodesic_wgs84/geodesic_wgs84.c +36 -0
- data/lib/geodesic_wgs84/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0b5d1d30c466c4e1b8d77c9645649268131e195
|
4
|
+
data.tar.gz: 1775ce204604bcdab8baa51ae991905313cdad12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 386432a02f9aa2b593d8ac22d5ed97d0ef07be8fc2d6697024a01c4d3f5d8e6bff557ae5efdc97fa903e4209b0a6fae044d49a13a0c5ccbe7efa2c82d172e02b
|
7
|
+
data.tar.gz: 144cd6983cc835a2367362774579d2a18235d94cd3727db49d6e3e3e98d958d46049527ea7b2e7b30e8976e5d88c3bdd3459c779c78b643554160933c86028db
|
data/README.md
CHANGED
@@ -180,6 +180,41 @@ wgs84_average(VALUE klass, VALUE array, VALUE target)
|
|
180
180
|
}
|
181
181
|
|
182
182
|
|
183
|
+
static VALUE
|
184
|
+
wgs84_center(VALUE klass, VALUE array, VALUE center)
|
185
|
+
{
|
186
|
+
VALUE tmp, arr_val;
|
187
|
+
double min_lat, min_lon, max_lat, max_lon, tmp_lat, tmp_lon;
|
188
|
+
int cnt;
|
189
|
+
|
190
|
+
tmp = rb_check_array_type(center);
|
191
|
+
if (NIL_P(tmp))
|
192
|
+
rb_raise(rb_eArgError, "invalid (default) argument");
|
193
|
+
min_lat = max_lat = wgs84_get_value(rb_ary_entry(tmp, 0));
|
194
|
+
min_lon = max_lon = wgs84_get_value(rb_ary_entry(tmp, 1));
|
195
|
+
|
196
|
+
arr_val = rb_check_convert_type(array, T_ARRAY, "Array", "to_a");
|
197
|
+
for (cnt = 0; cnt < RARRAY_LEN(arr_val); cnt++) {
|
198
|
+
tmp = rb_check_array_type(rb_ary_entry(arr_val, cnt));
|
199
|
+
if (NIL_P(tmp))
|
200
|
+
rb_raise(rb_eArgError, "invalid (array) argument");
|
201
|
+
tmp_lat = wgs84_get_value(rb_ary_entry(tmp, 0));
|
202
|
+
tmp_lon = wgs84_get_value(rb_ary_entry(tmp, 1));
|
203
|
+
if (tmp_lat < min_lat)
|
204
|
+
min_lat = tmp_lat;
|
205
|
+
if (tmp_lon < min_lon)
|
206
|
+
min_lon = tmp_lon;
|
207
|
+
if (tmp_lat > max_lat)
|
208
|
+
max_lat = tmp_lat;
|
209
|
+
if (tmp_lon > max_lon)
|
210
|
+
max_lon = tmp_lon;
|
211
|
+
}
|
212
|
+
min_lat = (min_lat + max_lat) / 2.0;
|
213
|
+
min_lon = (min_lon + max_lon) / 2.0;
|
214
|
+
return rb_ary_new3(2L, rb_float_new(min_lat), rb_float_new(min_lon));
|
215
|
+
}
|
216
|
+
|
217
|
+
|
183
218
|
void
|
184
219
|
Init_geodesic_wgs84(void)
|
185
220
|
{
|
@@ -188,5 +223,6 @@ Init_geodesic_wgs84(void)
|
|
188
223
|
rb_define_method(cWGS84, "lat_lon", wgs84_lat_lon, -1);
|
189
224
|
rb_define_method(cWGS84, "distance", wgs84_distance, -1);
|
190
225
|
rb_define_method(cWGS84, "average", wgs84_average, 2);
|
226
|
+
rb_define_method(cWGS84, "center", wgs84_center, 2);
|
191
227
|
}
|
192
228
|
|
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.
|
4
|
+
version: 1.32.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Volker Wiegand
|
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project:
|
83
|
-
rubygems_version: 2.
|
83
|
+
rubygems_version: 2.4.2
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: Calculate distances on Earth using WGS84
|