我正在尝试在公交路线上行驶的距离——尤其是旧金山 MUNI,但标准NextBus、GTFS 和Google Maps API似乎是通用的。我很喜欢使用这些 API,只是不知道如何解决这个问题。
最简单的方法 - 询问谷歌地图(这使用网络服务,但也有 javascript API):
此 JSON 包括行驶距离,但有两个问题:
- 除非您显示地图,否则 Google 不允许您使用这些数据,我不想这样做
- 我需要确保返回的距离适用于正确的路线/线路,因为它可以/将提供多个路由选项。这可能是可行的,但需要更多的逻辑。
编辑:使用alternatives=true
(或provideRouteAlternatives: true
使用 javascript API)最多只能返回 3 条路线,这在 SF 中通常不包括我正在寻找的路线(其他交通机构、同一条路线上的多条线路等)。所以这不是一个很好的选择。
下一班车:
示例路由配置:
http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=1
给出了每个站点的坐标,但连接这些点与所走的路线不同——它会偷工减料,等等,我需要这个是准确的。实际采取的路线如下所示<path>/<point>
,但我没有看到停靠点和路径坐标之间有任何明显的相关性。另外,NextBus 在他们的文档(靠近底部的第 10 页)中说,您不应该在<path>
段之间连接点,它们仅用于在地图上绘制并且可以重叠。
GTFS:
GTFS 数据还分隔停止和“形状”坐标(如 NextBus 路径)。不幸的是,NextBus 和 GTFS(四舍五入)之间的相同站点的坐标略有不同,尽管站点 ID/标签相同。此外,数据文件以兆字节为单位,我需要将其用于移动应用程序。我想我可以将所有数据放入数据库并进行查询,但这仍然需要弄清楚如何将停靠点与形状相关联。shape.txt 文件中的“shapes_distance_traveled”列特别有前景。不过,MUNI 选择将可选的“shapes_distance_traveled”字段保留在 stop_times.txt 之外。
任何建议都将不胜感激,我知道这似乎是一项获得简单价值的史诗般的任务。也许我会扔一张地图来合法地使用距离:)