基于线段间距离的聚合线


12

我有一个正在优化的VectorTile底图(正在努力减少单个图块的大小),图块大小的主要块是道路数据(几何形状和属性)。我正在根据“ 缩放级别”简化各个道路的几何形状,并根据缩放级别对道路进行汇总。

道路存储在Postgis表(每个缩放级别的单独表)中,我想根据道路的缩放级别汇总道路。例如,在“ 5级缩放”表中,我想汇总彼此之间一定距离内的道路,并为道路段画一条线: 在此处输入图片说明

由于无法在该缩放级别上绘制出各个道路,因此: 在此处输入图片说明

如何根据路段之间的距离汇总道路几何形状?

PS:我正在Linux上开发PostGIS和QGIS,但是我对使用任何开源平台或技术的解决方案持开放态度。


道路是否具有公共ID,例如在A50的缩放级别5上的两条车道由两条线表示,但在等级4的位置上由1 lin表示,并且它们都具有“ A50”作为属性?
AnserGIS

它们在所有缩放级别上均由两条线表示。它们的高速公路和高速公路将具有共同的属性,例如高速公路的“ M-2”。
哈桑·穆斯塔法

Answers:


5

您可以尝试在此OS选项Skeletron中查找它:

使用多边形缓冲区和voronoi图将线集合概括为特定的球形墨卡托缩放级别和像素精度

它基于Alnoor Ladak和Roberto B. Martinez在1996年发表的论文“高精度道路中心线蒂森多边形技术的自动派生”

需要一些依赖:

必需的依赖项:
-qhull二进制文件(http://www.qhull.org
-匀称1.2+(http://pypi.python.org/pypi/Shapely
-pyproj(http://code.google.com/p / pyproj
-networkx 1.5+(http://networkx.lanl.gov
-StreetNames 0.1+(https://github.com/nvkelso/map-label-style-manual/tree/master/tools/street_names

注意:这是可以应用的较旧模型/工具,仅供您参考。


1
我认为skeletron可能是可行的方法,但您的答复只是过去自述文件的副本,并且指向esri网站的链接已死。这里有一个链接,显示了它对地图的作用:kartographie.geo.tu-dresden.de/downloads/ica-gen/workshop2004/…。看起来真的很棒,但是当我尝试使用它时,我不知道如何使用它。除了使用use或setup.py --help命令的贿赂外,我没有找到任何文档。如果有人解释了该lib的用法,我将给予他赏金。
Hugo Roussaffa-GeoDatup

据我所知,它也在输入中使用OSM道路,我想要一个可以在任何类型的线路上工作的解决方案。尽管如此,我真的很喜欢它背后的科学,也希望将其应用于其他场景。
哈桑·穆斯塔法

我已经更新了帖子,以反映您的评论,感谢您的反馈。
whyzar

4

如果可以选择,ArcGIS是最简单的。我知道OP指定了操作系统,但是我提到这一点是因为与以下选项相比,操作系统选项看起来没有太大帮助:http : //resources.arcgis.com/zh-CN/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /

该问题的答案提供了一些开放源代码选项:如何合并/折叠附近和平行的道路线(例如,双行车道)成一条直线?

如果进行编码,则可以基于顶点计算平均坐标位置,如果不是,则:

  1. 在输出中使用“合并所有”选项来缓冲道路。
  2. 获取多边形的中心线
  3. 在与其他线的交叉点处的JUMP 分割线处将交叉点处的线 分割
  4. 空间重新加入属性

似乎也没有一个等效于ArcGIS“多边形到中心线”工具的操作系统。我可能会建议:

一个。创建voronoi图并获取骨架。
b。创建欧几里得距离栅格并提取中心值并转换为线

...可能还有其他一些。

最后,根据规模和应用情况,也可能只需要删除两行之一就可以了-不精确会很重要吗?


ArcGIS选项看起来不错,我会尝试一下,但是我希望使用OS解决方案。我的后备策略是在顶点基础上计算平均坐标位置。我将尝试您列出的所有方法,看看它们是否对我有用,谢谢!
哈桑·穆斯塔法

我正是在寻找ArcGIS工具“合并道路(制图)”,但是我正在做的所有处理都是在Linux上使用Postgres和QGIS进行,要使用该工具,我需要切换到Windows 。
哈桑·穆斯塔法
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.