接驳巴士服务


9

首先,有一点背景。

我在区域运输机构工作。我们正在对馈线巴士服务进行“诊断”。我们想知道有多少比例的用户可以乘公共汽车去火车站而不是开车。这已经完成了几次,但是现在我们使用gtfs作为主要数据源,因此我们必须重新考虑我们的方法。

典型的接驳巴士服务

要被视为“为火车供餐”,公共汽车路线必须在距火车站一定距离内的车站(红色缓冲区)停靠。同样,与火车服务的同步性也很重要,因为如果您的巴士在火车前半小时到达火车站,那么等待时间就太长了,您将需要早上多睡20分钟才能开车。

假设您在12号车站乘A线(蓝色),然后在13号车站下车。公交车到达13号车站,这是火车前5分钟到达1号火车站的车站。这是非常好的。这意味着每个在1到13站内乘坐该公交车的人都将在火车开行前5分钟到达。

然后,火车经过人口稠密的地区,那里有很多学校和人行横道,被迫大幅度降低其速度。同时,公交车在14至17号车站接载乘客,并在火车开行前10分钟到达2号火车站。因此,一旦到达火车站,在14至17号车站乘坐公共汽车的乘客将都有10分钟的等待时间。因此,沿着那条公交线路,在1至13号车站乘坐巴士的乘客的等待时间为5分钟,而在14至17号车站乘坐巴士的乘客的等待时间为10分钟。

B线在轨道的另一侧,经过1号火车站附近,但其车站距离太远,无法考虑“为1号火车站供餐”。它在火车出发前7分钟到达2号火车站(在高峰期,每趟火车都要这样做;它的同步性很好)。因此,沿着B线的乘客从1号车站到59号车站到处都有巴士,等待时间为7分钟。

现在,我的问题。一旦我确定LineA.13和LineA.17停靠站正在为我的火车供电(这是在PostGIS中在空间上完成的),并且在#13之前停靠的公交车的等待时间是5分钟,但之后的等待时间是等待时间为10分钟,我该如何为所有停靠站分配等待时间?

我想在Postgres / PostGIS(pl / pgsql或pl / python)中做到这一点,但是我也可以使用纯python(OS或arcpy)。

我认为我可以向后循环。因此,一旦我找到合适的停靠点(在这里为LineA.17),就将相同的等待时间分配给停靠点16,然后是15 ...直到找到另一个适合我的条件的停靠点(LineA.13),然后分配其余的停靠点的等待时间与13。

我不知道如何创建这样的循环。我不认为我可以用SQL做到这一点,所以我不得不在PostgreSQL中使用过程语言。

我有一个使用pgRouting来找到每个供料器停靠点之间的路线的想法,这样一来,线A就会一分为二(停靠点1至13,然后停靠13至17)。这样会更容易吗?

下一步,将使用pgRouting从所有有等待时间的站点(抱歉LineA.18及以上!)计算出行驶时间,并将其与公交车的时间表进行比较以计算竞争力(是否需要5在公交车上比在车上多几分钟?

有任何想法吗?我通常会发布一个冗长的正在进行中的脚本,以显示到目前为止我所做的努力,但是我被困住了!


由于其他奇怪的情况,我现在考虑切断乘客可以下车的路线。因此,每个路线“细分”都是独立的。我仍然需要弄清楚当停靠点在拓扑上不正确时(在路边停靠的形状,停靠点在杆子上),如何在PostGIS中剪切形状;;)
fgcartographix

Answers:


3

使用SQL实际上创建所需的循环真的很容易:

SELECT DISTINCT ON (b1.line, b1.number) b1.line,b1.number,b2.waiting
FROM busstops AS b1
  LEFT JOIN busstops AS b2
    ON b1.line = b2.line
      AND b1.number<=b2.number
      AND b2.waiting IS NOT NULL
ORDER BY b1.line,b1.number,b2.number;

小提琴

比方说,从停靠点到停靠点的总转移时间也很容易。

如果仅设法将路线转换为时间图(节点代表出发时间和路线成本时间),则可以使用常规pgRouting。


!它行得通...还有一些我不理解的部分,但是我明白了...我可以大胆地问一下,如果以后的停车站等待时间更短,您可以覆盖等待时间吗?从理论上讲,如果您必须在站台上等待20分钟,可以跳过第一个火车站,而如果等待仅需4分钟,您可以一直坐公共汽车直到2号火车站...;)感谢百万次!
fgcartographix 2013年

1
只需更改ORDER BY条款。前两列必须保留,因为它们位于该DISTINCT ON子句中,但除此以外
Jakub Kania

你是个巫师!:) 谢谢!我已经为此苦苦挣扎太久了!
fgcartographix

请确保不要在一个小时后的火车上坐4分钟:)
Jakub Kania

不!最长的等待时间为30分钟,即使这样,红色的大符号表示那真的不好!;) 再次感谢!另外,我已经和老板取得了一致的观点,即使轮候时间确实更长,没有人会真正坐公交车去火车站的时间可能比第一个要长20分钟。;)
fgcartographix

5

在去年的Google Summer of Code程序中,一名学生实现了用于多模式路由的pgRouting功能。它没有进入新的2.0版本,因此它可能暂时不起作用,但是您可能需要查看可用资源以查看它是否有帮助:

最好将此功能添加到下一个版本中,因此如果您感兴趣,请联系开发人员邮件列表以协调必要的工作:http : //pgrouting.org/support.html

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.