pgrouting - 为特定类型的道路选择具有优势的算法
pgrouting - Choosing an algorithm with a predominance for a specific type of road
我想使用 pgrouting 的一种算法来找到两点之间的(最短)路径:(a) 特定类型道路的优势和 (b) 中间点。
为了构建数据,我使用了 osm2pgrouting。
我想首先关注问题(a)。
- 是否有一种算法可以定义我对道路类型的偏好(以 table 方式 class_id 代表道路类型的 class_id 列或 table osm_way_types)?
- 如果不是,我应该如何调整我的数据库?知道我使用了 osm2pgrouting --> 有 table public.osm_way_classes 有 max_speed 但调整它似乎是糟糕的选择。我想不管它。我在其他 table 中没有发现任何有用的东西。有什么想法吗?
问题 (b)(不太重要)是确定搜索路径的长度是否小于例如 10km。如果否,则路径应访问指定的中间点(或多个点)之一。
我认为 pgrouting 中没有算法可以考虑这些 "stops"(源和目标之间的中间点)。我认为这个问题 (b) 应该通过搜索从 point1 到 point2 然后从 p2 到 p3 等的路径来解决,但我还不知道如何确定这些点。
图论通常基于边权重求解最短路径。 IE:为了在图中从 A 到 B,它将 select 那些使路径中边的权重总和最小化的边。因此,在 pgRouting 中,您 select 将权重作为最短路径长度的边长,或者可以将权重计算为遍历边时间 = length/speed 的时间,以获得最短时间,但对于您的问题,您可以使用像 length*preference 这样的方程式来计算自己的权重,其中 preference 是一些分数,其中越小越好。显然,您将根据此因素连同边 ID 收回成本,使用边 ID 的简单连接将使您回到原始 table。此策略应该适用于我们的大多数算法。
我想使用 pgrouting 的一种算法来找到两点之间的(最短)路径:(a) 特定类型道路的优势和 (b) 中间点。
为了构建数据,我使用了 osm2pgrouting。 我想首先关注问题(a)。
- 是否有一种算法可以定义我对道路类型的偏好(以 table 方式 class_id 代表道路类型的 class_id 列或 table osm_way_types)?
- 如果不是,我应该如何调整我的数据库?知道我使用了 osm2pgrouting --> 有 table public.osm_way_classes 有 max_speed 但调整它似乎是糟糕的选择。我想不管它。我在其他 table 中没有发现任何有用的东西。有什么想法吗?
问题 (b)(不太重要)是确定搜索路径的长度是否小于例如 10km。如果否,则路径应访问指定的中间点(或多个点)之一。
我认为 pgrouting 中没有算法可以考虑这些 "stops"(源和目标之间的中间点)。我认为这个问题 (b) 应该通过搜索从 point1 到 point2 然后从 p2 到 p3 等的路径来解决,但我还不知道如何确定这些点。
图论通常基于边权重求解最短路径。 IE:为了在图中从 A 到 B,它将 select 那些使路径中边的权重总和最小化的边。因此,在 pgRouting 中,您 select 将权重作为最短路径长度的边长,或者可以将权重计算为遍历边时间 = length/speed 的时间,以获得最短时间,但对于您的问题,您可以使用像 length*preference 这样的方程式来计算自己的权重,其中 preference 是一些分数,其中越小越好。显然,您将根据此因素连同边 ID 收回成本,使用边 ID 的简单连接将使您回到原始 table。此策略应该适用于我们的大多数算法。