Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

已关闭6年。



Improve this question




我们有多种来源的高质量道路网络(开放式街道 map ,TomTom ...)。这些资源包含的信息远远超出了我们的需要,从而有效地阻止了我们的计算。滤除次要道路很容易。我们的主要问题是高速公路的表示(两个方向相反的道路),复杂的高速公路交叉口(各种导出道路,交叉路口都不是点)。就我们的目的而言,更“拓扑”式的道路网络将是理想的。

高度详细的数据源:



理想的简化网络:

是否有任何算法可以帮助我们提取简化的道路网络? 如果.NET中甚至有可用的实现,那将是一个真正的赢家。

更新:

原始数据表示为折线,并附加了一些有限的元数据。元数据告诉道路的身份(名称或编号),道路的“等级”(高速公路,主要道路,次要道路等),以及诸如速度限制之类的更多详细信息,无论线段是桥梁还是隧道。数据的质量非常好,我们可以根据道路标识轻松地将构成一条道路的多段线段组合在一起。
同样,忽略次要道路也很容易。高速公路导出处的加/减速车道在等级上也有明显的标记,因此也很容易过滤。

我们看到两个主要问题:

1)高速公路:用一条道路代替两条(或两条以上)单向道路

2)高速公路路口:确定路口的中心点,并确保将我们的简化高速公路连接到该点。

更新2:
数据存储在EZRI Shape files中。使用SharpMap library,它们相对容易解析或进行地理空间搜索。源数据按国家进行分割,一个国家是一个形状文件(如果该国家太大,例如美国,德国),则将其进一步划分为较小的区域。是的,这种划分带来了另一个问题。如何确保法国和德国边界上的简化公路相互交汇?

感谢您的关注

最佳答案

这只是解决方案的草图,但是:

  • 定义曲线对之间的距离度量。首先想到的是两条曲线所围成的区域,再除以它们的长度。您可以使用元数据来增加它。目标是设计一个度量标准,该度量标准将使您认为相似的成对道路之间的距离很小,而与您认为不相似的道路之间的距离较大。
  • 现在选择一种聚类算法,并要求其根据您刚定义的距离对道路进行聚类。非常大方地让您使用它的集群数量。回来时,寻找“直径”非常小的簇,这意味着簇中的每个点都非常相似。 “完全链接聚类”可能是开始您的研究的好地方,因为它会导致这种类型的聚类。
  • 然后,您可以取这些群集中每个群集的平均值,将非常相似的道路集合转换为一条道路,从而解决您的问题(1)(希望也可以解决(2))。

  • 完成后,下一个任务是将“重要”道路与“不重要”道路区分开。最好的方法是坐下来并建立数百条随机道路的训练集,并手动标记它们是否重要。然后采用某种分类器,并将其训练在您手动标记的集合上。然后要求它预测其他哪些重要道路。

    我不能说最好使用哪个分类器,但是如果您能抽出时间来建立大量的训练集并研究文献,那么“神经网络”将给人留下深刻的印象。如果您想要更简单的方法,请查看“随机森林”或(甚至更简单的)“逻辑回归”。

    10-07 22:53