GTFS / NextBus /谷歌地图 - 旅行的距离

时间:2012-08-29 00:52:45

标签: google-maps-api-3 gps gtfs

我正试图在过境路线上行驶 - 特别是旧金山MUNI,但标准NextBusGTFS, and Google Maps API似乎是普遍的。我很乐意使用这些API中的任何一个,我只是不确定如何解决这个问题。

简单方法 - 询问Google地图(使用网络服务,但也有javascript API):

http://maps.googleapis.com/maps/api/directions/json?origin=37.7954199,-122.397&destination=37.7873299,-122.44691&sensor=false&mode=transit&departure_time=1348109609&alternatives=true

这个JSON包括行进的距离,但有两个问题:

  1. Google不允许您使用此数据,除非您正在显示我不想做的地图
  2. 我需要确保返回的距离是正确的路线/线路,因为它可以/将提供多个路由选项。这可能是可行的,但需要更多的逻辑。
  3. 编辑:使用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之外。

    任何建议都会受到赞赏,我理解这似乎是一个史诗般的任务,以获得一个简单的价值。也许我只是扔一张地图合法地使用距离:)

2 个答案:

答案 0 :(得分:1)

我会考虑OpenStreetMap的无阻碍许可,而不是使用谷歌地图。有多个 routing engines可以使用OSM数据。就个人而言,我会在PostGIS或SQLite中使用路由,但根据您的技能组合,您可以选择另一个。

答案 1 :(得分:0)

你已经清楚地完成了你的研究,(+1),正如你所说,简单的方法就是问谷歌。如果它对您有价值,那么您可能需要查看purchasing a business licence以使用Google Maps API,并与他们协商有关显示地图的要求。这是我能用Google API思考的唯一法律方式。或者,您可以尝试使用TIGER data set中的数据构建您自己的路由引擎,该数据可从美国人口普查局免费获得,但正如您所说,这似乎是一项史诗般的任务。 : - )