杭州实时公交–以B1线为例

=============

更新:

自从我写了这个以后,B1线的实时数据貌似就没有正常过。当初选择B1线无非是因为他是快速公交,比较出名,而且以前坐的也比较多点。既然B1线不行,那就换个别的了。现在用的是194路坐例子,站点是蒋村公交中心站,也就是地图上最上方的那个。反正能说明问题就行了吧。

=============

以前在杭州等车的时候见过路牌上有公交车的到站信息,虽然感觉有时候不太准但还是比较新颖的;后来在网上看到有人做手机端的实时公交应用,但我那时对Web开发还啥都不懂,搞不清楚怎么回事,当然现在也只是知道一点点;再后来又看到些Live、Realtime的应用,感觉到公交也是一个很好的实时例子;去年末写了个公交换乘算法,处理了一些南京市的公交数据,对公交应用也略有了解;上个月初,突然对(www.hzbus.cn)开始感兴趣,找到了它的服务调用地址,顿时以前的一些想法开始脑中翻滚,就开始动手操作了。

最近这个月事情好多,转眼间就过去了,我只是断断续续再做这个事情。碰到的问题也相当相当多,比如服务给的坐标都是经过偏移的,这种致命打击完全让我失去了做一个完整应用的动力;再比如典型的跨域问题,Silverlight对第三方的服务有什么好的解决办法吗?我用的是YQL来做的;还有就是自己的能力不足,对Web开发、Silverlight以及ArcGIS API都只是停留在入门的水平,没有一个完整的项目来驱动,很难更深入的学习了。

简单说说这个例子的思路:地图调的是arcgisonline.cn上的服务,很喜欢gray风格,特别是做Mashup的时候,能很鲜明地突出专题信息;公交线路、站点和车辆实时位置当然是调用前面提到网站中的服务了,但为了实现跨域访问,经过了YQL的一层包装;解析抓取到的数据,都作为简单的Graphic添加到相应图层中;对于实时位置,显然要通过计时器,每隔几秒去抓一次数据,更新位置的。

总的来说,做的比较简单,与我开始的雄心壮志相比不知差了几条街额。下面是这个例子:

这个是杭州B1线,下沙->黄龙方向,终点站黄龙公交中心站(最西边那个站)的实时公交情况。也就是说,假设你在黄龙公交中心站,能看到向你开过来最近的3辆B1车的实时位置(按理应该是这样吧,但实际上服务给的数据还是有出入的)。表格中是三辆车的数据,包括车辆编号,位置和速度。B1的工作时间是到晚上10点,10点以后你肯定看不到公交车啦。

最后,希望有更多的单位出来共享数据,提供友好的API,特别是带GeoLocation的。我想只有这样,我们提的那些智慧城市之类的口号才有实现的可能吧。

分享到:
  1. Pingback: 坐标转换那些事儿 | GeoVisual