geodesic_wgs84 1.32.1 → 1.32.2
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 +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
|