我想要获得在过境路线上行驶的距离 - 特别是旧金山MUNI,但标准NextBus,GTFS, and Google Maps API似乎是通用的。我很喜欢使用这些API中的任何一个,但我不知道如何解决这个问题。GTFS/NextBus /谷歌地图 - 旅行距离
最简单的办法 - 让谷歌地图(在使用web服务,但也存在的JavaScript API):
这个JSON包括行驶距离,但有两个问题:
- 谷歌不允许你,除非你显示在地图上,我不想这样做使用此数据
- 我需要确保返回的距离是正确的路线/线路,因为它可以/将提供多个路线选项。这可能是可行的,但需要更多的逻辑。
编辑:(使用JavaScript API或provideRouteAlternatives: true
)只返回最多3条航线,其中在这里经常SF不包括我在寻找(其他运输机构的路线采用alternatives=true
,多线路在同一条路线上等)。所以这不是一个很好的选择。
NextBus:
例如路由配置:
http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=1
每个站的坐标给出,但在连接这些点是不一样所走的路线 - 它会削减角落等,我需要这是准确的。实际采取的路线在<path>/<point>
下给出,但我没有看到停止和路径坐标之间有任何明显的相关性。另外,NextBus在他们的文档(p.10附近的底部)中说,你不应该连接<path>
段之间的点,它们只能用于在地图上绘图并且可以重叠。
GTFS:
的GTFS数据也分开停止和 “形状” 坐标(像NextBus路径)。不幸的是,NextBus和GTFS之间的同一站点(舍入)的坐标略有不同,尽管站点ID /标签是相同的。另外,数据文件的格式为兆字节,我需要将其用于移动应用程序。我想我可以把所有的数据放在一个数据库中,然后查询它们,但是这仍然导致如何将停靠点和形状关联起来。 shapes.txt文件中的“shapes_distance_traveled”列特别有用。尽管如此,MUNI选择离开stop_times.txt的可选“shapes_distance_traveled”字段。
任何意见,将不胜感激,我明白这似乎是一个史诗般的任务,以获得一个简单的价值。也许我会只是扔一个地图合法地使用距离:)
感谢OpenStreetMap的提示 - 乍看之下,公交覆盖似乎非常有限(至少在SF中),但我会检查一下。 – carillonator