【发布时间】:2020-11-11 02:59:54
【问题描述】:
我一直在尝试借助 CGAL guide 对属于地图的多边形进行线条简化,例如韩国。
这是使用 CGAL 简化行后的 screenshot of South Korea。
我通过将每个多边形添加到CGAL::Constrained_triangulation_plus_2<CDT> ct 然后运行CGAL::Polyline_simplification_2::simplify(ct, Cost(), Stop(0.5)); 来进行线条简化。
外部边界将得到简化,但内部/共享边界(省之间)不会。 有什么方法可以简化内部/共享边界?
我还尝试单独simplify 每个多边形,然后将它们组合在一起以形成整个国家。然而,问题是每个多边形都会被自己简化,因此如果Polygon1 被简化,则不能保证相邻Polygon2 的共享顶点将重新定位到与Polygon1 相同的坐标顶点,因此当您将它们重新组合在一起时会出现交叉点,就像这张韩国地图一样。
谢谢。
【问题讨论】:
-
我认为您遇到了麻烦,因为您选择了一组错误的工具来表示地理信息。你看过GGAL
2D Arrangements吗?您可以更自然地使用它们来表示具有弯曲边缘的平面图......手册在这里:doc.cgal.org/latest/Arrangement_on_surface_2/index.html -
嗨,HEKTO。感谢您的回复/建议,并为迟到的回复道歉。考虑到 2D Arrangements,有没有办法将 Polygon_2 对象转换为 2D Arrangement 对象,反之亦然?此外,有没有办法将 2D Arrangements 整体简化,因为 2D Arrangements 似乎不存在
simplify()函数?再次感谢您的帮助。 -
您正在使用的地图由许多折线组成,这些折线连接在端点 - 您可以将所有这些存储为一个排列。折线可以自己简化,而不是作为多边形的一部分。可以使用各种迭代器从排列中提取折线和多边形
标签: c++ line polygon cgal simplification