我正试图在过境路线上行驶 - 特别是旧金山MUNI,但标准NextBus,GTFS, and Google Maps API似乎是普遍的。我很乐意使用这些API中的任何一个,我只是不确定如何解决这个问题。
简单方法 - 询问Google地图(使用网络服务,但也有javascript API):
这个JSON包括行进的距离,但有两个问题:
编辑:使用alternatives=true
(或provideRouteAlternatives: true
使用javascript API)只返回最多3条路线,这里的SF通常不包括路线I我正在寻找(其他交通机构,同一条路线上的多条线路等)。所以这不是一个很好的选择。
NextBus:
示例路由配置:
http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=1
给出了每个停靠点的坐标,但连接点的坐标与所采用的路线不同 - 它会切角等,我需要这个准确。实际路线是在<path>/<point>
下给出的,但我看不到停车位和路径坐标之间有任何明显的相关性。另外,NextBus在他们的文档(靠近底部的第10页)中说,你不应该在<path>
段之间连接点,它们仅用于在地图上绘制并且可以重叠。
GTFS:
GTFS数据还分隔了停止和“形状”坐标(如NextBus路径)。不幸的是,对于NextBus和GTFS(舍入)之间的相同停靠点,坐标略有不同,尽管停止ID /标记是相同的。此外,数据文件以兆字节为单位,我需要将其用于移动应用程序。我想我可以把所有的数据都放在一个数据库中并查询,但是仍然需要弄清楚如何将停靠点与形状相关联。 shapes.txt文件中的“shapes_distance_traveled”列特别有前途。但是,MUNI选择将可选的“shapes_distance_traveled”字段留在stop_times.txt之外。
任何建议都会受到赞赏,我理解这似乎是一个史诗般的任务,以获得一个简单的价值。也许我只是扔一张地图合法地使用距离:)
答案 0 :(得分:1)
我会考虑OpenStreetMap的无阻碍许可,而不是使用谷歌地图。有多个 routing engines可以使用OSM数据。就个人而言,我会在PostGIS或SQLite中使用路由,但根据您的技能组合,您可以选择另一个。
答案 1 :(得分:0)
你已经清楚地完成了你的研究,(+1),正如你所说,简单的方法就是问谷歌。如果它对您有价值,那么您可能需要查看purchasing a business licence以使用Google Maps API,并与他们协商有关显示地图的要求。这是我能用Google API思考的唯一法律方式。或者,您可以尝试使用TIGER data set中的数据构建您自己的路由引擎,该数据可从美国人口普查局免费获得,但正如您所说,这似乎是一项史诗般的任务。 : - )