rgeo 0.1.18 → 0.1.19

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 (50) hide show
  1. data/History.rdoc +11 -0
  2. data/README.rdoc +17 -30
  3. data/Version +1 -1
  4. data/ext/geos_c_impl/factory.c +4 -9
  5. data/ext/geos_c_impl/factory.h +8 -8
  6. data/ext/geos_c_impl/geometry.c +19 -2
  7. data/ext/geos_c_impl/geometry_collection.c +1 -1
  8. data/ext/geos_c_impl/polygon.c +2 -2
  9. data/lib/active_record/connection_adapters/mysql2spatial_adapter.rb +8 -6
  10. data/lib/active_record/connection_adapters/mysqlspatial_adapter.rb +8 -6
  11. data/lib/rgeo/active_record/arel_modifications.rb +4 -0
  12. data/lib/rgeo/active_record/base_modifications.rb +37 -2
  13. data/lib/rgeo/active_record/mysql_common.rb +2 -2
  14. data/lib/rgeo/cartesian.rb +6 -22
  15. data/lib/rgeo/cartesian/analysis.rb +3 -0
  16. data/lib/rgeo/cartesian/bounding_box.rb +337 -0
  17. data/lib/rgeo/cartesian/feature_classes.rb +11 -11
  18. data/lib/rgeo/cartesian/feature_methods.rb +5 -0
  19. data/lib/rgeo/cartesian/interface.rb +21 -4
  20. data/lib/rgeo/features/geometry.rb +0 -15
  21. data/lib/rgeo/geography/interface.rb +33 -6
  22. data/lib/rgeo/geography/simple_mercator/feature_classes.rb +30 -17
  23. data/lib/rgeo/geography/simple_mercator/feature_methods.rb +1 -1
  24. data/lib/rgeo/geography/simple_spherical/feature_classes.rb +38 -11
  25. data/lib/rgeo/geos.rb +2 -0
  26. data/lib/rgeo/geos/factory.rb +37 -21
  27. data/lib/rgeo/geos/impl_additions.rb +20 -0
  28. data/lib/rgeo/geos/interface.rb +17 -8
  29. data/lib/rgeo/geos/zm_factory.rb +241 -0
  30. data/lib/rgeo/geos/zm_impl.rb +432 -0
  31. data/lib/rgeo/impl_helpers/basic_geometry_collection_methods.rb +39 -0
  32. data/lib/rgeo/impl_helpers/basic_geometry_methods.rb +0 -5
  33. data/lib/rgeo/impl_helpers/basic_line_string_methods.rb +10 -1
  34. data/lib/rgeo/impl_helpers/basic_point_methods.rb +1 -13
  35. data/lib/rgeo/impl_helpers/basic_polygon_methods.rb +10 -0
  36. data/tests/common/geometry_collection_tests.rb +16 -0
  37. data/tests/common/point_tests.rb +27 -1
  38. data/tests/geos/tc_point.rb +2 -0
  39. data/tests/geos/tc_zmfactory.rb +85 -0
  40. data/tests/simple_cartesian/tc_geometry_collection.rb +1 -0
  41. data/tests/simple_cartesian/tc_point.rb +2 -1
  42. data/tests/simple_mercator/tc_point.rb +2 -0
  43. data/tests/simple_spherical/tc_geometry_collection.rb +2 -0
  44. data/tests/simple_spherical/tc_point.rb +2 -1
  45. data/tests/tc_oneoff.rb +0 -1
  46. data/tests/wkrep/tc_wkb_generator.rb +4 -4
  47. data/tests/wkrep/tc_wkb_parser.rb +2 -2
  48. data/tests/wkrep/tc_wkt_generator.rb +4 -4
  49. data/tests/wkrep/tc_wkt_parser.rb +5 -5
  50. metadata +23 -3
@@ -135,6 +135,28 @@ module RGeo
135
135
  end
136
136
 
137
137
 
138
+ def _add_boundary(hash_, point_) # :nodoc:
139
+ hval_ = [point_.x, point_.y].hash
140
+ (hash_[hval_] ||= [point_, 0])[1] += 1
141
+ end
142
+
143
+
144
+ def boundary
145
+ hash_ = {}
146
+ @elements.each do |line_|
147
+ if !line_.is_empty? && !line_.is_closed?
148
+ _add_boundary(hash_, line_.start_point)
149
+ _add_boundary(hash_, line_.end_point)
150
+ end
151
+ end
152
+ array_ = []
153
+ hash_.each do |hval_, data_|
154
+ array_ << data_[0] if data_[1] % 2 == 1
155
+ end
156
+ factory.multi_point([array_])
157
+ end
158
+
159
+
138
160
  end
139
161
 
140
162
 
@@ -159,6 +181,11 @@ module RGeo
159
181
  end
160
182
 
161
183
 
184
+ def boundary
185
+ factory.collection([])
186
+ end
187
+
188
+
162
189
  end
163
190
 
164
191
 
@@ -188,6 +215,18 @@ module RGeo
188
215
  end
189
216
 
190
217
 
218
+ def boundary
219
+ array_ = []
220
+ @elements.each do |poly_|
221
+ unless poly_.is_empty?
222
+ array_ << poly_.exterior_ring
223
+ end
224
+ array_.concat(poly_.interior_rings)
225
+ end
226
+ factory.multi_line_string(array_)
227
+ end
228
+
229
+
191
230
  end
192
231
 
193
232
 
@@ -67,11 +67,6 @@ module RGeo
67
67
  end
68
68
 
69
69
 
70
- def cast(type_)
71
- type_ == geometry_type ? self : nil
72
- end
73
-
74
-
75
70
  def as_text
76
71
  WKRep::WKTGenerator.new.generate(self)
77
72
  end
@@ -101,6 +101,15 @@ module RGeo
101
101
  end
102
102
 
103
103
 
104
+ def boundary
105
+ array_ = []
106
+ if !is_empty? && !is_closed?
107
+ array_ << @points.first << @points.last
108
+ end
109
+ factory.multi_point([array_])
110
+ end
111
+
112
+
104
113
  def start_point
105
114
  @points.first
106
115
  end
@@ -112,7 +121,7 @@ module RGeo
112
121
 
113
122
 
114
123
  def is_closed?
115
- if @is_closed.nil?
124
+ unless defined?(@is_closed)
116
125
  @is_closed = @points.size > 2 && @points.first == @points.last
117
126
  end
118
127
  @is_closed
@@ -119,13 +119,7 @@ module RGeo
119
119
  return false unless rhs_.is_a?(self.class) && rhs_.factory == self.factory
120
120
  case rhs_
121
121
  when Features::Point
122
- if @y == 90
123
- rhs_.y == 90
124
- elsif @y == -90
125
- rhs_.y == -90
126
- else
127
- rhs_.x == @x && rhs_.y == @y
128
- end
122
+ rhs_.x == @x && rhs_.y == @y
129
123
  when Features::LineString
130
124
  rhs_.num_points > 0 && rhs_.points.all?{ |elem_| equals?(elem_) }
131
125
  when Features::GeometryCollection
@@ -136,12 +130,6 @@ module RGeo
136
130
  end
137
131
 
138
132
 
139
- alias_method :longitude, :x
140
- alias_method :lon, :x
141
- alias_method :latitude, :y
142
- alias_method :lat, :y
143
-
144
-
145
133
  end
146
134
 
147
135
 
@@ -103,6 +103,16 @@ module RGeo
103
103
  end
104
104
 
105
105
 
106
+ def boundary
107
+ array_ = []
108
+ unless @exterior_ring.is_empty?
109
+ array_ << @exterior_ring
110
+ end
111
+ array_.concat(@interior_rings)
112
+ factory.multi_line_string(array_)
113
+ end
114
+
115
+
106
116
  end
107
117
 
108
118
 
@@ -215,6 +215,22 @@ module RGeo
215
215
  end
216
216
 
217
217
 
218
+ def test_empty_collection_envelope
219
+ empty_ = @factory.collection([])
220
+ envelope_ = empty_.envelope
221
+ assert_equal(Features::GeometryCollection, envelope_.geometry_type)
222
+ assert_equal(0, envelope_.num_geometries)
223
+ end
224
+
225
+
226
+ def test_empty_collection_boundary
227
+ empty_ = @factory.collection([])
228
+ boundary_ = empty_.boundary
229
+ assert_equal(Features::GeometryCollection, boundary_.geometry_type)
230
+ assert_equal(0, boundary_.num_geometries)
231
+ end
232
+
233
+
218
234
  end
219
235
 
220
236
  end
@@ -272,7 +272,7 @@ module RGeo
272
272
  end
273
273
 
274
274
 
275
- def test_3d_creation
275
+ def test_3dz_creation
276
276
  point_ = @zfactory.point(11, 12, 13)
277
277
  assert_equal(11, point_.x)
278
278
  assert_equal(12, point_.y)
@@ -284,6 +284,32 @@ module RGeo
284
284
  end
285
285
 
286
286
 
287
+ def test_3dm_creation
288
+ point_ = @mfactory.point(11, 12, 13)
289
+ assert_equal(11, point_.x)
290
+ assert_equal(12, point_.y)
291
+ assert_equal(13, point_.m)
292
+ point2_ = @mfactory.point(21, 22)
293
+ assert_equal(21, point2_.x)
294
+ assert_equal(22, point2_.y)
295
+ assert_equal(0, point2_.m)
296
+ end
297
+
298
+
299
+ def test_4d_creation
300
+ point_ = @zmfactory.point(11, 12, 13, 14)
301
+ assert_equal(11, point_.x)
302
+ assert_equal(12, point_.y)
303
+ assert_equal(13, point_.z)
304
+ assert_equal(14, point_.m)
305
+ point2_ = @zmfactory.point(21, 22)
306
+ assert_equal(21, point2_.x)
307
+ assert_equal(22, point2_.y)
308
+ assert_equal(0, point2_.z)
309
+ assert_equal(0, point2_.m)
310
+ end
311
+
312
+
287
313
  def test_wkt_creation_3d
288
314
  point2_ = @zfactory.parse_wkt('POINT(11 12 13)')
289
315
  assert_equal(11, point2_.x)
@@ -50,6 +50,8 @@ module RGeo
50
50
  def setup
51
51
  @factory = ::RGeo::Geos.factory
52
52
  @zfactory = ::RGeo::Geos.factory(:support_z_coordinate => true)
53
+ @mfactory = ::RGeo::Geos.factory(:support_m_coordinate => true)
54
+ @zmfactory = ::RGeo::Geos.factory(:support_z_coordinate => true, :support_m_coordinate => true)
53
55
  end
54
56
 
55
57
 
@@ -0,0 +1,85 @@
1
+ # -----------------------------------------------------------------------------
2
+ #
3
+ # Tests for the GEOS point implementation
4
+ #
5
+ # -----------------------------------------------------------------------------
6
+ # Copyright 2010 Daniel Azuma
7
+ #
8
+ # All rights reserved.
9
+ #
10
+ # Redistribution and use in source and binary forms, with or without
11
+ # modification, are permitted provided that the following conditions are met:
12
+ #
13
+ # * Redistributions of source code must retain the above copyright notice,
14
+ # this list of conditions and the following disclaimer.
15
+ # * Redistributions in binary form must reproduce the above copyright notice,
16
+ # this list of conditions and the following disclaimer in the documentation
17
+ # and/or other materials provided with the distribution.
18
+ # * Neither the name of the copyright holder, nor the names of any other
19
+ # contributors to this software, may be used to endorse or promote products
20
+ # derived from this software without specific prior written permission.
21
+ #
22
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ # POSSIBILITY OF SUCH DAMAGE.
33
+ # -----------------------------------------------------------------------------
34
+ ;
35
+
36
+
37
+ require 'test/unit'
38
+ require 'rgeo'
39
+
40
+
41
+ module RGeo
42
+ module Tests # :nodoc:
43
+ module Geos
44
+
45
+ class TestZMFactory < ::Test::Unit::TestCase # :nodoc:
46
+
47
+
48
+ def setup
49
+ @factory = ::RGeo::Geos.factory(:support_z_coordinate => true, :support_m_coordinate => true, :srid => 1000, :buffer_resolution => 2)
50
+ end
51
+
52
+
53
+ def test_factory_parts
54
+ assert_equal(1000, @factory.srid)
55
+ assert_equal(1000, @factory.z_factory.srid)
56
+ assert_equal(1000, @factory.m_factory.srid)
57
+ assert_equal(2, @factory.buffer_resolution)
58
+ assert_equal(2, @factory.z_factory.buffer_resolution)
59
+ assert_equal(2, @factory.m_factory.buffer_resolution)
60
+ assert(@factory.has_capability?(:z_coordinate))
61
+ assert(@factory.has_capability?(:m_coordinate))
62
+ assert(@factory.z_factory.has_capability?(:z_coordinate))
63
+ assert(!@factory.z_factory.has_capability?(:m_coordinate))
64
+ assert(!@factory.m_factory.has_capability?(:z_coordinate))
65
+ assert(@factory.m_factory.has_capability?(:m_coordinate))
66
+ end
67
+
68
+
69
+ def test_4d_point
70
+ point_ = @factory.point(1, 2, 3, 4)
71
+ assert_equal(Features::Point, point_.geometry_type)
72
+ assert_equal(3, point_.z)
73
+ assert_equal(4, point_.m)
74
+ assert_equal(3, point_.z_geometry.z)
75
+ assert_nil(point_.z_geometry.m)
76
+ assert_nil(point_.m_geometry.z)
77
+ assert_equal(4, point_.m_geometry.m)
78
+ end
79
+
80
+
81
+ end
82
+
83
+ end
84
+ end
85
+ end
@@ -59,6 +59,7 @@ module RGeo
59
59
  undef_method :test_geometrically_equal
60
60
  undef_method :test_empty_equal
61
61
  undef_method :test_not_equal
62
+ undef_method :test_empty_collection_boundary
62
63
 
63
64
 
64
65
  end
@@ -50,6 +50,8 @@ module RGeo
50
50
  def setup
51
51
  @factory = ::RGeo::Cartesian.simple_factory(:srid => 1)
52
52
  @zfactory = ::RGeo::Cartesian.simple_factory(:srid => 1, :support_z_coordinate => true)
53
+ @mfactory = ::RGeo::Cartesian.simple_factory(:srid => 1, :support_m_coordinate => true)
54
+ @zmfactory = ::RGeo::Cartesian.simple_factory(:srid => 1, :support_z_coordinate => true, :support_m_coordinate => true)
53
55
  end
54
56
 
55
57
 
@@ -76,7 +78,6 @@ module RGeo
76
78
  undef_method :test_within
77
79
  undef_method :test_contains
78
80
  undef_method :test_overlaps
79
- undef_method :test_convex_hull
80
81
  undef_method :test_intersection
81
82
  undef_method :test_union
82
83
  undef_method :test_difference
@@ -50,6 +50,8 @@ module RGeo
50
50
  def setup
51
51
  @factory = ::RGeo::Geography.simple_mercator
52
52
  @zfactory = ::RGeo::Geography.simple_mercator(:support_z_coordinate => true)
53
+ @mfactory = ::RGeo::Geography.simple_mercator(:support_m_coordinate => true)
54
+ @zmfactory = ::RGeo::Geography.simple_mercator(:support_z_coordinate => true, :support_m_coordinate => true)
53
55
  end
54
56
 
55
57
 
@@ -59,6 +59,8 @@ module RGeo
59
59
  undef_method :test_geometrically_equal
60
60
  undef_method :test_empty_equal
61
61
  undef_method :test_not_equal
62
+ undef_method :test_empty_collection_envelope
63
+ undef_method :test_empty_collection_boundary
62
64
 
63
65
 
64
66
  end
@@ -50,6 +50,8 @@ module RGeo
50
50
  def setup
51
51
  @factory = ::RGeo::Geography.simple_spherical
52
52
  @zfactory = ::RGeo::Geography.simple_spherical(:support_z_coordinate => true)
53
+ @mfactory = ::RGeo::Geography.simple_spherical(:support_m_coordinate => true)
54
+ @zmfactory = ::RGeo::Geography.simple_spherical(:support_z_coordinate => true, :support_m_coordinate => true)
53
55
  end
54
56
 
55
57
 
@@ -85,7 +87,6 @@ module RGeo
85
87
  undef_method :test_within
86
88
  undef_method :test_contains
87
89
  undef_method :test_overlaps
88
- undef_method :test_convex_hull
89
90
  undef_method :test_intersection
90
91
  undef_method :test_union
91
92
  undef_method :test_difference
data/tests/tc_oneoff.rb CHANGED
@@ -54,7 +54,6 @@ module RGeo
54
54
 
55
55
 
56
56
  def test_dummy
57
- RGeo::Shapefile
58
57
  end
59
58
 
60
59
 
@@ -46,10 +46,10 @@ module RGeo
46
46
 
47
47
 
48
48
  def setup
49
- @factory = ::RGeo::Cartesian.simple_factory(:srid => 1000)
50
- @factoryz = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_z_coordinate => true)
51
- @factorym = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_m_coordinate => true)
52
- @factoryzm = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_z_coordinate => true, :support_m_coordinate => true)
49
+ @factory = ::RGeo::Cartesian.preferred_factory(:srid => 1000)
50
+ @factoryz = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_z_coordinate => true)
51
+ @factorym = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_m_coordinate => true)
52
+ @factoryzm = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_z_coordinate => true, :support_m_coordinate => true)
53
53
  end
54
54
 
55
55
 
@@ -84,7 +84,7 @@ module RGeo
84
84
 
85
85
 
86
86
  def test_point_with_ewkb_zm
87
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
87
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
88
88
  parser_ = ::RGeo::WKRep::WKBParser.new(:default_factory => factory_, :support_ewkb => true)
89
89
  obj_ = parser_.parse_hex('00c00000013ff0000000000000400000000000000040080000000000004010000000000000')
90
90
  assert_equal(::RGeo::Features::Point, obj_.geometry_type)
@@ -114,7 +114,7 @@ module RGeo
114
114
 
115
115
 
116
116
  def test_point_with_wkb12_zm
117
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
117
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
118
118
  parser_ = ::RGeo::WKRep::WKBParser.new(:default_factory => factory_, :support_wkb12 => true)
119
119
  obj_ = parser_.parse_hex('0000000bb93ff0000000000000400000000000000040080000000000004010000000000000')
120
120
  assert_equal(::RGeo::Features::Point, obj_.geometry_type)
@@ -46,10 +46,10 @@ module RGeo
46
46
 
47
47
 
48
48
  def setup
49
- @factory = ::RGeo::Cartesian.simple_factory(:srid => 1000)
50
- @factoryz = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_z_coordinate => true)
51
- @factorym = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_m_coordinate => true)
52
- @factoryzm = ::RGeo::Cartesian.simple_factory(:srid => 1000, :support_z_coordinate => true, :support_m_coordinate => true)
49
+ @factory = ::RGeo::Cartesian.preferred_factory(:srid => 1000)
50
+ @factoryz = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_z_coordinate => true)
51
+ @factorym = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_m_coordinate => true)
52
+ @factoryzm = ::RGeo::Cartesian.preferred_factory(:srid => 1000, :support_z_coordinate => true, :support_m_coordinate => true)
53
53
  end
54
54
 
55
55
 
@@ -159,7 +159,7 @@ module RGeo
159
159
 
160
160
 
161
161
  def test_point_wkt12_m_with_factory_zm
162
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
162
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
163
163
  parser_ = ::RGeo::WKRep::WKTParser.new(:default_factory => factory_, :support_wkt12 => true)
164
164
  obj_ = parser_.parse('POINT M(1 2 3)')
165
165
  assert_equal(::RGeo::Features::Point, obj_.geometry_type)
@@ -178,7 +178,7 @@ module RGeo
178
178
 
179
179
 
180
180
  def test_point_wkt12_zm
181
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
181
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
182
182
  parser_ = ::RGeo::WKRep::WKTParser.new(:default_factory => factory_, :support_wkt12 => true)
183
183
  obj_ = parser_.parse('POINT ZM(1 2 3 4)')
184
184
  assert_equal(::RGeo::Features::Point, obj_.geometry_type)
@@ -188,7 +188,7 @@ module RGeo
188
188
 
189
189
 
190
190
  def test_point_wkt12_zm_not_enough_coords
191
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
191
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
192
192
  parser_ = ::RGeo::WKRep::WKTParser.new(:default_factory => factory_, :support_wkt12 => true)
193
193
  assert_raise(::RGeo::Errors::ParseError) do
194
194
  obj_ = parser_.parse('POINT ZM(1 2 3)')
@@ -290,7 +290,7 @@ module RGeo
290
290
 
291
291
 
292
292
  def test_linestring_wkt12_m
293
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
293
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
294
294
  parser_ = ::RGeo::WKRep::WKTParser.new(:default_factory => factory_, :support_wkt12 => true)
295
295
  obj_ = parser_.parse('LINESTRING M(1 2 3,5 6 7)')
296
296
  assert_equal(::RGeo::Features::LineString, obj_.geometry_type)
@@ -464,7 +464,7 @@ module RGeo
464
464
 
465
465
 
466
466
  def test_collection_wkt12_type_mismatch
467
- factory_ = ::RGeo::Cartesian.simple_factory(:support_z_coordinate => true, :support_m_coordinate => true)
467
+ factory_ = ::RGeo::Cartesian.preferred_factory(:support_z_coordinate => true, :support_m_coordinate => true)
468
468
  parser_ = ::RGeo::WKRep::WKTParser.new(:default_factory => factory_, :support_wkt12 => true)
469
469
  assert_raise(::RGeo::Errors::ParseError) do
470
470
  obj_ = parser_.parse('GEOMETRYCOLLECTION Z(POINT Z(-1 -2 0),LINESTRING M(1 2 0, 3 4 0, 5 6 0))')