3

我正在尝试在公交路线上行驶的距离——尤其是旧金山 MUNI,但标准NextBusGTFS 和Google Maps API似乎是通用的。我很喜欢使用这些 API,只是不知道如何解决这个问题。

最简单的方法 - 询问谷歌地图(这使用网络服务,但也有 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. 我需要确保返回的距离适用于正确的路线/线路,因为它可以/将提供多个路由选项。这可能是可行的,但需要更多的逻辑。

编辑:使用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 之外。

任何建议都将不胜感激,我知道这似乎是一项获得简单价值的史诗般的任务。也许我会扔一张地图来合法地使用距离:)

4

2 回答 2

1

而不是使用谷歌地图,我会研究OpenStreetMap的无限制许可。有多个 路由引擎可以使用 OSM 数据。就个人而言,我会在 PostGIS 或 SQLite 中使用路由,但根据您的技能,您可能会选择另一个。

于 2012-08-29T13:44:54.703 回答
0

您显然已经完成了研究,(+1),正如您所说,最简单的方法是询问 Google。如果这对您来说是值得的,那么您可能需要考虑购买使用 Google Maps API 的营业执照,并与他们协商显示地图的要求。这是我能想到的使用 Google API的唯一合法方式。或者,您可以尝试使用来自美国人口普查局免费提供的TIGER 数据集的数据构建自己的路由引擎,但正如您所说,这似乎是一项史诗般的任务。:-)

于 2012-08-29T07:33:18.010 回答