PageRenderTime 45ms CodeModel.GetById 12ms app.highlight 27ms RepoModel.GetById 1ms app.codeStats 1ms

/Src/Dependencies/Boost/libs/geometry/test/algorithms/overlay/overlay_common.hpp

http://hadesmem.googlecode.com/
C++ Header | 464 lines | 315 code | 98 blank | 51 comment | 50 complexity | 96a281e91e3685a378eb304f4132e405 MD5 | raw file
  1// Boost.Geometry (aka GGL, Generic Geometry Library)
  2//
  3// Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
  4// Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
  5// Use, modification and distribution is subject to the Boost Software License,
  6// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  7// http://www.boost.org/LICENSE_1_0.txt)
  8
  9
 10#ifndef BOOST_GEOMETRY_TEST_OVERLAY_COMMON_HPP
 11#define BOOST_GEOMETRY_TEST_OVERLAY_COMMON_HPP
 12
 13
 14#if defined(_MSC_VER)
 15// We deliberately mix float/double's here so turn off warning
 16#pragma warning( disable : 4244 )
 17
 18#endif // defined(_MSC_VER)
 19
 20
 21
 22#include <boost/geometry/algorithms/correct.hpp>
 23#include <boost/geometry/geometries/geometries.hpp>
 24
 25#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
 26
 27
 28#include <boost/geometry/domains/gis/io/wkt/read_wkt.hpp>
 29#include <boost/geometry/domains/gis/io/wkt/write_wkt.hpp>
 30
 31
 32#if defined(TEST_WITH_SVG)
 33#  include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
 34#endif
 35
 36BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian);
 37
 38
 39
 40template <typename G1, typename G2, typename Functor, typename T>
 41void test_overlay(std::string const& id, T const& expected,
 42            std::string const& wkt1, std::string const& wkt2,
 43            double precision = 0.001)
 44{
 45    if (wkt1.empty() || wkt2.empty())
 46    {
 47        return;
 48    }
 49
 50    G1 g1;
 51    bg::read_wkt(wkt1, g1);
 52
 53    G2 g2;
 54    bg::read_wkt(wkt2, g2);
 55
 56    bg::correct(g1);
 57    bg::correct(g2);
 58
 59    //std::cout << bg::wkt(g1) << std::endl;
 60    //std::cout << bg::wkt(g2) << std::endl;
 61
 62    // Try the overlay-function in both ways
 63    std::string caseid = id;
 64//goto case_reversed;
 65
 66#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION
 67    std::cout << std::endl << std::endl << "# " << caseid << std::endl;
 68#endif
 69    Functor::template apply(caseid, expected, g1, g2, precision);
 70
 71#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION
 72    return;
 73#endif
 74
 75//case_reversed:
 76#if ! defined(BOOST_GEOMETRY_TEST_OVERLAY_NOT_EXCHANGED)
 77    caseid = id + "_rev";
 78#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION
 79    std::cout << std::endl << std::endl << "# " << caseid << std::endl;
 80#endif
 81
 82    Functor::template apply(caseid, expected, g2, g1, precision);
 83#endif
 84}
 85
 86
 87#if ! defined(BOOST_GEOMETRY_TEST_MULTI)
 88
 89template <typename P, typename Functor, typename T>
 90void test_all(std::vector<T> const& expected)
 91{
 92    typedef bg::model::polygon<P> polygon;
 93    typedef bg::model::linestring<P> linestring;
 94    typedef bg::model::box<P> box;
 95
 96    // compilation test only, will not output
 97    //test_overlay<box, polygon, Functor>("", "", "", "");
 98    typename boost::range_const_iterator<std::vector<T> >::type iterator
 99        = boost::begin(expected);
100
101
102#ifndef ONLY_CASE_BRANDON
103
104    BOOST_ASSERT(iterator != boost::end(expected));
105    test_overlay<polygon, polygon, Functor, T>("1", *iterator,
106            "POLYGON((0 1,2 5,5 3,0 1))",
107            "POLYGON((3 0,0 3,4 5,3 0))");
108    iterator++;
109
110
111    BOOST_ASSERT(iterator != boost::end(expected));
112    test_overlay<polygon, polygon, Functor, T>("2", *iterator,
113            "POLYGON((0 2,2 5,5 3,3 0,0 2))",
114            "POLYGON((0 4,4 5,5 1,1 0,0 4))");
115    iterator++;
116
117
118    BOOST_ASSERT(iterator != boost::end(expected));
119    test_overlay<polygon, polygon, Functor, T>("3", *iterator,
120            "POLYGON((1 2,2 4,4 3,3 1,1 2))",
121            "POLYGON((1 1,1 4,4 4,4 1,1 1))");
122    test_overlay<polygon, box, Functor>("3b", *iterator,
123            "POLYGON((1 2,2 4,4 3,3 1,1 2))",
124            "BOX(1 1,4 4)");
125    iterator++;
126
127
128    BOOST_ASSERT(iterator != boost::end(expected));
129    test_overlay<polygon, polygon, Functor, T>("4", *iterator,
130            "POLYGON((0 2,2 5,5 3,3 0,0 2))",
131            "POLYGON((0 4,4 5,5 1,1 0,0 4),(1 1,2 1,2 2,1 2,1 1),(3 3,4 3,4 4,3 4,3 3))");
132    iterator++;
133
134
135    BOOST_ASSERT(iterator != boost::end(expected));
136    test_overlay<polygon, polygon, Functor, T>("5", *iterator,
137            "POLYGON((0 4,1 5,2.5 4,3.5 5,5 4,4 3,5 2,4 1,3.5 0,3 1,2.5 0,2 1,1.5 0,1 3.5,0.25 3,1 2.5,0 2,0 4))",
138            "POLYGON((0.5 0.5,0.5 4.5,4.5 4.5,4.5 0.5,0.5 0.5))"
139            );
140    test_overlay<polygon, box, Functor>("5b", *iterator,
141            "POLYGON((0 4,1 5,2.5 4,3.5 5,5 4,4 3,5 2,4 1,3.5 0,3 1,2.5 0,2 1,1.5 0,1 3.5,0.25 3,1 2.5,0 2,0 4))",
142            "BOX(0.5 0.5,4.5 4.5)"
143            );
144    iterator++;
145
146
147    BOOST_ASSERT(iterator != boost::end(expected));
148    test_overlay<polygon, polygon, Functor, T>("6", *iterator,
149            "POLYGON((0 1,2 5,5 2,0 1))",
150            "POLYGON((1 3,2 5,5 2,1 3))");
151    iterator++;
152
153
154    BOOST_ASSERT(iterator != boost::end(expected));
155    test_overlay<polygon, polygon, Functor, T>("7", *iterator,
156            "POLYGON((0 1,1 3,5 2,0 1))",
157            "POLYGON((1 3,2 5,5 2,1 3))");
158    iterator++;
159
160    BOOST_ASSERT(iterator != boost::end(expected));
161    test_overlay<polygon, polygon, Functor, T>("8", *iterator,
162            "POLYGON((0 0,0 4,4 0,0 0))",
163            "POLYGON((1 3,4 4,3 1,1 3))");
164    iterator++;
165
166    BOOST_ASSERT(iterator != boost::end(expected));
167    test_overlay<polygon, polygon, Functor, T>("9", *iterator,
168            "POLYGON((0 0,0 4,4 0,0 0))",
169            "POLYGON((2 2,2 4,5 4,2 2))");
170    iterator++;
171
172    BOOST_ASSERT(iterator != boost::end(expected));
173    test_overlay<polygon, polygon, Functor, T>("10", *iterator,
174            "POLYGON((0 0,2 4,4 0,0 0))",
175            "POLYGON((1 2,2 5,3 2,2 4,1 2))");
176    iterator++;
177
178    BOOST_ASSERT(iterator != boost::end(expected));
179    test_overlay<polygon, polygon, Functor, T>("11", *iterator,
180            "POLYGON((0 0,0 4,4 0,0 0))",
181            "POLYGON((1 2,2 2,2 1,1 1))");
182    iterator++;
183
184    BOOST_ASSERT(iterator != boost::end(expected));
185    test_overlay<polygon, polygon, Functor, T>("12", *iterator,
186            "POLYGON((0 1,1 4,2 2,3 4,4 1,0 1))",
187            "POLYGON((0 3,2 4,4 3,0 3))");
188    iterator++;
189
190    BOOST_ASSERT(iterator != boost::end(expected));
191    test_overlay<polygon, polygon, Functor, T>("13", *iterator,
192            "POLYGON((0 1,1 2,3 0,0 1))",
193            "POLYGON((0 3,2 3,2 1,0 3))");
194    iterator++;
195
196    BOOST_ASSERT(iterator != boost::end(expected));
197    test_overlay<polygon, polygon, Functor, T>("14", *iterator,
198            "POLYGON((0 0,0 4,2 2,4 0,0 0))",
199            "POLYGON((1 3,4 4,3 1,1 3))");
200    iterator++;
201
202    BOOST_ASSERT(iterator != boost::end(expected));
203    test_overlay<polygon, polygon, Functor, T>("15", *iterator,
204            "POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))",
205            "POLYGON((1 3,4 4,3 1,1 3))");
206    iterator++;
207
208    BOOST_ASSERT(iterator != boost::end(expected));
209    test_overlay<polygon, polygon, Functor, T>("16", *iterator,
210            "POLYGON((1 2,3 4,2 1,1 2))",
211            "POLYGON((1 0,1 2,2 1,3 4,2 3,3 5,4 0,1 0))");
212    iterator++;
213
214    BOOST_ASSERT(iterator != boost::end(expected));
215    test_overlay<polygon, polygon, Functor, T>("17", *iterator,
216            "POLYGON((0 0,0 4,4 0,0 0))",
217            "POLYGON((1 1,1 3,3 1,1 1))");
218    iterator++;
219
220    BOOST_ASSERT(iterator != boost::end(expected));
221    test_overlay<polygon, polygon, Functor, T>("18", *iterator,
222            "POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))",
223            "POLYGON((1 1,1 3,3 1,1 1))");
224    iterator++;
225
226    BOOST_ASSERT(iterator != boost::end(expected));
227    test_overlay<polygon, polygon, Functor, T>("19", *iterator,
228            "POLYGON((2 0,1 3,5 2,2 0))",
229            "POLYGON((1 3,2 5,5 2,1 3))");
230    iterator++;
231
232    BOOST_ASSERT(iterator != boost::end(expected));
233    test_overlay<polygon, polygon, Functor, T>("20", *iterator,
234            "POLYGON((2 0,1 3,5 2,2 0))",
235            "POLYGON((2 0,1 3,5 2,2 0))");
236    iterator++;
237
238    BOOST_ASSERT(iterator != boost::end(expected));
239    test_overlay<polygon, polygon, Functor, T>("21", *iterator,
240            "POLYGON((1 0,0 5,5 2,1 0),(2 1,3 2,1 3,2 1))",
241            "POLYGON((2 1,1 3,3 2,2 1))");
242    iterator++;
243
244    BOOST_ASSERT(iterator != boost::end(expected));
245    test_overlay<polygon, polygon, Functor, T>("22", *iterator,
246            "POLYGON((1 0,0 3,4 2,1 0))",
247            "POLYGON((2 4,5 5,4 2,2 4))");
248    iterator++;
249
250    BOOST_ASSERT(iterator != boost::end(expected));
251    test_overlay<polygon, polygon, Functor, T>("23", *iterator,
252            "POLYGON((1 0,0 3,4 2,1 0))",
253            "POLYGON((3 3,4 2,1 1,3 3))");
254    iterator++;
255
256    BOOST_ASSERT(iterator != boost::end(expected));
257    test_overlay<polygon, polygon, Functor, T>("24", *iterator,
258            "POLYGON((1 0,0 3,4 2,1 0))",
259            "POLYGON((2 2,4 2,1 1,2 2))");
260    iterator++;
261
262    BOOST_ASSERT(iterator != boost::end(expected));
263    test_overlay<polygon, polygon, Functor, T>("25", *iterator,
264            "POLYGON((1 0,0 3,4 2,1 0))",
265            "POLYGON((3 1,4 2,5 0,3 1))");
266    iterator++;
267
268    BOOST_ASSERT(iterator != boost::end(expected));
269    test_overlay<polygon, polygon, Functor, T>("26", *iterator,
270            "POLYGON((1 0,0 3,4 2,1 0))",
271            "POLYGON((3 1,4 2,5 4,4 0,3 1))");
272    iterator++;
273
274    BOOST_ASSERT(iterator != boost::end(expected));
275    test_overlay<polygon, polygon, Functor, T>("27", *iterator,
276            "POLYGON((1 0,0 3,4 2,1 0))",
277            "POLYGON((1 1,4 2,5 0,1 1))");
278    iterator++;
279
280    BOOST_ASSERT(iterator != boost::end(expected));
281    test_overlay<polygon, polygon, Functor, T>("28", *iterator,
282            "POLYGON((1 0,0 3,4 2,1 0))",
283            "POLYGON((1 1,4 2,5 4,5 0,1 1))");
284    iterator++;
285
286    BOOST_ASSERT(iterator != boost::end(expected));
287    test_overlay<polygon, polygon, Functor, T>("29", *iterator,
288            "POLYGON((1 0,0 3,4 2,1 0))",
289            "POLYGON((4 4,5 1,4 2,1 1,4 4))");
290    iterator++;
291
292    BOOST_ASSERT(iterator != boost::end(expected));
293    test_overlay<polygon, polygon, Functor, T>("30", *iterator,
294            "POLYGON((1 0,0 3,2 2,3 3,1 0))",
295            "POLYGON((1 2,2 2,2 4,4 3,3 1,1 2))");
296    iterator++;
297
298
299    BOOST_ASSERT(iterator != boost::end(expected));
300    test_overlay<polygon, polygon, Functor, T>("31", *iterator,
301            "POLYGON((0 0,0 3,2 2,0 0))",
302            "POLYGON((4 1,2 2,3 3,4 1))");
303    iterator++;
304
305    BOOST_ASSERT(iterator != boost::end(expected));
306    test_overlay<polygon, polygon, Functor, T>("32", *iterator,
307            "POLYGON((0 0,0 3,2 2,0 0))",
308            "POLYGON((4 1,3 0,2 2,4 1))");
309    iterator++;
310
311    BOOST_ASSERT(iterator != boost::end(expected));
312    test_overlay<polygon, polygon, Functor, T>("33", *iterator,
313            "POLYGON((0 0,0 3,2 2,0 0))",
314            "POLYGON((3 3,3 0,2 2,3 3))");
315    iterator++;
316
317    BOOST_ASSERT(iterator != boost::end(expected));
318    test_overlay<polygon, polygon, Functor, T>("34", *iterator,
319            "POLYGON((2 0,0 3,4 2,2 0))",
320            "POLYGON((2 1,4 2,5 3,4 1,2 1))");
321    iterator++;
322
323    BOOST_ASSERT(iterator != boost::end(expected));
324    test_overlay<polygon, polygon, Functor, T>("35", *iterator,
325            "POLYGON((1 0,0 3,5 3,4 2,5 1,1 0))",
326            "POLYGON((2 2,4 2,4 1,2 2))");
327    iterator++;
328
329    BOOST_ASSERT(iterator != boost::end(expected));
330    test_overlay<polygon, polygon, Functor, T>("36", *iterator,
331            "POLYGON((1 0,0 3,4 2,1 0))",
332            "POLYGON((1 5,5 5,4 2,3 3,2 1,1 2,1 5))");
333    iterator++;
334
335    // 37,38 in PPT but not yet implemented
336    BOOST_ASSERT(iterator != boost::end(expected));
337    test_overlay<polygon, polygon, Functor, T>("37", *iterator,
338            "POLYGON((4 0,2 2,5 5,4 0))",
339            "POLYGON((0 2,4 3,2 2,4 1,0 2))");
340    iterator++;
341
342    BOOST_ASSERT(iterator != boost::end(expected));
343    test_overlay<polygon, polygon, Functor, T>("38", *iterator,
344            "POLYGON((4 0,3 3,2 2,4 5,5 2,4 0))",
345            "POLYGON((1 1,1 3,4 4,3 3,4 2,1 1))");
346    iterator++;
347
348
349    BOOST_ASSERT(iterator != boost::end(expected));
350    test_overlay<polygon, polygon, Functor, T>("39", *iterator,
351            "POLYGON((0 4,4 8,7 7,8 4,5 3,4 0,0 4))",
352            "POLYGON((0 4,4 8,5 5,8 4,7 1,4 0,0 4))");
353    iterator++;
354
355    // keyholing
356    BOOST_ASSERT(iterator != boost::end(expected));
357    test_overlay<polygon, polygon, Functor, T>("43", *iterator,
358            "POLYGON((1 2,1 1,2 1,2 2.25,3 2.25,3 0,0 0,0 3,3 3,2.75 2,1 2))",
359            "POLYGON((1.5 1.5,1.5 2.5,2.5 2.5,2.5 1.5,1.5 1.5))");
360    iterator++;
361
362    // self-tangency
363    BOOST_ASSERT(iterator != boost::end(expected));
364    test_overlay<polygon, polygon, Functor, T>("44", *iterator,
365            "POLYGON((0 0,0 3,3 3,3 2,0 1.5,3 1,3 0,0 0))",
366            "POLYGON((1 1,1 2,2 2,2 1,1 1))");
367    iterator++;
368
369    // self-intersection
370    BOOST_ASSERT(iterator != boost::end(expected));
371    test_overlay<polygon, polygon, Functor, T>("45", *iterator,
372            "POLYGON((0.5 0,0.5 3,3 3,3 2,0 1.5,3 1,3 0,0.5 0))",
373            "POLYGON((1 1,1 2,2 2,2 1,1 1))");
374    iterator++;
375
376    // self-tangent
377    BOOST_ASSERT(iterator != boost::end(expected));
378    test_overlay<polygon, polygon, Functor, T>("46", *iterator,
379            "POLYGON((2 0,2 3,5 3,5 2,2 1.5,5 1,5 0,2 0))",
380            "POLYGON((1.5 1,1.5 2,2.5 2,2.5 1,1.5 1))");
381    iterator++;
382
383    // self-tangent
384    BOOST_ASSERT(iterator != boost::end(expected));
385    test_overlay<polygon, polygon, Functor, T>("47", *iterator,
386            "POLYGON((2.5 0,2.5 3,5 3,5 2,2 1.5,5 1,5 0,2.5 0))",
387            "POLYGON((2 1,2 2,3 2,3 1,2 1))");
388    iterator++;
389
390
391    // 49, all
392    BOOST_ASSERT(iterator != boost::end(expected));
393    test_overlay<polygon, polygon, Functor, T>("49", *iterator,
394            "POLYGON((2 6,2 14,10 18,18 14,18 6,16 5,14 4,12 3,10 2,8 3,6 4,4 5,2 6))",
395            "POLYGON((2 6,2 7,2 8,2 9,2 10,2 11,2 12,1 14"
396                ",4 14,4 15,7 15,7 18,8 17,9 20,10 18"
397                ",10 15.5,11 17.5,12 17,11 15,12 14.5,13 16.5,14 18.5,15 18,14 16,15 15.5,16 17.5,18 14"
398                ",19 13,17 11,19 9,19 7"
399                ",17 5,16 5,15 4.5,13 3.5,11 2.5,10 2"
400                ",8 3,6 4,4 5,2 6))");
401    iterator++;
402
403
404    // ticket #17
405    BOOST_ASSERT(iterator != boost::end(expected));
406    std::string const ticket17 = "POLYGON ((-122.28139163 37.37319149,-122.28100699 37.37273669,-122.28002186 37.37303123,-122.27979681 37.37290072,-122.28007349 37.37240493,-122.27977334 37.37220360,-122.27819720 37.37288580,-122.27714184 37.37275161,-122.27678628 37.37253167,-122.27766437 37.37180973,-122.27804382 37.37121453,-122.27687664 37.37101354,-122.27645829 37.37203386,-122.27604423 37.37249110,-122.27632234 37.37343339,-122.27760980 37.37391082,-122.27812478 37.37800320,-122.26117222 37.39121007,-122.25572289 37.39566631,-122.25547269 37.39564971,-122.25366304 37.39552993,-122.24919976 37.39580268,-122.24417933 37.39366907,-122.24051443 37.39094143,-122.23246277 37.38100418,-122.23606766 37.38141338,-122.24001587 37.37738940,-122.23666848 37.37609347,-122.23057450 37.37882170,-122.22679803 37.37807143,-122.22525727 37.37448817,-122.22523229 37.37443000,-122.23083199 37.37609347,-122.23033486 37.37777891,-122.23169030 37.37732117,-122.23229178 37.37709687,-122.23237761 37.37631249,-122.23297776 37.37438834,-122.23872850 37.37165986,-122.24044511 37.36934068,-122.24671067 37.36865847,-122.24825570 37.36981819,-122.25151719 37.36947713,-122.25357721 37.36756706,-122.26001451 37.36579354,-122.25615213 37.36545239,-122.25486458 37.36245083,-122.25357721 37.36108651,-122.25194642 37.36013139,-122.24885652 37.35958557,-122.24911401 37.35849399,-122.25357721 37.35808470,-122.25675286 37.35897159,-122.25855539 37.35753887,-122.26181687 37.35828939,-122.26713837 37.35897159,-122.26782510 37.36108651,-122.26662339 37.36456559,-122.27288911 37.36722601,-122.27366159 37.36531602,-122.27168740 37.36470213,-122.27391900 37.36374701,-122.27074326 37.36245083,-122.27134408 37.35951742,-122.27426240 37.36135926,-122.27709482 37.36115474,-122.27966974 37.36231438,-122.27958391 37.36463382,-122.27572152 37.36463382,-122.27563569 37.36524779,-122.27700899 37.36593000,-122.27709482 37.36763529,-122.27554978 37.36838573,-122.27667254 37.36931478,-122.27677932 37.36932073,-122.27769362 37.36853987,-122.27942490 37.36830803,-122.28178776 37.36677917,-122.28509559 37.36443500,-122.28845129 37.36413744,-122.29194403 37.36695946,-122.29382577 37.36726817,-122.29600414 37.36898512,-122.29733083 37.36995398,-122.29593239 37.37141436,-122.29416649 37.37075898,-122.29325026 37.37108436,-122.29652910 37.37311697,-122.29584237 37.37374461,-122.29537583 37.37573372,-122.29487677 37.37752502,-122.30923212 37.37593011,-122.31122484 37.38230086,-122.31467994 37.38092472,-122.31715663 37.38252181,-122.32307970 37.38166978,-122.31985618 37.37667694,-122.32210304 37.37580220,-122.32581446 37.37589532,-122.32401730 37.37331839,-122.32960417 37.37189020,-122.33465527 37.37331906,-122.33425328 37.37623680,-122.33620676 37.37726132,-122.33397986 37.37822382,-122.33358918 37.38036590,-122.33202637 37.37986918,-122.33147954 37.38101784,-122.33394080 37.38198017,-122.33545239 37.38587943,-122.33478058 37.38785697,-122.33386050 37.38723721,-122.33350041 37.38571137,-122.33122003 37.38548891,-122.33140008 37.38650606,-122.33366042 37.38817490,-122.33244019 37.39157602,-122.33298157 37.39419201,-122.33164013 37.39477028,-122.33202017 37.39518351,-122.33358038 37.39499282,-122.33376050 37.39597811,-122.33550067 37.39734478,-122.33556069 37.39481797,-122.33344040 37.39292676,-122.33638094 37.38892189,-122.34240644 37.38852719,-122.34906293 37.38726898,-122.35072321 37.39338769,-122.34910291 37.39445252,-122.34796272 37.39410291,-122.34449043 37.39640534,-122.34500223 37.39729709,-122.34936291 37.39670910,-122.35098322 37.39531066,-122.35364623 37.39554510,-122.35434369 37.39612111,-122.35798429 37.39600988,-122.35768430 37.39478621,-122.36334519 37.39206871,-122.36604726 37.39203267,-122.36778592 37.39335592,-122.36518870 37.40022011,-122.36554552 37.40247752,-122.36370519 37.40331974,-122.36270506 37.40530591,-122.36320512 37.40670418,-122.36149849 37.40851392,-122.36730580 37.41054938,-122.37263720 37.41378932,-122.37161871 37.42076600,-122.36566153 37.42006292,-122.36520547 37.42742106,-122.37165953 37.43661157,-122.35943972 37.44459022,-122.35356359 37.44600810,-122.33792254 37.45796329,-122.35228518 37.47478091,-122.35127080 37.48181199,-122.34867342 37.48487322,-122.34359717 37.48801082,-122.33388431 37.48677650,-122.33142321 37.48429747,-122.32929580 37.48473149,-122.32609609 37.48291144,-122.32344850 37.48228229,-122.31924364 37.48410234,-122.31677299 37.48114051,-122.31431751 37.47848973,-122.31259201 37.47682190,-122.31515972 37.47568196,-122.31691389 37.47360309,-122.31292494 37.46960081,-122.31130153 37.46937743,-122.30889894 37.47124987,-122.30612839 37.47011613,-122.30149630 37.46568378,-122.30064277 37.46363784,-122.29283821 37.45922376,-122.28630141 37.45415497,-122.28883099 37.44629920,-122.28316717 37.44197138,-122.27554148 37.42297597,-122.25597410 37.40553692,-122.25196579 37.40129593,-122.25012043 37.40049143,-122.24823207 37.39897758,-122.24754551 37.39740941,-122.24778582 37.39621607,-122.24934787 37.39599102,-122.25005170 37.39871849,-122.25222328 37.39863668,-122.25342491 37.39737529,-122.25520162 37.39667289,-122.25528737 37.39522726,-122.27747460 37.37809616,-122.27977493 37.37858717,-122.28157729 37.37920106,-122.28322534 37.37952846,-122.28416939 37.38092656,-122.28621223 37.37984219,-122.28638389 37.37613857,-122.28382607 37.37843722,-122.27930278 37.37718220,-122.28196361 37.37652740,-122.28295058 37.37568167,-122.28216101 37.37523148,-122.28114822 37.37543608,-122.27934569 37.37528613,-122.27996369 37.37448121,-122.28104521 37.37454944,-122.28185197 37.37422883,-122.28290767 37.37474038,-122.28376597 37.37467224,-122.28428104 37.37399012,-122.28402346 37.37338989,-122.28610922 37.37364914,-122.28651264 37.37327388,-122.28672722 37.37207343,-122.28628398 37.37205448,-122.28574460 37.37166682,-122.28479711 37.37200981,-122.28327731 37.37137228,-122.28285511 37.37100700,-122.28279409 37.37125669,-122.28315527 37.37173756,-122.28321872 37.37220569,-122.28187007 37.37231918,-122.28193109 37.37294908,-122.28139163 37.37319149))";
407    //test_overlay<polygon, polygon, Functor, T>("44", *iterator, ticket17, "POLYGON((-122.297 37.368, -122.297 37.413, -122.242 37.413, -122.242 37.368, -122.297 37.368))");
408    //test_overlay<polygon, box, Functor>("44b", *iterator, ticket17, "BOX(-122.297 37.368,-122.242 37.413)");
409    test_overlay<polygon, box, Functor>("ticket_17", *iterator, ticket17, "BOX(-122.280 37.377,-122.277 37.379)");
410    iterator++;
411
412#endif
413
414    // Boost.List case Brandon
415    BOOST_ASSERT(iterator != boost::end(expected));
416    {
417        std::string p5 = "POLYGON((37.29449462890625 1.7902572154998779,37.000419616699219 1.664225697517395,37.140213012695313 1.3446992635726929,50.974888957147442 -30.277285722290763,57.297810222148939 -37.546793343968417,41.590042114257813 -7.2021245956420898,40.6978759765625 -5.4500408172607422,40.758884429931641 -5.418975830078125,42.577911376953125 -4.4901103973388672,42.577877044677734 -4.4900407791137695,42.699958801269531 -4.4278755187988281,46.523914387974358 -8.5152102535033496,47.585065917176543 -6.1314922196594779,45.389434814453125 -4.5143837928771973,46.296027072709599 -2.4984308554828116,37.43402099609375 1.470055103302002,37.29449462890625 1.7902572154998779))";
418        std::string p6 = "POLYGON((42.399410247802734 1.4956772327423096,42.721500396728516 2.2342472076416016,42.721500396728516 3.6584999561309814,51.20102152843122 7.1738039562841562,51.370888500897557 7.4163459734570729,37.43402099609375 1.470055103302002,37.29449462890625 1.7902572154998779,37.000419616699219 1.664225697517395,37.140213012695313 1.3446992635726929,36.954700469970703 1.2597870826721191,26.472516656201325 -3.5380830513658776,27.069889344709196 -4.2926591211028242,30.501169204711914 -2.3718316555023193,32.708126068115234 -2.3611266613006592,32.708126068115234 -2.3611700534820557,32.708168029785156 -2.3611698150634766,32.718830108642578 -4.3281683921813965,29.135100397190627 -8.9262827849488211,29.619997024536133 -9.5368013381958008,30.339155197143555 -8.9838371276855469,30.670633316040039 -8.8180980682373047,30.896280288696289 -9.1206979751586914,30.207040612748258 -10.275926149505661,30.947774887084961 -11.208560943603516,31.669155120849609 -10.653837203979492,32.000633239746094 -10.488097190856934,32.226280212402344 -10.790698051452637,31.682494778186321 -12.133624901803865,32.274600982666016 -12.879127502441406,32.998821258544922 -12.323249816894531,33.339523315429688 -12.147735595703125,33.566280364990234 -12.450697898864746,33.164891643669634 -14.000060288415174,33.598796844482422 -14.546377182006836,34.328716278076172 -13.992490768432617,34.658355712890625 -13.81736946105957,34.886280059814453 -14.120697975158691,34.634240447128811 -15.85007183479255,34.931102752685547 -16.223842620849609,35.656356811523438 -15.66030216217041,35.963497161865234 -15.476018905639648,37.326129913330078 -17.190576553344727,38.823680877685547 -16.296066284179688,39.966808319091797 -17.625011444091797,40.800632476806641 -17.208097457885742,41.821544647216797 -19.211688995361328,41.988733475572282 -19.945838749437218,57.524304765518266 -37.807195733984784,41.590042114257813 -7.2021245956420898,40.6978759765625 -5.4500408172607422,40.758884429931641 -5.418975830078125,42.577911376953125 -4.4901103973388672,42.577877044677734 -4.4900407791137695,42.699958801269531 -4.4278755187988281,46.559533858616469 -8.435196445683264,47.604561877161387 -6.087697464505224,45.389434814453125 -4.5143837928771973,46.695858001708984 -1.6093428134918213,47.263670054709685 -1.784876824891044,47.830955505371094 -0.69758313894271851,48.43512638981781 -0.81299959072453376,49.071769542946825 0.61489892713413252,43.764598846435547 0.93951499462127686,43.644271850585938 0.96149998903274536,42.399410247802734 1.4956772327423096))";
419        test_overlay<polygon, polygon, Functor>("isovist", *iterator, p5, p6);
420    }
421    iterator++;
422
423
424    return;
425
426
427#if ! defined(NO_LINESTRING_INTERSECTION)
428    BOOST_ASSERT(iterator != boost::end(expected));
429    test_overlay<linestring, linestring, Functor, T>("100", *iterator,
430            "LINESTRING(0 1,2 5,5 3)",
431            "LINESTRING(3 0,0 3,4 5)");
432#endif
433
434
435
436/*
437
438    test_overlay<box, polygon, Functor>(11, "box(1.5 1.5, 4.5 2.5)",
439            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))");
440    test_overlay<box, polygon, Functor>(21, "box(1.5 1.5, 4.5 2.5)",
441            "POLYGON((3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2))");
442    test_overlay<box, polygon, Functor>(12, "box(1.5 1.5, 4.5 2.5)",
443            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,5.3 2.5,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))");
444    test_overlay<box, polygon, Functor>(13, "box(1.5 1.5, 4.5 2.5)",
445            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 2.5,4.5 1.2,4.9 0.8,2.9 0.7,2 1.3))");
446    test_overlay<box, polygon, Functor>(23, "box(1.5 1.5, 4.5 2.5)",
447            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 2.5,4.5 2.3,5.0 2.3,5.0 2.1,4.5 2.1,4.5 1.9,4.0 1.9,4.5 1.2,4.9 0.8,2.9 0.7,2 1.3))");
448
449    test_overlay<box, polygon, Functor>(14, "box(1.5 1.5, 4.5 2.5)",
450            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 1.2,2.9 0.7,2 1.3))");
451
452    test_overlay<box, polygon, Functor>(15, "box(1.5 1.5, 4.5 2.5)",
453            "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.0 3.0,5.0 2.0,2.9 0.7,2 1.3))");
454
455    test_overlay<box, polygon, Functor>(16, "box(0 0, 3 3)",
456            "POLYGON((2 2, 1 4, 2 4, 3 3, 2 2))");
457
458    test_overlay<box, polygon, Functor>(19, "box(115041.10 471900.10, 118334.60 474523.40)",
459            "POLYGON ((115483.40 474533.40, 116549.40 474059.20, 117199.90 473762.50, 117204.90 473659.50, 118339.40 472796.90, 118334.50 472757.90, 118315.10 472604.00, 118344.60 472520.90, 118277.90 472419.10, 118071.40 472536.80, 118071.40 472536.80, 117943.10 472287.70, 117744.90 472248.40, 117708.00 472034.50, 117481.90 472056.90, 117481.90 472056.90, 117272.30 471890.10, 117077.90 472161.20, 116146.60 473054.50, 115031.10 473603.30, 115483.40 474533.40))");
460*/
461}
462#endif
463
464#endif // BOOST_GEOMETRY_TEST_OVERLAY_COMMON_HPP