lwgeom 0.2 → 0.2.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/ext/lwgeom/lwgeom.c +26 -1
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f90f94d270e97fb98b8e98482107832dccfc25ea
4
- data.tar.gz: 6c56624d707c2d4b30d61f21c5290493331d613c
3
+ metadata.gz: 31d546340dbcf627c9ed2891476a92ee19f0a8be
4
+ data.tar.gz: 3074c9946e7eb2f8fe88ce8b7919fdf0a5135672
5
5
  SHA512:
6
- metadata.gz: 81d8d8d808c76623e3617f42c7a773bfaef3a86fd7f2d2b6f6721eb5eefe0637dd07c3822a53a8d08c2e150d454e12b9c05194f336988b832dc330d61d495c5b
7
- data.tar.gz: 7dadac221fafd6b8845bfd1271be3abb9f17127b9073edb5889eb6664e3cfb8924e3f9a88ba60586596fca06b245995af016dfb5c0597a3810e4126e7afc7472
6
+ metadata.gz: 0809a0f1a90f036f537bd77ffcc96ca4314e74ed46db7a304d6c7fd6bfe594d8b22df36b1eee3285379caf4da4d259889fd4791002a9e9668f209fa09f4d234c
7
+ data.tar.gz: 90041d93e90cc8e0468ca0ada14fd32ec6d1e6463777cda399761e2268209d255346004daf03a6deaec47c269e4673dc1c56303424996e5533c0b1e2f89533a8
@@ -7,6 +7,8 @@ double EARTH_MINOR_AXIS_RADIUS = 6356752.314245179498;
7
7
  LWGEOM *lwg;
8
8
  SPHEROID s;
9
9
 
10
+ static VALUE cSpheroid;
11
+
10
12
  double get_area_for_lwg()
11
13
  {
12
14
  double area = lwgeom_area_spheroid(lwg, &s);
@@ -70,13 +72,35 @@ static VALUE get_length_from_hexwkb(VALUE self, VALUE geom_hexwkb)
70
72
  return rb_float_new(length);
71
73
  }
72
74
 
75
+ // trying to make polygon to be valid
76
+ // accept only string-polygon in wkb format
77
+ static VALUE make_valid(VALUE self, VALUE geom_wkb)
78
+ {
79
+ VALUE result;
80
+ LWGEOM *valid_lwg;
81
+
82
+ int wkb_size_a;
83
+ wkb_size_a = RSTRING_LEN(geom_wkb);
84
+
85
+ lwg = lwgeom_from_wkb(RSTRING_PTR(geom_wkb), wkb_size_a, 0);
86
+
87
+ valid_lwg = lwgeom_make_valid(lwg);
88
+ //make multi
89
+ valid_lwg = lwgeom_as_multi(valid_lwg);
90
+
91
+ char *wkb_str = (char*)lwgeom_to_wkb(valid_lwg, WKB_HEX, NULL);
92
+
93
+
94
+ return rb_str_new2(wkb_str);
95
+ }
96
+
73
97
  void Init_lwgeom()
74
98
  {
75
99
  /* define module */
76
100
  VALUE mLwGeom = rb_define_module("LwGeom");
77
101
 
78
102
  /* define class */
79
- VALUE cSpheroid = rb_define_class_under(mLwGeom, "Spheroid", rb_cObject);
103
+ cSpheroid = rb_define_class_under(mLwGeom, "Spheroid", rb_cObject);
80
104
 
81
105
  rb_define_module_function(cSpheroid, "get_area_from_hexwkb", get_area_from_hexwkb, 1);
82
106
  rb_define_module_function(cSpheroid, "get_area_from_wkb", get_area_from_wkb, 1);
@@ -84,6 +108,7 @@ void Init_lwgeom()
84
108
  rb_define_module_function(cSpheroid, "get_length_from_wkt", get_length_from_wkt, 1);
85
109
  rb_define_module_function(cSpheroid, "get_length_from_wkb", get_length_from_wkb, 1);
86
110
  rb_define_module_function(cSpheroid, "get_length_from_hexwkb",get_length_from_hexwkb,1);
111
+ rb_define_module_function(cSpheroid, "make_valid", make_valid, 1);
87
112
 
88
113
  spheroid_init(&s, EARTH_MAJOR_AXIS_RADIUS, EARTH_MINOR_AXIS_RADIUS);
89
114
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lwgeom
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Nelin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-25 00:00:00.000000000 Z
11
+ date: 2015-10-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: With this gem you can call lwgeom methods from ruby
14
14
  email:
@@ -40,7 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  version: '0'
41
41
  requirements: []
42
42
  rubyforge_project:
43
- rubygems_version: 2.4.5
43
+ rubygems_version: 2.4.5.1
44
44
  signing_key:
45
45
  specification_version: 4
46
46
  summary: Ruby bindings for lwgeom library