从道路网络生成等时线图

时间:2013-08-02 12:55:32

标签: c# algorithm math graphics maps

我想知道是否有任何描述的算法可以将等时线转换为近似区域以显示某些功能的范围(在我的问题中,此功能是道路网络)。

示例。我在下面的图片上有类似的内容:

road network

这是一个简单的网络(我可以在X分钟或开始Y公里)从起点到达。我有所有节点和链接的信息。现在我需要创建一个等时线图,显示我可以到达的近似范围。

问题:

  1. Convex hull - 由于过于笼统的近似而很糟糕,
  2. 我可以在道路上创建缓冲区 - 所以我会得到一些显示范围的多边形,但是我也会通过连接到圆圈的道路来打洞。
  3. 我需要获得的是这样的:

    isochrone map

    我发现了一些可能有用的信息HERE,但只有一些想法可以做到。如果有人有任何概念,请帮助我解决我的问题。

2 个答案:

答案 0 :(得分:2)

有趣的问题,为了得到更好的答案,您可能想要准确定义显示范围(等时线图)的区域将用于什么?例如它是说明性的吗?如果您定义了所需的近似值,它可以帮助您解决问题。

现在有一些想法。

1)找到所有cycles in the graph(参见链接),然后消除两个周期之间共享的边。最后取剩余周期的凸包,这与所有道路一起,以便包含不形成周期的异常值,这将给出一个很好的逼近等值图。

2)更简单的解决方案是在每条道路的每个点周围定义厚度,该厚度应与从起点到达该点所需的时间成反比。即到达这个点的时间越长越厚。然后,您可以缩放所有点的厚度,直到填满所有整体,然后您将获得近似的单色图。实现此目的的一种可能方法是运行一种算法,该算法从起始点同时获取所有可能的路线,在每个新交叉点分支,同时跟踪到达每个点所花费的时间。在执行期间,所有先前发现的路线应在每个时刻加厚。最后,您可以缩放此厚度以填充所有整体。

希望这会有所帮助。祝好运。

答案 1 :(得分:1)

我已经解决了这个问题(它不是那么快和强大,但现在必须足够了。)

  1. 我使用A* (A-Star) algorithm生成了可能的路线。
  2. 我从第一点开始使用@Artur Gower的想法来消除周期并简化我的几何。
  3. 后来我决定生成两种类型的gemetries(第一种 - 就像图像一样,第二种 - 简单缓冲区):

    第一个:
    3.然后我使用Douglas-Peucker algorithm删除了剩余的不必要的点(非常快!) 4.最后我使用Concave Hull algorithm(又名Alpha-ShapesNon-Convex Hull)。

    第二个:
    3.将缓冲区应用于现有几何体并取出外环(JTS库,使其更加容易:)。)。