智能交通之路

查阅 Web 站点,移动应用,开放数据和 APIs 获得公共交通相关信息

由于像 Google Map 和能够许多能够提供大城市公共交通数据的 Web 站点的存在,搭乘公交车上下班 —— 或者来往于机场、商场或者球场公园 —— 变得比以往更加容易。Scott Davis 介绍了如何利用那些可以帮助公共交通变得更加智能的技术来指导您如何去您想去的地方。

Scott Davis, 创始人, ThirstyHead.com

Scott Davis 是国际知名作家、演讲家、软件开发人员。他是 ThirstyHead.com 的创始人,这是一家 Groovy 和 Grails 培训公司。他出版的书籍有 Groovy Recipes: Greasing the Wheels of JavaGIS for Web Developers: Adding Where to Your ApplicationThe Google Maps APIJBoss At Work。他为 IBM developerWorks 撰写两部正在刊发的系列文章:精通 Grails实战 Groovy



2010 年 5 月 20 日

都市拥挤的原貌是什么?

一辆公交车能够轻易容纳 35 位乘客,这个数字相当于三辆轿车所能容纳的。对一辆公车所造成的这一显而易见的巨大差异,您可以查看 “Packing Pavement”(见 参考资料)。正如文中所说,“我们所说的都市拥挤并非指人口过多,而是指在一个小区域内有过多的车辆。”

公共交通减少了交通拥挤和由此产生的污染。同时还降低了用户的压力水平和需要支付的费用。现在许多 Web 站点和移动应用程序帮助全球各个城市的乘客,购物者和游客成为合乎道德的利己者,帮助他们利用交通选项。本文将向您介绍一些巧妙的技术,让您能够搭乘公车(或者轻轨,或者 EI,或者地铁)到您想去的地方,就像在公园散步那样简单。更好的是,您可以将部分此类技术融合到您个人的应用程序中,使您能够对他们的交通机会了如指掌。

交互式 Web 站点几年前就开始提供地图和驾驶向导。向路人询问那些无聊的七拐八拐的驾驶路线的日子已经一去不复返了;您只需在这些网站中输入起点和终点地址,在线引擎就会完成剩下的工作。Google Maps 是公认的用途最广泛的地图网站。在它 2005 年 2 月发布后的几个月内,Web 开发人员就对 Google Maps 进行反向设计,并将从其他网站获得数据导入,在 Google 地图上显示结果从而创建了 mashups。一个无耻的黑客甚至还将 Yahoo!的实时交通数据和 Google 的驾驶向导联系起来。这使得正式的 Google Maps API 于 2005 年 6 月发布。Google Maps 产品的经理开玩笑说,“我们之所以这么做是因为其他人已经在这么做了”(见 参考资料)。

Google Maps

将它和地图混搭

阅读 developerWorks 中有关利用 Google Maps API 创建 mashups 的文章:

通过发布官方的 API,Google 用一种巧妙而大胆的方式转变了 Web 站点的焦点。现在它是一副只欠最后一笔的作品,而不是任意程序员可以能够进行自我创作的画布。Mashups 几乎在一夜之间萌发,它告诉人们哪里能找到最便宜的汽油,警察在哪里设置超速陷阱,以及其他在路上能帮助驾驶员的信息。

这种自己动手的精神在乐于乘公车出行的几位 Google 员工身上也可见一斑。2005 年 12 月,Google Transit Trip Planner 问世。能够选择驾驶向导或者公共交通是它的一个特性,该特性基于今天的 Google Maps — 只要查看紧邻 Get Directions 按钮的下拉菜单。(您也可以选择步行和自行车向导。)

花一点时间试用一下这一新功能。选择您家乡的两个主要旅游景点 — 购物中心,运动场和机场是典型的好选项 — 并在它们之间选择公共交通向导。

Google Maps 允许您相对宽松地设置起点和终点。我分别在 A 和 B 位置输入 Flat Iron Crossing, Broomfield, CO (一个大型购物中心)和 Coors Field, Denver, CO (Colorado Rockies 比赛的棒球场)。这两个地址都出现在我模糊搜索建议清单的接近顶部位置,只需单击一下,相应的信息就会出现在适当位置。不需要知道任意目标的准确地址,我现在就能获得两地之间的路线,如图 1 所示:

图 1. Google Maps 显示的公共交通向导
Flat Iron Crossing 和 Coors Field 间的地图和向导的 Google Maps 截图

当您在 Google Maps 中选择了公共交通,您还需要提供一个额外的标准 — 您想要的出行时间。因为公车和铁路遵循特定的时间表,您需要确保您在正确的时间出现在正确的地方。单击 Show Options 来显示 Arrive 和 Depart 的区域,并选择您想要出发和到达的任一时间。Google Maps 会调整相应的建议路线,如图 2 所示:

图 2. 在 Google Maps 中调整您的出行时间
显示出发和到达时间的截图

在您尝试过购物中心和运动馆之后,试着输入您的家庭地址和工作地址。我发现离我家只需 5 分钟的地方有一个室内的停车换乘停车场,只要购买公车票就能白天免费停车。特快巴士可以在离我公司几个路口的地方放下我。在高峰时间,两个小时内每 10 分钟就有一辆巴士经过。无需停止,无需中转,无需等待,我每天上班都能有一个毫无耽搁的公共交通解决方案。Google Maps,谢谢你。


Google Transit

如果您所在的城市在 Google Maps 上没有显示公共交通选项,这是因为您所在当地交通机构没有向 Google 提交它的详细清单。您可以访问 Google Transit 网站,如图 3 所示,查看您所在城市是否在清单上:

图 3. 查看您所在的交通机构是否出现在 Google Transit 中
Google Transit 的 Web 站点截图

想要加入到 Google Maps 中,交通机构只需简单地按 General Transit Feed Specification(GTFS)格式提供它的路线数据,将其放置在一个大众可访问的 URL,让 Google 知道在哪里找到它(见 参考资料)。在这之后,Google 会每隔一段时间下载这些文件,确保使用最新的信息来计算路线。

GTFS 格式是一系列相关的逗号分隔值(CSV)文件。例如,图 4 显示了一些机构,站点和路线的示例数据:

图 4. GFTS 格式的简单例子
Web 网页显示 GTFS 格式数据对交通机构有用的例子的截图

如果您是一个经验丰富的编程人员,您或许很惊异 Google 选择使用 CSV 文件,而不是更新的格式,例如 XML 或者 JavaScript Object Notation(JSON)。在一个固定 URL 中的 CVS 文本 ZIP 文件并不是用于划分界限,而是尽可能地移除阻止参与到项目中的技术壁垒。作为一个行业,我们似乎在无休止地争论 Web 服务的复杂解决方案的相关优点,比如 SOAP 对 REST 和 XML 对 JSON;这个简单的解决方案也再次提醒了我们在简洁之中还有高明之处。

“rtd gtfs” 的快速 Web 搜索向我们指明网页,如图 5 所示,Denver transit authority(RTD)提供了它的 GTFS 文件。有了每个站点的纬度/经度坐标,现在我就有了编写自己 killer Google Maps mashup 的原料。

图 5. Denver RTD GTFS Web 网页
Denver RTD GTFS Web 网页的截图

如果您想要在一个交通机构升级它的 GTFS 文件时获得通知,您可以订阅一个 RSS 提要,您可以有选择地指定某个交通机构(见 参考资料)。例如,我可以查看图 6 所示的结果,RTD 最后一次升级它的 GTFS 文件是在大约三周以前。根据提要的历史记录,看起来 RTD 大约每隔一季度会升级一次。

图 6. GTFS Exchange Web 站点
GTFS Data Exchange Web 站点上 Denver RTD 的 Web 网页截图

City-Go-Round

City-Go-Round Web 站点在 2009 年 12 月在线推出(见 参考资料)。除了作为一个开放式交通数据 — 正如它所写的,108 个美国交通机构提供开放式数据而 677 个不提供 — 的倡导 Web 站点,它还是一个交通相关的 Web 站点和移动应用的信息交互中心。图 7 显示了 City-Go-Round 的主页:

图 7.City-Go-Round Web 站点
City-Go-Round Web 站点的截图

单击网页顶部的 Agencies 链接。在那里,您可以选择您所在的州,并快速查看在您的区域中有哪些提供了公共交通。您还可以查看他们是否提供开放式数据。

如果您滚动到网页的底部,您将会看到信息可以作为 CSV 或者 JSON 输出。这些数据包括每个交通授权的纬度/经度坐标 — 这为您的 mashup 提供了更多的资源。在图 8 中,例如,我正在查找 Colorado 的公共交通选项:

图 8. 在 Colorado 查找公共交通选项
City-Go-Round 的 Colorado 公共交通选项 Web 网页的截图

City-Go-Round 的 About 页面提供了一个有趣的开放式交通数据的可视化,如图 9 所示;

图 9. 可视的开放式交通数据
图 9. 可视的开放式交通数据

图 9 中每个圆圈的大小就表示了相应的交通机构的大小。较暗的圆圈就表示提供开放式数据的机构。

如果您单击 About 网页上的图标,它就会将您带到 IBM alphaWorks 的 ManyEyes 数据可视化 Web 站点。ManyEyes 应用程序 — 作为一个交互式 Java™ applet 实现— 允许您单击各种圆圈来获取更多信息。


移动电话应用程序

从 Android 着手

了解更多移动应用程序的 Android 环境:

到目前为止我所提到的 Web 站点都是您在家进行旅程规划的最佳资源。但是当您已经出发在路上时要怎么办?幸运的是,我们还有一个充满活力的交通相关移动电话应用程序的生态系统。如果您单击 City-Go-Round 顶部的应用程序链接,您将会看到 iPhone、Android,BlackBerry 等等的优化移动应用程序。

输入 Denver, CO 会帮您把清单缩短到那些能在该区域内帮助您的应用程序,如图 10 所示:

图 10. Denver,Colorado 的移动应用程序
City-Go-Round 上 Denver,CO 应用程序的 Web 网页截图

点击查看大图

图 10. Denver,Colorado 的移动应用程序

City-Go-Round 上 Denver,CO 应用程序的 Web 网页截图

这些应用程序的一部分限制在 RTD 轻轨。其他的注意力则集中在特定的目的地,比如到机场的路线。每个应用程序的评级,评论和屏幕截图会帮助您决定哪个才是最符合您需要的。

在评估 — 或者创建您自己的 — 移动应用程序时,一个重要的考虑就是它们是否在本地存储数据,或者进行临时的信息搜集。这对于地铁乘客来说尤为重要,这些人在地下时经常没有手机信号。使用本地存储的数据能有较快的响应,但是应用程序需要每隔一段时间就进行升级,保证用户查看的不是过时的信息。

对一些应用在您自己的移动交通应用程序的灵感(这样您就不必重新发明众所周知的轮子),请务必在 City-Go-Round 上查询这些好处是免费的或者低收费的(见 参考资料 中其所在网页的链接)。

UniBus

UniBus 是一个 iPhone 应用程序,它提供对所有城市的支持,当然,是那些按 GTFS 格式提供开放式数据的城市。因为我常常旅行,在我右边的口袋里放入格式统一的所有交通信息是一个极具吸引力的远景。数据存储在本地,这样我还在飞机上时就可以搜索巴士和铁路线路。这个应用程序还提供 Google Maps 可视化,估计到达时间,保存您 “最喜欢” 的路线等等功能。

Acrossair

Acrossair 是一个 iPhone 应用程序,他使用内置的视频摄像头来提供一个您当前位置的实时扩大实景图。拿起手机,通过它来看,您可以看到您所在的巴士线路或者最近的地铁站点在哪。这个功能不是在所有城市都能应用,但是如果您身在 New YorK、Washington,D.C.,Chicago 或者 San Francisco,而且您还有一部 3GS iPhone,那么您就拥有自己的公共交通智能显示。

One Bus Away

One Bus Away 提供一个实时显示功能,它可以显示在任意给定时间一个交通系统中所有巴士的所在位置。只有几个交通机构现在向大众提供实时巴士定位;Seattle 的 King County Metro 就是其中之一。目前 One Bus Away 只能在 Seattle 及其周边应用,但是随着越来越多的交通机构提供其实时数据,势必会出现独立的应用程序。

当我去 Redmond 的途中遇上倾盆大雨,我可以站在遮阳棚下查看我的 iPhone,在 Google Map 上看我的巴士还要多久能到。每个 10 到 15 秒,那些表示各个巴士的图标就会在地图上更新它的位置。一旦我坐上了巴士,我使用应用程序来计算我离最终目的地还有多远。我可以看到沿途所有应停站点,这样我就知道什么时候该拉 “Stop Requested” 线。这是我第一次坐巴士,但我感觉像个经验丰富的老手。


结束语

无论您的意图是利他还是利己(或者两者都有),您都应该利用那些您所在城市可用的公共交通选项。和 Web 站点类似,比如 Google Maps,它帮助您轻松地开始使用,还有倡导网站,比如 City-Go-Round,它为您提供使利用更便捷的所需移动工具。在您开始设计自己的交通应用程序时,它们是不可或缺的资源。

从社区规划和技术间交集的更高层次角度来说,您可以开发 The Open Planning Project(TOPP)(见 参考资料)。TOPP,一个 “技术驱动的社会性企业”,是世界上生产开放源码软件的最大组织之一。交通变革就是 TOPP 的主要倡议之一。例如当 Portland,Oregon 的一流 TriMet 交通系统想要检测其互动系统地图,将其和现有的出行规划集成一体时,TriMet 和 TOPP 联手将专有组件替换为开放源码。(事实是:我曾担任这个项目的咨询师。) TOPP 的另一个伟大项目就是 Streetsblog — 一个新闻资源,在线社区和政治倡导,它为那些想通过减少对汽车的依赖,改善自行车,步行和公共交通利用者环境,从而改变城市的个人和组织服务(见 参考资料)。

参考资料

学习

  • Packing Pavement”(Jim Beamguard,Tampa Bay Online,1999 年 7 月):车辆,而不是交通系统,导致了城市拥挤。
  • Google Maps:获取到 Google Maps 网站的链接。
  • Map Hacks on Crack”(Wired,2005 年 7 月):阅读 Google Maps API 的发布。
  • GTFS:这个网页解释了组成 GTFS 交通提要的文件的类型,定义了这些文件使用的领域。
  • GTFS Data Exchange:交通部门在这里上传它们的 GTFS 数据。您也可以在这里订阅一个 RSS 提要来获得 GTFS 数据升级。
  • City-Go-Round:City-Go-Round 帮助人们找到交通应用程序,并鼓励公共交通机构向软件厂商开放其数据。
  • 深入了解本文介绍的三个移动应用程序:
  • The Open Planning Project:了解 TOPPS 如何利用开放源码软件,帮助构建 更好的交通工具,包括 Portland 的 TriMet
  • Streetsblog:查询 New York、Los Angeles,San Francisco 以及 Washington,D.C 的 Streetsblog。
  • 技术书店:浏览该主题和其它主题的图书。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Java technology
ArticleID=489885
ArticleTitle=智能交通之路
publish-date=05202010