如何对类似的 GTFS 行程进行分组

How to group similar GTFS trips

我需要将 GTFS 行程分组为人类可以理解的 "route variants"。由于一条路线可以根据 day/time 等 运行 不同的行程

是否有任何首选方式来对相似的旅行进行分组?行程 shape_id 看起来很有希望,但是是否可以保证所有类似的行程都具有相同的 shape_id?

我的 GTFS 数据是导入我的 sql 数据库,数据库结构与 GTFS txt 文件相同。

更新 我不是在寻找 sql 查询示例,而是在寻找高级示例如何将相似的旅行分组以方便用户使用 "route variants"。

许多路线规划应用程序(如 Moovit)使用 GTFS 数据作为来源,它们向用户显示不同的路线变体。

没有官方方法可以做到这一点。最好的方法可能是按每次行程中停靠点的有序列表进行分组,有时称为行程的 "stopping pattern"。 Mapzen 在概念层面 here 讨论了这个想法。

在实践中,我创建了给定行程(从 stop_times 开始)的所有站点的串联字符串,并按其分组以定义类似的行程。例如,如果给定行程的停靠点是 ABCDE,则创建字符串 A-B-C-D-EA_B_C_D_E 和该字符串的团体旅行。此功能不是 SQL 规范的一部分,尽管 MySQL 将其实现为 GROUP_CONCAT 并且 PostgreSQL 使用数组和 array_to_string。您可能还想将 route_idshape_id 添加到分组中,以处理一些特殊情况。