Я новичок в boost :: geometry и не могу найти никаких примеров в документации или здесь для этого.
У меня есть текстовый файл с wkt GEOMETRYCOLLECTION в каждой строке. Каждая коллекция содержит один или несколько MULTIPOINTS.
Разбор MULTIPOINTS не проблема:
typedef boost::geometry::model::point<double, 3, boost::geometry::cs::cartesian> point;
typedef boost::geometry::model::multi_point<point> multipoint;
multipoint myPoints;
boost::geometry::read_wkt("MULTIPOINT ((123456.123 1234567.123 42.42), (654321.123 7654321.123 123.12))", myPoints);
// do something with myPoints
for (auto &point : myPoints) {
std::cout << point.get<0>() << " " << point.get<1>() << " " << point.get<2>() << std::endl;
}
Но мне нужно разобрать что-то вроде этого:
bg::read_wkt("GEOMETRYCOLLECTION (MULTIPOINT ((1 2 3), (3 2 1)), MULTIPOINT ((4 5 6), (7 8 9)))", myCollection);
Есть идеи, как это сделать?
Это будет вариант (коллекция Boost.Variant’s), но он еще не полностью реализован, только несколько алгоритмов поддерживают этот вариант.
Других решений пока нет …