0

我想使用 pgrouting 的算法之一来找到两个点之间的(最短)路径:(a)特定类型道路的优势和(b)中间点。

为了构建数据,我使用了 osm2pgrouting。我想首先关注问题(a)。

  1. 是否有一种算法可以定义我对道路类型的偏好(在表中的 class_id 列 class_id 代表道路类型或在表 osm_way_types 中)?
  2. 如果不是,我应该如何调整我的数据库?知道我使用了 osm2pgrouting --> 有表 public.osm_way_classes 有 max_speed 但它似乎是调整它的糟糕选择。我想不管它。我在其他表中并没有真正找到任何有用的东西。有任何想法吗?

问题 (b)(不太重要)是确定搜索路径的长度是否小于例如 10 公里。如果没有,则路径应访问指定的中间点(或点)之一。
我认为 pgrouting 中没有算法可以考虑这些“停止”(源和目标之间的中间点)。我认为这个问题(b)应该通过搜索从point1到point2然后从p2到p3等的路径来解决,但我还不知道如何确定这些点。

4

1 回答 1

1

图论通常基于边权重解决最短路径。IE:为了在图中从 A 到 B,它将选择那些使路径中边的权重总和最小化的边。因此,在 pgRouting 中,您选择权重作为最短路径长度的边长,或者可以将权重计算为遍历边的时间 = 长度/速度,最短时间,但是对于您的问题,您可以使用像长度*偏好这样的等式,其中偏好是一些分数,较小的部分更受欢迎。显然,您将根据这个因素以及边缘 id 获得成本,并且使用边缘 id 的简单连接将使您回到原始表。这种策略应该适用于我们的大多数算法。

于 2017-05-22T23:36:34.883 回答