Ticket #8376: ticket_8376.cpp

File ticket_8376.cpp, 1.5 KB (added by mkaravel, 8 years ago)

stand-alone test program for ticket #8376

Line 
1#include <iostream>
2
3#include <boost/assert.hpp>
4
5#include <boost/geometry/geometry.hpp>
6#include <boost/geometry/geometries/geometries.hpp>
7#include <boost/geometry/multi/geometries/multi_geometries.hpp>
8
9namespace bg = boost::geometry;
10
11typedef bg::model::point<int, 2, bg::cs::cartesian> point_type;
12typedef bg::model::polygon<point_type, false, false> polygon_type; //ccw, open
13typedef bg::model::multi_polygon<polygon_type> multi_polygon_type; //ccw, open
14
15int main()
16{
17 polygon_type poly;
18 multi_polygon_type mpoly, result;
19 bg::read_wkt("POLYGON((1920 1462,3720 1462,3720 3262,1920 3262))", poly);
20
21 bg::read_wkt("MULTIPOLYGON(((1918 1957,1918 1657,2218 2189)),((3718 1957,3360 2233,3718 1561)),((3360 2233,2818 3253,2218 2189,2818 2653)))", mpoly);
22
23 bool is_valid1 = bg::is_valid(poly);
24 bool is_valid2 = bg::is_valid(mpoly);
25
26 if ( is_valid1 )
27 {
28 std::cout << "polygon is valid ..." << std::endl;
29 }
30 else
31 {
32 std::cout << "polygon is NOT valid ..." << std::endl;
33 bg::correct(poly);
34 BOOST_ASSERT( bg::is_valid(poly) );
35 }
36
37 if ( is_valid2 )
38 {
39 std::cout << "multi-polygon is valid ..." << std::endl;
40 }
41 else
42 {
43 std::cout << "multi-polygon is NOT valid ..." << std::endl;
44 bg::correct(mpoly);
45 BOOST_ASSERT( bg::is_valid(mpoly) );
46 }
47
48 bg::difference(poly, mpoly, result);
49
50 std::cout << bg::wkt(result) << std::endl;
51 std::cout << bg::dsv(result) << std::endl;
52 std::cout << "# of points: " << bg::num_points(result) << std::endl;
53
54 return 0;
55}