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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7a7022172b287d9a9a44085d1109ac86f468ee6
4
- data.tar.gz: 6b73f57a5fb81bed47234fbf63d4eb49daee44a0
3
+ metadata.gz: c0b5d1d30c466c4e1b8d77c9645649268131e195
4
+ data.tar.gz: 1775ce204604bcdab8baa51ae991905313cdad12
5
5
  SHA512:
6
- metadata.gz: f3a4fb0fdcac3a795c62501062626bacd1c16c22fcdaeda8fb1bf9937ceba475ed5c4d598b6786952a0c6d3a1971de994189b275f317343e350eae50e2274944
7
- data.tar.gz: 64dcc40316c5c783368457cf8fa12b224f713a7d92bd9d1eeea409abd9f78ad42c9636de9984cc9ba7a648840f16b5b64832aaf248d25d9d1873e0742d2c3305
6
+ metadata.gz: 386432a02f9aa2b593d8ac22d5ed97d0ef07be8fc2d6697024a01c4d3f5d8e6bff557ae5efdc97fa903e4209b0a6fae044d49a13a0c5ccbe7efa2c82d172e02b
7
+ data.tar.gz: 144cd6983cc835a2367362774579d2a18235d94cd3727db49d6e3e3e98d958d46049527ea7b2e7b30e8976e5d88c3bdd3459c779c78b643554160933c86028db
data/README.md CHANGED
@@ -43,6 +43,8 @@ Or install it yourself as:
43
43
 
44
44
  wgs84.average ...
45
45
 
46
+ wgs84.center ...
47
+
46
48
  ## Running tests
47
49
 
48
50
  Tests are based on minitest.
@@ -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
 
@@ -1,3 +1,3 @@
1
1
  module GeodesicWgs84
2
- VERSION = "1.32.1"
2
+ VERSION = "1.32.2"
3
3
  end
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.1
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.2.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