我是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的集合),但是尚未完全实现,只有少数算法支持该变体。

10-06 10:54