我正在寻找一种用于街道地图制图概括的几何算法(名称)。
在我的地图数据中,我有许多路径(点的有序列表,由线段连接),这些路径彼此靠近且几乎平行。我如何(1)识别这些“相邻路径”(即如何找到比某个阈值更接近的路径)以及(2)将它们合并成一条路径(即如何计算闭合路径之间的中心线)?
作为示例,请考虑以下使用 OpenStreetMaps 数据创建的道路/车道图:
正如您所看到的,水平行驶的两条车道被建模为两条独立的路径。对于详细视图,这很有用,但对于更缩小的视图,我需要合并两条路径(车道)以仅显示一条道路线。
地图渲染器中使用哪些既定算法来实现这一目标?显然,谷歌地图、OSM 等可以做到这一点——如何做到的?
这不是它的目的,但是做一些像霍夫变换 https://en.wikipedia.org/wiki/Hough_transform?
要找到足够接近的路径:
- 将线段变换到霍夫空间(r, θ),
- 让每个点投票选出最接近的可用“bin”。您可以根据您希望合并两条路径的容差程度来确定 bin 量化。
- 累加器中的每个点还应保留对其父路径的引用以及线段的长度。
- 找到恰好包含两票的垃圾箱,因为我们只对合并两条路径感兴趣
- Create an nxn accumulator matrix A, with n being the number of paths you have, such that aij is the votes for merging the ith and jth path, this will be a mostly sparse matrix.
- 对于我们感兴趣的每个箱,在与其两个父路径对应的单元格中的累加器矩阵中投票。
- 如果累加器矩阵中存在具有足够多投票数的单元(即,这些路径中足够数量的线段被算法认为是相当相似的),则可以合并这两条路径。
合并两条路径:
- 将所选箱中的点变换回笛卡尔空间,使用长度(保留参考)、斜率和位置来定义与每个箱相对应的每个线段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)