rgeo 0.3.5 → 0.3.6
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.
- data/History.rdoc +11 -0
- data/Version +1 -1
- data/ext/geos_c_impl/factory.c +134 -3
- data/ext/geos_c_impl/factory.h +5 -0
- data/ext/geos_c_impl/geometry_collection.c +18 -12
- data/lib/rgeo/cartesian/factory.rb +40 -33
- data/lib/rgeo/cartesian/interface.rb +6 -0
- data/lib/rgeo/coord_sys/cs/entities.rb +4 -4
- data/lib/rgeo/coord_sys/proj4.rb +5 -5
- data/lib/rgeo/coord_sys/srs_database/active_record_table.rb +5 -3
- data/lib/rgeo/feature/geometry.rb +8 -1
- data/lib/rgeo/geographic/factory.rb +124 -1
- data/lib/rgeo/geographic/interface.rb +6 -0
- data/lib/rgeo/geographic/proj4_projector.rb +6 -0
- data/lib/rgeo/geographic/simple_mercator_projector.rb +6 -0
- data/lib/rgeo/geos/factory.rb +119 -18
- data/lib/rgeo/geos/ffi_classes.rb +10 -5
- data/lib/rgeo/geos/ffi_factory.rb +106 -5
- data/lib/rgeo/geos/interface.rb +0 -2
- data/lib/rgeo/geos/zm_factory.rb +106 -2
- data/lib/rgeo/geos/zm_impl.rb +3 -2
- data/lib/rgeo/impl_helper.rb +1 -0
- data/lib/rgeo/impl_helper/basic_line_string_methods.rb +1 -1
- data/lib/rgeo/impl_helper/utils.rb +67 -0
- data/lib/rgeo/wkrep/wkb_generator.rb +4 -4
- data/lib/rgeo/wkrep/wkb_parser.rb +4 -4
- data/lib/rgeo/wkrep/wkt_generator.rb +4 -4
- data/lib/rgeo/wkrep/wkt_parser.rb +5 -5
- data/test/common/factory_tests.rb +117 -0
- data/test/common/geometry_collection_tests.rb +25 -0
- data/test/coord_sys/tc_active_record_table.rb +4 -5
- data/test/coord_sys/tc_ogc_cs.rb +0 -6
- data/test/coord_sys/tc_proj4.rb +4 -6
- data/test/geos_capi/tc_factory.rb +5 -33
- data/test/geos_capi/tc_zmfactory.rb +6 -0
- data/test/geos_ffi/tc_factory.rb +5 -33
- data/test/geos_ffi/tc_zmfactory.rb +6 -0
- data/test/projected_geographic/tc_factory.rb +63 -0
- data/test/simple_cartesian/tc_factory.rb +66 -0
- data/test/simple_mercator/tc_factory.rb +63 -0
- data/test/spherical_geographic/tc_factory.rb +66 -0
- data/test/tc_types.rb +4 -0
- metadata +12 -2
data/History.rdoc
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
=== 0.3.6 / 2012-03-06
|
2
|
+
|
3
|
+
* Geometry#relate? was incorrectly spelled "Geometry#relate" in the Feature::Geometry module and in some (but not all) implementations, leading to various types of method not found errors. Fixed. We'll keep #relate as a deprecated alias for the time being.
|
4
|
+
* Cloning a Geos CAPI factory caused a segfault. Fixed.
|
5
|
+
* Parsing a "well-known" format string using the ffi-geos implementation returned the low-level ffi-geos object rather than the RGeo feature if the generator was set to :geos. Fixed.
|
6
|
+
* GeometryCollection#each now returns an Enumerator if no block is given.
|
7
|
+
* Pure Ruby factories (simple_spherical, simple_cartesian) now support a :uses_lenient_assertions option, which disables assertion checking on LinearRing, Polygon, and MultiPolygon construction, since those checks can be expensive for large geometries.
|
8
|
+
* Fixed Rails 3.2 deprecation warning in SRSDatabase::ActiveRecordTable.
|
9
|
+
* Fixed an issue with the ActiveRecordTable tests on ActiveRecord 3.2.
|
10
|
+
* Further work towards YAML and mashal serialization support. Factories are now done, but geometries are not. I'm working actively on geometry serialization; it should be in place in the next release.
|
11
|
+
|
1
12
|
=== 0.3.5 / 2012-02-27
|
2
13
|
|
3
14
|
* Reworked the terminology on equivalence levels. The documentation now names the three levels "spatial", "representational", and "objective" equivalence.
|
data/Version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
data/ext/geos_c_impl/factory.c
CHANGED
@@ -69,7 +69,9 @@ static void message_handler(const char* fmt, ...)
|
|
69
69
|
|
70
70
|
static void destroy_factory_func(RGeo_FactoryData* data)
|
71
71
|
{
|
72
|
-
GEOSContextHandle_t context
|
72
|
+
GEOSContextHandle_t context;
|
73
|
+
|
74
|
+
context = data->geos_context;
|
73
75
|
if (data->wkt_reader) {
|
74
76
|
GEOSWKTReader_destroy_r(context, data->wkt_reader);
|
75
77
|
}
|
@@ -118,6 +120,18 @@ static void mark_factory_func(RGeo_FactoryData* data)
|
|
118
120
|
if (!NIL_P(data->wkrep_wkb_generator)) {
|
119
121
|
rb_gc_mark(data->wkrep_wkb_generator);
|
120
122
|
}
|
123
|
+
if (!NIL_P(data->wkrep_wkt_parser)) {
|
124
|
+
rb_gc_mark(data->wkrep_wkt_parser);
|
125
|
+
}
|
126
|
+
if (!NIL_P(data->wkrep_wkb_parser)) {
|
127
|
+
rb_gc_mark(data->wkrep_wkb_parser);
|
128
|
+
}
|
129
|
+
if (!NIL_P(data->proj4_obj)) {
|
130
|
+
rb_gc_mark(data->proj4_obj);
|
131
|
+
}
|
132
|
+
if (!NIL_P(data->coord_sys_obj)) {
|
133
|
+
rb_gc_mark(data->coord_sys_obj);
|
134
|
+
}
|
121
135
|
}
|
122
136
|
|
123
137
|
|
@@ -228,7 +242,7 @@ static VALUE method_factory_parse_wkb(VALUE self, VALUE str)
|
|
228
242
|
|
229
243
|
|
230
244
|
static VALUE cmethod_factory_create(VALUE klass, VALUE flags, VALUE srid, VALUE buffer_resolution,
|
231
|
-
VALUE wkt_generator, VALUE wkb_generator)
|
245
|
+
VALUE wkt_generator, VALUE wkb_generator, VALUE proj4_obj, VALUE coord_sys_obj)
|
232
246
|
{
|
233
247
|
VALUE result;
|
234
248
|
RGeo_FactoryData* data;
|
@@ -252,6 +266,10 @@ static VALUE cmethod_factory_create(VALUE klass, VALUE flags, VALUE srid, VALUE
|
|
252
266
|
data->wkb_writer = NULL;
|
253
267
|
data->wkrep_wkt_generator = wkt_generator;
|
254
268
|
data->wkrep_wkb_generator = wkb_generator;
|
269
|
+
data->wkrep_wkt_parser = Qnil;
|
270
|
+
data->wkrep_wkb_parser = Qnil;
|
271
|
+
data->proj4_obj = proj4_obj;
|
272
|
+
data->coord_sys_obj = coord_sys_obj;
|
255
273
|
result = Data_Wrap_Struct(klass, mark_factory_func, destroy_factory_func, data);
|
256
274
|
}
|
257
275
|
else {
|
@@ -262,6 +280,109 @@ static VALUE cmethod_factory_create(VALUE klass, VALUE flags, VALUE srid, VALUE
|
|
262
280
|
}
|
263
281
|
|
264
282
|
|
283
|
+
static VALUE alloc_factory(VALUE klass)
|
284
|
+
{
|
285
|
+
return cmethod_factory_create(klass, INT2NUM(0), INT2NUM(0), INT2NUM(0), Qnil, Qnil, Qnil, Qnil);
|
286
|
+
}
|
287
|
+
|
288
|
+
|
289
|
+
static VALUE method_factory_initialize_copy(VALUE self, VALUE orig)
|
290
|
+
{
|
291
|
+
RGeo_FactoryData* self_data;
|
292
|
+
RGeo_FactoryData* orig_data;
|
293
|
+
GEOSContextHandle_t context;
|
294
|
+
|
295
|
+
// Clear out existing data
|
296
|
+
self_data = RGEO_FACTORY_DATA_PTR(self);
|
297
|
+
context = self_data->geos_context;
|
298
|
+
if (self_data->wkt_reader) {
|
299
|
+
GEOSWKTReader_destroy_r(context, self_data->wkt_reader);
|
300
|
+
self_data->wkt_reader = NULL;
|
301
|
+
}
|
302
|
+
if (self_data->wkb_reader) {
|
303
|
+
GEOSWKBReader_destroy_r(context, self_data->wkb_reader);
|
304
|
+
self_data->wkb_reader = NULL;
|
305
|
+
}
|
306
|
+
if (self_data->wkt_writer) {
|
307
|
+
GEOSWKTWriter_destroy_r(context, self_data->wkt_writer);
|
308
|
+
self_data->wkt_writer = NULL;
|
309
|
+
}
|
310
|
+
if (self_data->wkb_writer) {
|
311
|
+
GEOSWKBWriter_destroy_r(context, self_data->wkb_writer);
|
312
|
+
self_data->wkb_writer = NULL;
|
313
|
+
}
|
314
|
+
self_data->wkrep_wkt_generator = Qnil;
|
315
|
+
self_data->wkrep_wkb_generator = Qnil;
|
316
|
+
self_data->wkrep_wkt_parser = Qnil;
|
317
|
+
self_data->wkrep_wkb_parser = Qnil;
|
318
|
+
self_data->proj4_obj = Qnil;
|
319
|
+
self_data->coord_sys_obj = Qnil;
|
320
|
+
|
321
|
+
// Copy new data from original object
|
322
|
+
if (TYPE(orig) == T_DATA && RDATA(orig)->dfree == (RUBY_DATA_FUNC)destroy_factory_func) {
|
323
|
+
orig_data = RGEO_FACTORY_DATA_PTR(orig);
|
324
|
+
self_data->flags = orig_data->flags;
|
325
|
+
self_data->srid = orig_data->srid;
|
326
|
+
self_data->buffer_resolution = orig_data->buffer_resolution;
|
327
|
+
self_data->wkrep_wkt_generator = orig_data->wkrep_wkt_generator;
|
328
|
+
self_data->wkrep_wkb_generator = orig_data->wkrep_wkb_generator;
|
329
|
+
self_data->wkrep_wkt_parser = orig_data->wkrep_wkt_parser;
|
330
|
+
self_data->wkrep_wkb_parser = orig_data->wkrep_wkb_parser;
|
331
|
+
self_data->proj4_obj = orig_data->proj4_obj;
|
332
|
+
self_data->coord_sys_obj = orig_data->coord_sys_obj;
|
333
|
+
}
|
334
|
+
return self;
|
335
|
+
}
|
336
|
+
|
337
|
+
|
338
|
+
static VALUE method_set_wkrep_parsers(VALUE self, VALUE wkt_parser, VALUE wkb_parser)
|
339
|
+
{
|
340
|
+
RGeo_FactoryData* self_data;
|
341
|
+
|
342
|
+
self_data = RGEO_FACTORY_DATA_PTR(self);
|
343
|
+
self_data->wkrep_wkt_parser = wkt_parser;
|
344
|
+
self_data->wkrep_wkb_parser = wkb_parser;
|
345
|
+
|
346
|
+
return self;
|
347
|
+
}
|
348
|
+
|
349
|
+
|
350
|
+
static VALUE method_get_proj4(VALUE self)
|
351
|
+
{
|
352
|
+
return RGEO_FACTORY_DATA_PTR(self)->proj4_obj;
|
353
|
+
}
|
354
|
+
|
355
|
+
|
356
|
+
static VALUE method_get_coord_sys(VALUE self)
|
357
|
+
{
|
358
|
+
return RGEO_FACTORY_DATA_PTR(self)->coord_sys_obj;
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
static VALUE method_get_wkt_generator(VALUE self)
|
363
|
+
{
|
364
|
+
return RGEO_FACTORY_DATA_PTR(self)->wkrep_wkt_generator;
|
365
|
+
}
|
366
|
+
|
367
|
+
|
368
|
+
static VALUE method_get_wkb_generator(VALUE self)
|
369
|
+
{
|
370
|
+
return RGEO_FACTORY_DATA_PTR(self)->wkrep_wkb_generator;
|
371
|
+
}
|
372
|
+
|
373
|
+
|
374
|
+
static VALUE method_get_wkt_parser(VALUE self)
|
375
|
+
{
|
376
|
+
return RGEO_FACTORY_DATA_PTR(self)->wkrep_wkt_parser;
|
377
|
+
}
|
378
|
+
|
379
|
+
|
380
|
+
static VALUE method_get_wkb_parser(VALUE self)
|
381
|
+
{
|
382
|
+
return RGEO_FACTORY_DATA_PTR(self)->wkrep_wkb_parser;
|
383
|
+
}
|
384
|
+
|
385
|
+
|
265
386
|
/**** INITIALIZATION FUNCTION ****/
|
266
387
|
|
267
388
|
|
@@ -281,17 +402,27 @@ RGeo_Globals* rgeo_init_geos_factory()
|
|
281
402
|
globals->id_cast = rb_intern("cast");
|
282
403
|
globals->id_eql = rb_intern("eql?");
|
283
404
|
globals->id_generate = rb_intern("generate");
|
405
|
+
globals->id_enum_for = rb_intern("enum_for");
|
284
406
|
globals->sym_force_new = ID2SYM(rb_intern("force_new"));
|
285
407
|
globals->sym_keep_subtype = ID2SYM(rb_intern("keep_subtype"));
|
286
408
|
|
287
409
|
// Add C methods to the factory.
|
288
410
|
geos_factory_class = rb_const_get_at(globals->geos_module, rb_intern("Factory"));
|
411
|
+
rb_define_alloc_func(geos_factory_class, alloc_factory);
|
412
|
+
rb_define_method(geos_factory_class, "initialize_copy", method_factory_initialize_copy, 1);
|
289
413
|
rb_define_method(geos_factory_class, "_parse_wkt_impl", method_factory_parse_wkt, 1);
|
290
414
|
rb_define_method(geos_factory_class, "_parse_wkb_impl", method_factory_parse_wkb, 1);
|
291
415
|
rb_define_method(geos_factory_class, "_srid", method_factory_srid, 0);
|
292
416
|
rb_define_method(geos_factory_class, "_buffer_resolution", method_factory_buffer_resolution, 0);
|
293
417
|
rb_define_method(geos_factory_class, "_flags", method_factory_flags, 0);
|
294
|
-
|
418
|
+
rb_define_method(geos_factory_class, "_set_wkrep_parsers", method_set_wkrep_parsers, 2);
|
419
|
+
rb_define_method(geos_factory_class, "_proj4", method_get_proj4, 0);
|
420
|
+
rb_define_method(geos_factory_class, "_coord_sys", method_get_coord_sys, 0);
|
421
|
+
rb_define_method(geos_factory_class, "_wkt_generator", method_get_wkt_generator, 0);
|
422
|
+
rb_define_method(geos_factory_class, "_wkb_generator", method_get_wkb_generator, 0);
|
423
|
+
rb_define_method(geos_factory_class, "_wkt_parser", method_get_wkt_parser, 0);
|
424
|
+
rb_define_method(geos_factory_class, "_wkb_parser", method_get_wkb_parser, 0);
|
425
|
+
rb_define_module_function(geos_factory_class, "_create", cmethod_factory_create, 7);
|
295
426
|
|
296
427
|
// Wrap the globals in a Ruby object and store it off so we have access
|
297
428
|
// to it later. Each factory instance will reference it internally.
|
data/ext/geos_c_impl/factory.h
CHANGED
@@ -77,6 +77,7 @@ typedef struct {
|
|
77
77
|
ID id_cast;
|
78
78
|
ID id_eql;
|
79
79
|
ID id_generate;
|
80
|
+
ID id_enum_for;
|
80
81
|
VALUE sym_force_new;
|
81
82
|
VALUE sym_keep_subtype;
|
82
83
|
} RGeo_Globals;
|
@@ -98,6 +99,10 @@ typedef struct {
|
|
98
99
|
GEOSWKBWriter* wkb_writer;
|
99
100
|
VALUE wkrep_wkt_generator;
|
100
101
|
VALUE wkrep_wkb_generator;
|
102
|
+
VALUE wkrep_wkt_parser;
|
103
|
+
VALUE wkrep_wkb_parser;
|
104
|
+
VALUE proj4_obj;
|
105
|
+
VALUE coord_sys_obj;
|
101
106
|
int flags;
|
102
107
|
int srid;
|
103
108
|
int buffer_resolution;
|
@@ -262,22 +262,28 @@ static VALUE method_geometry_collection_each(VALUE self)
|
|
262
262
|
const GEOSGeometry* elem_geom;
|
263
263
|
|
264
264
|
self_data = RGEO_GEOMETRY_DATA_PTR(self);
|
265
|
-
|
266
|
-
if (
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
265
|
+
|
266
|
+
if (rb_block_given_p()) {
|
267
|
+
self_geom = self_data->geom;
|
268
|
+
if (self_geom) {
|
269
|
+
GEOSContextHandle_t self_context = self_data->geos_context;
|
270
|
+
len = GEOSGetNumGeometries_r(self_context, self_geom);
|
271
|
+
if (len > 0) {
|
272
|
+
klasses = self_data->klasses;
|
273
|
+
for (i=0; i<len; ++i) {
|
274
|
+
elem_geom = GEOSGetGeometryN_r(self_context, self_geom, i);
|
275
|
+
elem = rgeo_wrap_geos_geometry_clone(self_data->factory, elem_geom, NIL_P(klasses) ? Qnil : rb_ary_entry(klasses, i));
|
276
|
+
if (!NIL_P(elem)) {
|
277
|
+
rb_yield(elem);
|
278
|
+
}
|
276
279
|
}
|
277
280
|
}
|
278
281
|
}
|
282
|
+
return self;
|
283
|
+
}
|
284
|
+
else {
|
285
|
+
return rb_funcall(self, RGEO_FACTORY_DATA_PTR(self_data->factory)->globals->id_enum_for, 0);
|
279
286
|
}
|
280
|
-
return self;
|
281
287
|
}
|
282
288
|
|
283
289
|
|
@@ -76,6 +76,7 @@ module RGeo
|
|
76
76
|
end
|
77
77
|
srid_ ||= @coord_sys.authority_code if @coord_sys
|
78
78
|
@srid = srid_.to_i
|
79
|
+
@lenient_assertions = opts_[:uses_lenient_assertions] ? true : false
|
79
80
|
|
80
81
|
wkt_generator_ = opts_[:wkt_generator]
|
81
82
|
case wkt_generator_
|
@@ -127,6 +128,7 @@ module RGeo
|
|
127
128
|
'wkbg' => @wkb_generator._properties,
|
128
129
|
'wktp' => @wkt_parser._properties,
|
129
130
|
'wkbp' => @wkb_parser._properties,
|
131
|
+
'lena' => @lenient_assertions,
|
130
132
|
}
|
131
133
|
hash_['proj4'] = @proj4.marshal_dump if @proj4
|
132
134
|
hash_['cs'] = @coord_sys.to_wkt if @coord_sys
|
@@ -145,22 +147,39 @@ module RGeo
|
|
145
147
|
else
|
146
148
|
coord_sys_ = nil
|
147
149
|
end
|
148
|
-
initialize(
|
150
|
+
initialize(
|
149
151
|
:has_z_coordinate => data_['hasz'],
|
150
152
|
:has_m_coordinate => data_['hasm'],
|
151
153
|
:srid => data_['srid'],
|
152
|
-
:wkt_generator => data_['wktg'],
|
153
|
-
:wkb_generator => data_['wkbg'],
|
154
|
-
:wkt_parser => data_['wktp'],
|
155
|
-
:wkb_parser => data_['wkbp'],
|
154
|
+
:wkt_generator => ImplHelper::Utils.symbolize_hash(data_['wktg']),
|
155
|
+
:wkb_generator => ImplHelper::Utils.symbolize_hash(data_['wkbg']),
|
156
|
+
:wkt_parser => ImplHelper::Utils.symbolize_hash(data_['wktp']),
|
157
|
+
:wkb_parser => ImplHelper::Utils.symbolize_hash(data_['wkbp']),
|
158
|
+
:uses_lenient_assertions => data_['lena'],
|
156
159
|
:proj4 => proj4_,
|
157
|
-
:coord_sys => coord_sys_
|
158
|
-
|
160
|
+
:coord_sys => coord_sys_
|
161
|
+
)
|
159
162
|
end
|
160
163
|
|
161
164
|
|
162
165
|
# Psych support
|
163
166
|
|
167
|
+
def encode_with(coder_) # :nodoc:
|
168
|
+
coder_['has_z_coordinate'] = @has_z
|
169
|
+
coder_['has_m_coordinate'] = @has_m
|
170
|
+
coder_['srid'] = @srid
|
171
|
+
coder_['lenient_assertions'] = @lenient_assertions
|
172
|
+
coder_['wkt_generator'] = @wkt_generator._properties
|
173
|
+
coder_['wkb_generator'] = @wkb_generator._properties
|
174
|
+
coder_['wkt_parser'] = @wkt_parser._properties
|
175
|
+
coder_['wkb_parser'] = @wkb_parser._properties
|
176
|
+
if @proj4
|
177
|
+
str_ = @proj4.original_str || @proj4.canonical_str
|
178
|
+
coder_['proj4'] = @proj4.radians? ? {'proj4' => str_, 'radians' => true} : str_
|
179
|
+
end
|
180
|
+
coder_['coord_sys'] = @coord_sys.to_wkt if @coord_sys
|
181
|
+
end
|
182
|
+
|
164
183
|
def init_with(coder_) # :nodoc:
|
165
184
|
if (proj4_data_ = coder_['proj4'])
|
166
185
|
if proj4_data_.is_a?(::Hash)
|
@@ -171,37 +190,23 @@ module RGeo
|
|
171
190
|
else
|
172
191
|
proj4_ = nil
|
173
192
|
end
|
174
|
-
if (coord_sys_data_ =
|
193
|
+
if (coord_sys_data_ = coder_['cs'])
|
175
194
|
coord_sys_ = CoordSys::CS.create_from_wkt(coord_sys_data_.to_s)
|
176
195
|
else
|
177
196
|
coord_sys_ = nil
|
178
197
|
end
|
179
|
-
initialize(
|
180
|
-
:has_z_coordinate =>
|
181
|
-
:has_m_coordinate =>
|
182
|
-
:srid =>
|
183
|
-
:wkt_generator =>
|
184
|
-
:wkb_generator =>
|
185
|
-
:wkt_parser =>
|
186
|
-
:wkb_parser =>
|
198
|
+
initialize(
|
199
|
+
:has_z_coordinate => coder_['has_z_coordinate'],
|
200
|
+
:has_m_coordinate => coder_['has_m_coordinate'],
|
201
|
+
:srid => coder_['srid'],
|
202
|
+
:wkt_generator => ImplHelper::Utils.symbolize_hash(coder_['wkt_generator']),
|
203
|
+
:wkb_generator => ImplHelper::Utils.symbolize_hash(coder_['wkb_generator']),
|
204
|
+
:wkt_parser => ImplHelper::Utils.symbolize_hash(coder_['wkt_parser']),
|
205
|
+
:wkb_parser => ImplHelper::Utils.symbolize_hash(coder_['wkb_parser']),
|
206
|
+
:uses_lenient_assertions => coder_['lenient_assertions'],
|
187
207
|
:proj4 => proj4_,
|
188
|
-
:coord_sys => coord_sys_
|
189
|
-
|
190
|
-
end
|
191
|
-
|
192
|
-
def encode_with(coder_) # :nodoc:
|
193
|
-
coder_['has_z_coordinate'] = @has_z
|
194
|
-
coder_['has_m_coordinate'] = @has_m
|
195
|
-
coder_['srid'] = @srid
|
196
|
-
coder_['wkt_generator'] = @wkt_generator._properties
|
197
|
-
coder_['wkb_generator'] = @wkb_generator._properties
|
198
|
-
coder_['wkt_parser'] = @wkt_parser._properties
|
199
|
-
coder_['wkb_parser'] = @wkb_parser._properties
|
200
|
-
if @proj4
|
201
|
-
str_ = @proj4.original_str || @proj4.canonical_str
|
202
|
-
coder_['proj4'] = @proj4.radians? ? {'proj4' => str_, 'radians' => true} : str_
|
203
|
-
end
|
204
|
-
coder_['coord_sys'] = @coord_sys.to_wkt if @coord_sys
|
208
|
+
:coord_sys => coord_sys_
|
209
|
+
)
|
205
210
|
end
|
206
211
|
|
207
212
|
|
@@ -220,6 +225,8 @@ module RGeo
|
|
220
225
|
@has_z
|
221
226
|
when :has_m_coordinate
|
222
227
|
@has_m
|
228
|
+
when :uses_lenient_assertions
|
229
|
+
@lenient_assertions
|
223
230
|
when :is_cartesian
|
224
231
|
true
|
225
232
|
else
|
@@ -111,6 +111,12 @@ module RGeo
|
|
111
111
|
# Support a Z coordinate. Default is false.
|
112
112
|
# [<tt>:has_m_coordinate</tt>]
|
113
113
|
# Support an M coordinate. Default is false.
|
114
|
+
# [<tt>:uses_lenient_assertions</tt>]
|
115
|
+
# If set to true, assertion checking is disabled. This includes
|
116
|
+
# simplicity checking on LinearRing, and validity checks on
|
117
|
+
# Polygon and MultiPolygon. This may speed up creation of certain
|
118
|
+
# objects, at the expense of not doing the proper checking for
|
119
|
+
# OGC compliance. Default is false.
|
114
120
|
# [<tt>:wkt_parser</tt>]
|
115
121
|
# Configure the parser for WKT. The value is a hash of
|
116
122
|
# configuration parameters for WKRep::WKTParser.new. Default is
|
@@ -242,6 +242,10 @@ module RGeo
|
|
242
242
|
|
243
243
|
# Psych support
|
244
244
|
|
245
|
+
def encode_with(coder_) # :nodoc:
|
246
|
+
coder_['wkt'] = to_wkt
|
247
|
+
end
|
248
|
+
|
245
249
|
def init_with(coder_) # :nodoc:
|
246
250
|
temp_ = CS.create_from_wkt(coder_.type == :scalar ? coder_.scalar : coder_['wkt'] )
|
247
251
|
if temp_.class == self.class
|
@@ -253,10 +257,6 @@ module RGeo
|
|
253
257
|
end
|
254
258
|
end
|
255
259
|
|
256
|
-
def encode_with(coder_) # :nodoc:
|
257
|
-
coder_['wkt'] = to_wkt
|
258
|
-
end
|
259
|
-
|
260
260
|
|
261
261
|
class << self
|
262
262
|
|
data/lib/rgeo/coord_sys/proj4.rb
CHANGED
@@ -96,6 +96,11 @@ module RGeo
|
|
96
96
|
|
97
97
|
# Psych support
|
98
98
|
|
99
|
+
def encode_with(coder_) # :nodoc:
|
100
|
+
coder_['proj4'] = original_str || canonical_str
|
101
|
+
coder_['radians'] = radians?
|
102
|
+
end
|
103
|
+
|
99
104
|
def init_with(coder_) # :nodoc:
|
100
105
|
if coder_.type == :scalar
|
101
106
|
_set_value(coder_.scalar, false)
|
@@ -104,11 +109,6 @@ module RGeo
|
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
107
|
-
def encode_with(coder_) # :nodoc:
|
108
|
-
coder_['proj4'] = original_str || canonical_str
|
109
|
-
coder_['radians'] = radians?
|
110
|
-
end
|
111
|
-
|
112
112
|
|
113
113
|
# Returns the "canonical" string definition for this coordinate
|
114
114
|
# system, as reported by Proj4. This may be slightly different
|