(C++) BoostGeometryExample10
February 24, 2017 · View on GitHub
(C++) BoostGeometryExample10



Boost.Geometry example 10: Create a polygon from WKT is a Boost.Geometry example.
Technical facts
Operating system(s) or programming environment(s)
Lubuntu 15.04 (vivid)
Qt Creator 3.1.1
- G++ 4.9.2
Libraries used:
Qt project file: ./CppBoostGeometryExample10/CppBoostGeometryExample10.pro
exists(../../ConsoleApplication.pri) { include(../../ConsoleApplication.pri) } !exists(../../ConsoleApplication.pri) { QT += core QT += gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += console CONFIG -= app_bundle TEMPLATE = app CONFIG(release, debug|release) { DEFINES += NDEBUG NTRACE_BILDERBIKKEL } QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -Weffc++ unix { QMAKE_CXXFLAGS += -Werror } } exists(../../Libraries/Boost.pri) { include(../../Libraries/Boost.pri) } !exists(../../Libraries/Boost.pri) { win32 { INCLUDEPATH += \ ../../Libraries/boost_1_55_0 } } SOURCES += main.cpp
./CppBoostGeometryExample10/main.cpp
#include <cassert> #include <iostream> #include <vector> #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Weffc++" #pragma GCC diagnostic ignored "-Wunused-local-typedefs" #pragma GCC diagnostic ignored "-Wunused-variable" #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/ring.hpp> #include <boost/geometry/io/wkt/read.hpp> #pragma GCC diagnostic pop int main() { typedef boost::geometry::model::d2::point_xy<double> Coordinat2D; typedef boost::geometry::model::polygon<Coordinat2D> Polygon; Polygon polygon; boost::geometry::read_wkt( "POLYGON((0.5 2.0 , 1.0 1.0 , 1.0 0.0 , 0.0 0.0 , 0.0 1.0))", polygon ); const std::vector<Coordinat2D> points_expected { {0.5, 2.0}, //0 {1.0, 1.0}, //1 {1.0, 0.0}, //2 {0.0, 0.0}, //3 {0.0, 1.0} //4 }; const std::vector<Coordinat2D> points = polygon.outer(); assert( std::equal( points.begin(),points.end(), points_expected.begin(), [](const Coordinat2D& a,const Coordinat2D& b) { return boost::geometry::equals(a,b); } ) && "Points should be as expected" ); }