[ create a new paste ] login | about

Link: http://codepad.org/ArAgjZKQ    [ raw code | fork ]

C++, pasted on Mar 7:
#include <iostream>

#include <boost/geometry/geometry.hpp>
#include <boost/geometry/extensions/algorithms/dissolve.hpp>
#include <boost/geometry/extensions/multi/algorithms/dissolve.hpp>

#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/geometry/extensions/gis/io/wkt/wkt.hpp>


static std::string javier_dissolve[2] =
    {"MULTIPOLYGON(((560 -400, 600 -400, 600 -440, 560 -440, 560 -400)), ((480 -400, 520 -400, 520 -440, 480 -440, 480 -400)), ((600 -320, 640 -320, 640 -360, 600 -360, 600 -320)), ((520 -400, 560 -400, 560 -440, 520 -440, 520 -400)))",
    "MULTIPOLYGON(((0 0, 2000 0, 2000 -2000, 0 -2000, 0 0), (560 -400, 560 -440, 600 -440, 600 -400, 560 -400), (480 -400, 480 -440, 520 -440, 520 -400, 480 -400), (600 -320, 600 -360, 640 -360, 640 -320, 600 -320), (520 -400, 520 -440, 560 -440, 560 -400, 520 -400)))"};


int main()
{
    typedef boost::geometry::model::polygon
        <
            boost::geometry::model::d2::point_xy<double>
        > polygon;
    typedef boost::geometry::model::multi_polygon<polygon> mp;

    mp raw_green, raw_blue, green, blue, output;

    boost::geometry::read_wkt(javier_dissolve[0], raw_green);
    boost::geometry::read_wkt(javier_dissolve[1], raw_blue);

    boost::geometry::dissolve(raw_green, green);
    boost::geometry::dissolve(raw_blue, blue);


    boost::geometry::difference(green, blue, output);
    boost::geometry::unique(output);


    std::cout
            << boost::geometry::area(output)
            << " " << boost::geometry::wkt(output)
            << std::endl;

    return 0;
}


Create a new paste based on this one


Comments: