1 // Boost.Geometry (aka GGL, Generic Geometry Library)
3 // Copyright (c) 2014-2015, Oracle and/or its affiliates.
5 // Licensed under the Boost Software License version 1.0.
6 // http://www.boost.org/users/license.html
8 // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
12 #ifndef BOOST_TEST_MODULE
13 #define BOOST_TEST_MODULE test_union_linear_linear
16 #ifdef BOOST_GEOMETRY_TEST_DEBUG
17 #define BOOST_GEOMETRY_DEBUG_TURNS
18 #define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
21 #include <boost/test/included/unit_test.hpp>
23 #include "test_union_linear_linear.hpp"
25 #include <boost/geometry/geometries/linestring.hpp>
26 #include <boost/geometry/geometries/multi_linestring.hpp>
27 #include <boost/geometry/algorithms/union.hpp>
29 typedef bg::model::point
<double,2,bg::cs::cartesian
> point_type
;
30 typedef bg::model::segment
<point_type
> segment_type
;
31 typedef bg::model::linestring
<point_type
> linestring_type
;
32 typedef bg::model::multi_linestring
<linestring_type
> multi_linestring_type
;
36 //===========================================================================
37 //===========================================================================
38 //===========================================================================
41 BOOST_AUTO_TEST_CASE( test_union_linestring_linestring
)
43 #ifdef BOOST_GEOMETRY_TEST_DEBUG
44 std::cout
<< std::endl
<< std::endl
<< std::endl
;
45 std::cout
<< "*** LINESTRING / LINESTRING UNION ***" << std::endl
;
46 std::cout
<< std::endl
;
49 typedef linestring_type L
;
50 typedef multi_linestring_type ML
;
52 typedef test_union_of_geometries
<L
, L
, ML
> tester
;
55 (from_wkt
<L
>("LINESTRING(0 0,1 1,2 1,3 2)"),
56 from_wkt
<L
>("LINESTRING(0 2,1 1,2 1,3 0)"),
57 from_wkt
<ML
>("MULTILINESTRING((0 0,1 1,2 1,3 2),\
58 (0 2,1 1),(2 1,3 0))"),
59 from_wkt
<ML
>("MULTILINESTRING((0 2,1 1,2 1,3 0),\
60 (0 0,1 1),(2 1,3 2))"),
64 (from_wkt
<L
>("LINESTRING(0 0,5 0)"),
65 from_wkt
<L
>("LINESTRING(3 0,4 0)"),
66 from_wkt
<ML
>("MULTILINESTRING((0 0,5 0))"),
67 from_wkt
<ML
>("MULTILINESTRING((3 0,4 0),(0 0,3 0),(4 0,5 0))"),
71 (from_wkt
<L
>("LINESTRING(3 0,4 0)"),
72 from_wkt
<L
>("LINESTRING(0 0,5 0)"),
73 from_wkt
<ML
>("MULTILINESTRING((3 0,4 0),(0 0,3 0),(4 0,5 0))"),
74 from_wkt
<ML
>("MULTILINESTRING((0 0,5 0))"),
78 (from_wkt
<L
>("LINESTRING(0 0,4 0)"),
79 from_wkt
<L
>("LINESTRING(3 0,6 0)"),
80 from_wkt
<ML
>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
81 from_wkt
<ML
>("MULTILINESTRING((3 0,6 0),(0 0,3 0))"),
85 (from_wkt
<L
>("LINESTRING(3 0,6 0)"),
86 from_wkt
<L
>("LINESTRING(0 0,4 0)"),
87 from_wkt
<ML
>("MULTILINESTRING((3 0,6 0),(0 0,3 0))"),
88 from_wkt
<ML
>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
92 (from_wkt
<L
>("LINESTRING(0 0,6 0)"),
93 from_wkt
<L
>("LINESTRING(0 0,4 0)"),
94 from_wkt
<ML
>("MULTILINESTRING((0 0,6 0))"),
95 from_wkt
<ML
>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
99 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
100 from_wkt
<L
>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
101 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),\
102 (0 0,1 1,2 0,3 1,4 0),\
103 (5 0,6 1,7 -1,8 0))"),
104 from_wkt
<ML
>("MULTILINESTRING((0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0),\
105 (0 0,4 0),(5 0,20 0))"),
109 (from_wkt
<L
>("LINESTRING(-20 0,20 0)"),
110 from_wkt
<L
>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
111 from_wkt
<ML
>("MULTILINESTRING((-20 0,20 0),\
112 (0 0,1 1,2 0,3 1,4 0),\
113 (5 0,6 1,7 -1,8 0))"),
114 from_wkt
<ML
>("MULTILINESTRING((0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0),\
115 (-20 0,4 0),(5 0,20 0))"),
119 (from_wkt
<L
>("LINESTRING(0 0,4 0)"),
120 from_wkt
<L
>("LINESTRING(2 0,4 0)"),
121 from_wkt
<ML
>("MULTILINESTRING((0 0,4 0))"),
122 from_wkt
<ML
>("MULTILINESTRING((2 0,4 0),(0 0,2 0))"),
126 (from_wkt
<L
>("LINESTRING(0 0,2 0)"),
127 from_wkt
<L
>("LINESTRING(4 0,5 0)"),
128 from_wkt
<ML
>("MULTILINESTRING((0 0,2 0),(4 0,5 0))"),
132 (from_wkt
<L
>("LINESTRING(0 0,2 0)"),
133 from_wkt
<L
>("LINESTRING(2 0,5 0)"),
134 from_wkt
<ML
>("MULTILINESTRING((0 0,2 0),(2 0,5 0))"),
138 (from_wkt
<L
>("LINESTRING(0 0,1 0,4 0)"),
139 from_wkt
<L
>("LINESTRING(3 0,5 0)"),
140 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,4 0),(4 0,5 0))"),
141 from_wkt
<ML
>("MULTILINESTRING((3 0,5 0),(0 0,1 0,3 0))"),
145 (from_wkt
<L
>("LINESTRING(0 0,1 0,4 0)"),
146 from_wkt
<L
>("LINESTRING(3 0,4 0,5 0)"),
147 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,4 0),(4 0,5 0))"),
148 from_wkt
<ML
>("MULTILINESTRING((3 0,4 0,5 0),(0 0,1 0,3 0))"),
152 (from_wkt
<L
>("LINESTRING(0 0,6 0)"),
153 from_wkt
<L
>("LINESTRING(2 0,4 0,5 0)"),
154 from_wkt
<ML
>("MULTILINESTRING((0 0,6 0))"),
155 from_wkt
<ML
>("MULTILINESTRING((2 0,4 0,5 0),(0 0,2 0),(5 0,6 0))"),
159 (from_wkt
<L
>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
160 from_wkt
<L
>("LINESTRING(-1 6,0 5,15 5)"),
161 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,5 5,10 5,15 0),\
162 (-1 6,0 5,5 5),(10 5,15 5))"),
163 from_wkt
<ML
>("MULTILINESTRING((-1 6,0 5,15 5),\
164 (0 0,1 0,5 5),(10 5,15 0))"),
168 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
169 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
170 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0),\
171 (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
172 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
173 (1 0,5 5,10 5,15 0))"),
177 (from_wkt
<L
>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
178 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
179 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,5 5,10 5,15 0,20 0),\
180 (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
181 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(1 0,5 5,10 5,15 0))"),
185 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
186 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
187 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1),\
188 (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
189 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
190 (1 0,5 5,10 5,15 0),(20 0,25 1))"),
194 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
195 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
196 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0),\
197 (-1 0,0 0),(1 0,15 0))"),
198 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
199 (1 0,5 5,10 5,15 0))"),
203 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
204 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
205 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
206 (-1 0,0 0),(1 0,15 0))"),
207 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
208 (1 0,5 5,10 5,15 0),(30 0,31 0))"),
212 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
213 from_wkt
<L
>("LINESTRING(-1 0,25 0,30 0)"),
214 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
215 (-1 0,0 0),(1 0,15 0))"),
216 from_wkt
<ML
>("MULTILINESTRING((-1 0,25 0,30 0),(-1 1,0 0),\
217 (1 0,5 5,10 5,15 0),(30 0,31 0))"),
221 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
222 from_wkt
<L
>("LINESTRING(-1 0,19 0,30 0)"),
223 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
224 (-1 0,0 0),(1 0,15 0))"),
225 from_wkt
<ML
>("MULTILINESTRING((-1 0,19 0,30 0),(-1 1,0 0),\
226 (1 0,5 5,10 5,15 0),(30 0,31 0))"),
230 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
231 from_wkt
<L
>("LINESTRING(-1 0,30 0)"),
232 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,\
233 30 0,31 1),(-1 0,0 0),(1 0,15 0))"),
234 from_wkt
<ML
>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
235 (1 0,5 5,10 5,15 0),(30 0,31 1))"),
239 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
240 from_wkt
<L
>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
241 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,\
242 30 0,31 1),(-1 -1,0 0),(1 0,2 1,3 0,15 0))"),
243 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,1 0,2 1,3 0,30 0),\
244 (-1 1,0 0),(1 0,5 5,10 5,15 0),(30 0,31 1))"),
248 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
250 from_wkt
<L
>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
251 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
252 30 0,31 1),(-1 -1,0 0),(2 0,2.5 1,3 0),(4 0,15 0))"),
253 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0),\
254 (-1 1,0 0),(2 0,3 0),(4 0,5 5,10 5,15 0),(30 0,31 1))"),
258 (from_wkt
<L
>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
259 from_wkt
<L
>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
260 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0),\
261 (-1 -1,0 0),(2 0,2.5 1,3 0),(4 0,15 0))"),
262 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0),\
263 (-1 1,0 0),(2 0,3 0),(4 0,5 5,10 5,15 0),(30 0,31 0))"),
267 (from_wkt
<L
>("LINESTRING(0 0,2 0,3 1)"),
268 from_wkt
<L
>("LINESTRING(0 0,2 0,3 1)"),
269 from_wkt
<ML
>("MULTILINESTRING((0 0,2 0,3 1))"),
273 (from_wkt
<L
>("LINESTRING(0 0,2 0,3 1)"),
274 from_wkt
<L
>("LINESTRING(3 1,2 0,0 0)"),
275 from_wkt
<ML
>("MULTILINESTRING((0 0,2 0,3 1))"),
276 from_wkt
<ML
>("MULTILINESTRING((3 1,2 0,0 0))"),
280 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
281 from_wkt
<L
>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
282 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 1,3 5,4 0),(4 0,5 10))"),
283 from_wkt
<ML
>("MULTILINESTRING((1 0,2 1,3 5,4 0,5 10),(0 0,1 0))"),
287 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
288 from_wkt
<L
>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
289 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 0,2.5 0,3 1))"),
290 from_wkt
<ML
>("MULTILINESTRING((0 0,2 0,2.5 0,3 1))"),
294 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
295 from_wkt
<L
>("LINESTRING(1 0,2 1,3 5)"),
296 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 1,3 5,4 0))"),
297 from_wkt
<ML
>("MULTILINESTRING((1 0,2 1,3 5),(0 0,1 0),(3 5,4 0))"),
301 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 1,3 2)"),
302 from_wkt
<L
>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
303 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 1,3 2),(3 2,4 5))"),
304 from_wkt
<ML
>("MULTILINESTRING((0.5 0,1 0,3 2,4 5),(0 0,0.5 0))"),
308 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 1,3 2)"),
309 from_wkt
<L
>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
310 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 1,3 2),(4 5,3 2))"),
311 from_wkt
<ML
>("MULTILINESTRING((4 5,3 2,1 0,0.5 0),(0 0,0.5 0))"),
315 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1,30 1)"),
316 from_wkt
<L
>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
317 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1,30 1),(1 1,2 0,3 1,20 1))"),
318 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,3 1,20 1,25 1),\
319 (0 0,10 0,20 1),(25 1,30 1))"),
323 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
324 from_wkt
<L
>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
325 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0),\
326 (1 1,2 0,3 1,20 1,25 0))"),
330 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
331 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
332 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0,5 1))"),
333 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 1),\
334 (0 0,1 0),(5 0,30 0))"),
338 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
339 from_wkt
<L
>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
340 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 1,4 0,4 1,20 1,5 0))"),
341 from_wkt
<ML
>("MULTILINESTRING((5 1,4 0,4 1,20 1,5 0,1 0),\
342 (0 0,1 0),(5 0,30 0))"),
346 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
347 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
348 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
349 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0),(0 0,1 0),\
354 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
355 from_wkt
<L
>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
356 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(4 0,4 1,20 1,5 0))"),
357 from_wkt
<ML
>("MULTILINESTRING((4 0,4 1,20 1,5 0,1 0),(0 0,1 0),\
362 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
363 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
364 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
365 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0),\
366 (0 0,1 0),(5 0,30 0))"),
370 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
371 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
372 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(5 0,6 1))"),
373 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0,6 1),\
374 (0 0,1 0),(5 0,30 0))"),
378 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
379 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
380 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
381 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,3 0),\
382 (0 0,1 0),(5 0,30 0))"),
386 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
387 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
388 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(3 0,3 1))"),
389 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,3 0,3 1),\
390 (0 0,1 0),(5 0,30 0))"),
394 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
395 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
396 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(5 0,5 1))"),
397 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0,5 1),\
398 (0 0,1 0),(5 0,30 0))"),
402 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
403 from_wkt
<L
>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
404 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 1,5 0),\
405 (4 0,4 1,20 1,5 0))"),
406 from_wkt
<ML
>("MULTILINESTRING((5 1,5 0,4 0,4 1,20 1,5 0,1 0),\
407 (0 0,1 0),(5 0,30 0))"),
411 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
412 from_wkt
<L
>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
413 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,5 0,5 1))"),
414 from_wkt
<ML
>("MULTILINESTRING((1 0,5 0,20 1,4 1,5 0,5 1),\
415 (0 0,1 0),(5 0,30 0))"),
419 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
420 from_wkt
<L
>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
421 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(5 1,5 0,4 1,20 1,5 0))"),
422 from_wkt
<ML
>("MULTILINESTRING((5 1,5 0,4 1,20 1,5 0,1 0),\
423 (0 0,1 0),(5 0,30 0))"),
427 (from_wkt
<L
>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
428 from_wkt
<L
>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
429 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0,30 30,10 30,10 -10,15 0,40 0),\
430 (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
431 from_wkt
<ML
>("MULTILINESTRING((5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0),\
432 (0 0,20 0),(25 0,30 0,30 30,10 30),\
433 (10 0,10 -10,15 0,20 0),(25 0,35 0))"),
437 (from_wkt
<L
>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
438 from_wkt
<L
>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
439 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0,30 30,10 30,10 -10,15 0,40 0),\
440 (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
441 from_wkt
<ML
>("MULTILINESTRING((5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0),\
442 (0 0,15 0),(30 0,30 30,10 30),(10 0,10 -10,15 0))"),
446 (from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
447 from_wkt
<L
>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
448 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),\
449 (2 2,5 -1,15 2,18 0))"),
450 from_wkt
<ML
>("MULTILINESTRING((2 2,5 -1,15 2,18 0,20 0),\
451 (0 0,18 0),(20 0,30 0))"),
456 (from_wkt
<L
>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
457 from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
458 from_wkt
<ML
>("MULTILINESTRING((2 2,5 -1,15 2,18 0,20 0),\
459 (0 0,18 0),(20 0,30 0))"),
460 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),\
461 (2 2,5 -1,15 2,18 0))"),
466 (from_wkt
<L
>("LINESTRING(-2 -2,-4 0,1 -8,-2 6,8 5,-7 -8,3 0,\
468 from_wkt
<L
>("LINESTRING(-5 -4,3 0,4 -1,7 -4,2 -1,-4 -1,-2 6)"),
469 from_wkt
<ML
>("MULTILINESTRING((-2 -2,-4 0,1 -8,-2 6,8 5,-7 -8,3 0,\
470 4 -1,-7 10,-4 10),(-5 -4,3 0),\
471 (4 -1,7 -4,2 -1,-4 -1,-2 6))"),
472 from_wkt
<ML
>("MULTILINESTRING((-5 -4,3 0,4 -1,7 -4,2 -1,-4 -1,-2 6),\
473 (-2 -2,-4 0,1 -8,-2 6,8 5,-7 -8,3 0),\
474 (3 0,-7 10,-4 10))"),
481 BOOST_AUTO_TEST_CASE( test_union_linestring_multilinestring
)
483 #ifdef BOOST_GEOMETRY_TEST_DEBUG
484 std::cout
<< std::endl
<< std::endl
<< std::endl
;
485 std::cout
<< "*** LINESTRING / MULTILINESTRING UNION ***"
487 std::cout
<< std::endl
;
490 typedef linestring_type L
;
491 typedef multi_linestring_type ML
;
493 typedef test_union_of_geometries
<L
, ML
, ML
> tester
;
495 // disjoint linestrings
497 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1)"),
498 from_wkt
<ML
>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
499 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 2,4 3),\
505 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1)"),
506 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
507 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0),(1 1,3 0))"),
512 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1)"),
513 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
514 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0),(1 1,3 0))"),
519 (from_wkt
<L
>("LINESTRING(0 0,10 0,20 1)"),
520 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0))"),
521 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0))"),
526 (from_wkt
<L
>("LINESTRING(0 0,101 0)"),
527 from_wkt
<ML
>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
528 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(-1 -1,1 0),(101 0,200 -1))"),
533 (from_wkt
<L
>("LINESTRING(-1 1,0 0,101 0)"),
534 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
535 (19 -1,20 0,101 0,200 -1))"),
536 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,101 0),(-1 -1,0 0),\
537 (19 -1,20 0),(101 0,200 -1))"),
542 (from_wkt
<L
>("LINESTRING(0 0,101 0)"),
543 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
544 (19 -1,20 0,101 0,200 -1))"),
545 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(-1 -1,0 0),\
546 (19 -1,20 0),(101 0,200 -1))"),
551 (from_wkt
<L
>("LINESTRING(0 0,101 0)"),
552 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0),\
553 (-1 -1,1 0,101 0,200 -1))"),
554 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(0 1,1 1,2 0),\
555 (-1 -1,1 0),(101 0,200 -1))"),
560 (from_wkt
<L
>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
561 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0.5),\
562 (-1 -1,1 0,101 0,200 -1))"),
563 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0),\
564 (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"),
569 (from_wkt
<L
>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
570 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
571 (-1 -1,1 0,101 0,200 -1))"),
572 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0),\
573 (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
579 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
580 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
581 (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
582 (3 1,4 0,16 0,17 1))"),
583 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
584 (1 1,2 0),(18 0,19 1),(2 1,3 0),(17 0,18 1),\
585 (3 1,4 0),(16 0,17 1))"),
590 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
591 from_wkt
<ML
>("MULTILINESTRING((1 0,19 0,20 1),\
592 (2 0,18 0,19 1),(3 0,17 0,18 1),\
594 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(19 0,20 1),(18 0,19 1),\
595 (17 0,18 1),(16 0,17 1))"),
600 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
601 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
602 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
603 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),\
604 (19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
605 (17 0,18 1,17 1,16 0),(4 0,3 1))"),
610 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
611 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
613 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
619 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
620 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
622 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
628 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
629 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
630 (2 2,4 2,5 0,6 0))"),
631 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
637 (from_wkt
<L
>("LINESTRING(0 0,20 0)"),
638 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
639 (6 0,5 0,4 2,2 2))"),
640 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
646 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
647 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
648 (2 2,4 0,5 2,20 2,25 0))"),
649 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
650 (2 2,4 0,5 2,20 2,25 0))"),
655 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
656 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
657 (2 2,4 0,5 2,20 2,25 0,26 2))"),
658 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
659 (2 2,4 0,5 2,20 2,25 0,26 2))"),
664 (from_wkt
<L
>("LINESTRING(0 0,30 0)"),
665 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
666 (2 2,5 -1,15 2,18 0))"),
667 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
668 (2 2,5 -1,15 2,18 0))"),
673 (from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
674 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
675 (2 2,5 -1,15 2,18 0))"),
676 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
677 (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
682 (from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
683 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
684 (2 2,5 -1,15 2,18 0,20 0))"),
685 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
686 (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
691 (from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
692 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
693 (2 2,5 -1,15 2,25 0,26 0))"),
694 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
695 (19 0,20 1),(2 2,5 -1,15 2,25 0))"),
700 (from_wkt
<L
>("LINESTRING(0 0,18 0,19 0,30 0)"),
701 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
702 (2 2,5 -1,15 2,25 0,21 0))"),
703 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
704 (19 0,20 1),(2 2,5 -1,15 2,25 0))"),
711 BOOST_AUTO_TEST_CASE( test_union_multilinestring_linestring
)
713 #ifdef BOOST_GEOMETRY_TEST_DEBUG
714 std::cout
<< std::endl
<< std::endl
<< std::endl
;
715 std::cout
<< "*** MULTILINESTRING / LINESTRING UNION ***"
717 std::cout
<< std::endl
;
720 typedef linestring_type L
;
721 typedef multi_linestring_type ML
;
723 typedef test_union_of_geometries
<ML
, L
, ML
> tester
;
725 // disjoint linestrings
727 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
728 from_wkt
<L
>("LINESTRING(1 1,2 2,4 3)"),
729 from_wkt
<ML
>("MULTILINESTRING((1 1,2 2,4 3),(0 0,10 0,20 1),(1 0,7 0))"),
734 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
735 from_wkt
<L
>("LINESTRING(1 1,2 0,4 0)"),
736 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(0 0,2 0),(4 0,10 0,20 1),\
737 (1 0,2 0),(4 0,7 0))"),
742 (from_wkt
<ML
>("MULTILINESTRING((0 0,101 0))"),
743 from_wkt
<L
>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
744 from_wkt
<ML
>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
749 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
750 from_wkt
<L
>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
751 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
752 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
753 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1),\
754 (0 0,1 0),(19 0,20 0))"),
765 BOOST_AUTO_TEST_CASE( test_union_multilinestring_multilinestring
)
767 #ifdef BOOST_GEOMETRY_TEST_DEBUG
768 std::cout
<< std::endl
<< std::endl
<< std::endl
;
769 std::cout
<< "*** MULTILINESTRING / MULTILINESTRING UNION ***"
771 std::cout
<< std::endl
;
774 typedef multi_linestring_type ML
;
776 typedef test_union_of_geometries
<ML
, ML
, ML
> tester
;
778 // disjoint linestrings
780 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
781 from_wkt
<ML
>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
782 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
783 (1 1,2 2,4 3),(1 1,2 2,5 3))"),
788 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
789 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
790 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
791 (1 1,2 0),(1 1,3 0))"),
792 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0),\
793 (0 0,2 0),(4 0,10 0,20 1),(1 0,2 0),(4 0,7 0))"),
798 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
799 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
800 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
801 (1 1,2 0),(1 1,3 0))"),
802 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0),\
803 (0 0,2 0),(5 0,10 0,20 1),(1 0,2 0),(5 0,7 0))"),
808 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
809 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0))"),
810 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
812 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),(0 0,2 0),\
813 (4 0,10 0,20 1),(1 0,2 0),(4 0,7 0))"),
818 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
819 (10 10,20 10,30 20))"),
820 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
821 (10 20,15 10,25 10,30 15))"),
822 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
823 (10 10,20 10,30 20),(1 1,2 0),(10 20,15 10),\
824 (20 10,25 10,30 15))"),
825 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
826 (10 20,15 10,25 10,30 15),(0 0,2 0),(4 0,10 0,20 1),\
827 (1 0,2 0),(4 0,7 0),(10 10,15 10),(20 10,30 20))"),
833 (from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
834 (10 10,20 10,30 20))"),
835 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
836 (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
837 (10 20,15 10,25 10,30 15))"),
838 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
839 (10 10,20 10,30 20),(1 1,2 0),\
840 (-1 -1,0 0),(9 0,11 10),(12 10,13 3),(10 20,15 10),\
841 (20 10,25 10,30 15))"),
842 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
843 (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
844 (10 20,15 10,25 10,30 15),(9 0,10 0,13 3),\
845 (15 5,20 10),(10 10,11 10),(12 10,15 10),(20 10,30 20))"),
850 (from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
851 (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
852 (10 20,15 10,25 10,30 15))"),
853 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
854 (10 10,20 10,30 20))"),
855 from_wkt
<ML
>("MULTILINESTRING((1 1,2 0,4 0),\
856 (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
857 (10 20,15 10,25 10,30 15),(9 0,10 0,13 3),\
858 (15 5,20 10),(10 10,11 10),(12 10,15 10),\
860 from_wkt
<ML
>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
861 (10 10,20 10,30 20),(1 1,2 0),(-1 -1,0 0), \
862 (9 0,11 10),(12 10,13 3),(10 20,15 10),\
863 (20 10,25 10,30 15))"),
868 (from_wkt
<ML
>("MULTILINESTRING((0 0,101 0))"),
869 from_wkt
<ML
>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
870 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(-1 -1,1 0),(101 0,200 -1))"),
871 from_wkt
<ML
>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
876 (from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,101 0))"),
877 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
878 (19 -1,20 0,101 0,200 -1))"),
879 from_wkt
<ML
>("MULTILINESTRING((-1 1,0 0,101 0),(-1 -1,0 0),\
880 (19 -1,20 0),(101 0,200 -1))"),
881 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
882 (19 -1,20 0,101 0,200 -1),(-1 1,0 0))"),
887 (from_wkt
<ML
>("MULTILINESTRING((0 0,101 0))"),
888 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
889 (19 -1,20 0,101 0,200 -1))"),
890 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(-1 -1,0 0),\
891 (19 -1,20 0),(101 0,200 -1))"),
892 from_wkt
<ML
>("MULTILINESTRING((-1 -1,0 0,50 0),\
893 (19 -1,20 0,101 0,200 -1))"),
898 (from_wkt
<ML
>("MULTILINESTRING((0 0,101 0))"),
899 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0),\
900 (-1 -1,1 0,101 0,200 -1))"),
901 from_wkt
<ML
>("MULTILINESTRING((0 0,101 0),(0 1,1 1,2 0),\
902 (-1 -1,1 0),(101 0,200 -1))"),
903 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0),\
904 (-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
909 (from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
910 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0.5),\
911 (-1 -1,1 0,101 0,200 -1))"),
912 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0),\
913 (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"),
914 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,2 0.5),\
915 (-1 -1,1 0,101 0,200 -1),(0 0,1 0,2 0.5,3 0))"),
920 (from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
921 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
922 (-1 -1,1 0,101 0,200 -1))"),
923 from_wkt
<ML
>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0),\
924 (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
926 from_wkt
<ML
>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
927 (-1 -1,1 0,101 0,200 -1),(0 0,1 0),(1.5 0,2 0.5,3 0))"),
932 (from_wkt
<ML
>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
934 from_wkt
<ML
>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
935 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
936 (-1 -1,1 0,101 0,200 -1))"),
937 from_wkt
<ML
>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
938 (0 0,101 0),(1 0,1 1),(2 1,3 0),(4 0,5 1),(6 1,7 0),\
939 (8 0,9 1),(10 1,11 0),(12 0,13 1),(14 1,15 0),\
940 (-1 -1,1 0),(101 0,200 -1))"),
941 from_wkt
<ML
>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
942 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
943 (-1 -1,1 0,101 0,200 -1),(0 0,1 1),(2 1,5 1),\
944 (6 1,9 1),(10 1,13 1),(14 1,100 1,101 0),(0 0,1 0))"),
949 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
950 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
951 (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
952 (3 1,4 0,16 0,17 1))"),
953 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
954 (1 1,2 0),(18 0,19 1),(2 1,3 0),(17 0,18 1),\
955 (3 1,4 0),(16 0,17 1))"),
956 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
957 (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
958 (3 1,4 0,16 0,17 1),(0 0,1 0),(19 0,20 0))"),
963 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
964 from_wkt
<ML
>("MULTILINESTRING((1 0,19 0,20 1),\
965 (2 0,18 0,19 1),(3 0,17 0,18 1),\
967 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(19 0,20 1),(18 0,19 1),\
968 (17 0,18 1),(16 0,17 1))"),
969 from_wkt
<ML
>("MULTILINESTRING((1 0,19 0,20 1),\
970 (2 0,18 0,19 1),(3 0,17 0,18 1),\
971 (4 0,16 0,17 1),(0 0,1 0),(19 0,20 0))"),
976 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
977 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
978 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
979 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),\
980 (19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
981 (17 0,18 1,17 1,16 0),(4 0,3 1))"),
982 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
983 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1),\
984 (0 0,1 0),(19 0,20 0))"),
989 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
990 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
992 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
994 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
995 (2 2,4 2,6 0),(0 0,1 0),(19 0,20 0))"),
1000 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
1001 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1003 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
1005 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1006 (6 0,4 2,2 2),(0 0,1 0),(19 0,20 0))"),
1011 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
1012 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1013 (2 2,4 2,5 0,6 0))"),
1014 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
1016 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1017 (2 2,4 2,5 0,6 0),(0 0,1 0),(19 0,20 0))"),
1022 (from_wkt
<ML
>("MULTILINESTRING((0 0,20 0))"),
1023 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1024 (6 0,5 0,4 2,2 2))"),
1025 from_wkt
<ML
>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
1027 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1028 (6 0,5 0,4 2,2 2),(0 0,1 0),(19 0,20 0))"),
1033 (from_wkt
<ML
>("MULTILINESTRING((0 0,30 0))"),
1034 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1035 (2 2,4 0,5 2,20 2,25 0))"),
1036 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
1037 (2 2,4 0,5 2,20 2,25 0))"),
1038 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1039 (2 2,4 0,5 2,20 2,25 0),(0 0,1 0),(19 0,30 0))"),
1044 (from_wkt
<ML
>("MULTILINESTRING((0 0,30 0))"),
1045 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1046 (2 2,4 0,5 2,20 2,25 0,26 2))"),
1047 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
1048 (2 2,4 0,5 2,20 2,25 0,26 2))"),
1049 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1050 (2 2,4 0,5 2,20 2,25 0,26 2),(0 0,1 0),(19 0,30 0))"),
1055 (from_wkt
<ML
>("MULTILINESTRING((0 0,30 0))"),
1056 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1057 (2 2,5 -1,15 2,18 0))"),
1058 from_wkt
<ML
>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
1059 (2 2,5 -1,15 2,18 0))"),
1060 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1061 (2 2,5 -1,15 2,18 0),(0 0,1 0),(19 0,30 0))"),
1066 (from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
1067 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1068 (2 2,5 -1,15 2,18 0))"),
1069 from_wkt
<ML
>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
1070 (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
1071 from_wkt
<ML
>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
1072 (2 2,5 -1,15 2,18 0),(0 0,1 0),(19 0,30 0))"),