Rover's Official Blog

Map/GPS/GIS/WebMap

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  47 随笔 :: 0 文章 :: 430 评论 :: 41 Trackbacks

一直不明白公交换乘的原理,更不懂最短路径的算法,只是有点想法,想说出来看大家觉得是否可行。
先贴一个来自GIS开发者的《GIS中最短路径的实现》,和GIS空间站的《GIS 领域最短路径搜索问题的一种高效实现》,以及台湾的《最短路径问题》

如果是基于拓扑关系的公交换乘也许简单些,毕竟节点什么的通过拓扑关系肯定有了。也许更复杂些,因为判断拓扑关系的话可能需要遍历所有的路径,这样速度可能会变慢。
那么基于数据库的公交换乘肯定也应该有这些拓扑关系,只是这个拓扑关系应该保存在数据库中(不明白GeoDataBase中的拓扑关系是什么保存的)。那么拓扑关系应该如何保存呢?表应该如何建立呢?先画个模型图,不知道正确与否,如果错误请指正。

图中指出,公交换乘和站台(Node)、路段(Road)距离有关,其中又与枢纽站(V什么的单词,忘了,不好意思,用Hinge代替下吧,Hinge是特殊的Node)有很大的关系。
无法表达清楚我的意思,大体意思是起点处开始搜索下一节点,下一节点是枢纽则搜索枢纽相交的线路,继续搜索每条线路上的节点,如此反复,直到最后到达终点。当然这样会算出很多条路线,有些路线换乘多有些路线换乘少,那么控制换乘次数(不要超过3次),并控制最短路径(各站点间距离之和),这样算是最佳路径呢?
请哪位理解的朋友帮我在这里用VISO这样的软件画个流程图,谢谢了。

换乘一:从B4到C5。
方案1:B4->B3->H1(B2/C2)->H2(A2/C3)->C4->C5
换乘次数/枢纽站:1/2
距离:DB3+DB2+DC2+DC3+DC4
方案2:B4->B5->B6->H3(B7/C6)->C5
换乘次数/枢纽站:1/1
距离:DB4+DB5+DB6+DC5

换乘二:从A1到C6。
方案1:A1->H2(A2/C3)->C4->C5->H3(B7/C6)
换乘次数/枢纽站:1/1
距离:DA1+DC3+DC4+DC5
方案2:A1->H2(A2/C3)->H1(B2/C2)->B3-B4->B5->B6->H3(B7/C6)
换乘次数/枢纽站:2/2
距离:DA1+DC2+DB2+DB3+DB4+DB5+DB6

换乘三:从A1到B4。
方案1:A1->H2(A2/C3)->C4->C5->H3(B7/C6)->B6-B5-B4
换乘次数/枢纽站:2/2
距离:DA1+DC3+DC4+DC5
方案2:A1->H2(A2/C3)->H1(B2/C2)->B3-B4
换乘次数/枢纽站:2/2
距离:DA1+DC2+DB2+DB3

搞不懂MAPBAR的公交换乘,只是觉得它的公交换乘很烂,他们的肯定不是基于矢量地图的,那么是基于数据库的?极索的好一点,可能是基于JAVA小程序的缘故?还是因为它预先保存了公交线路换乘?
实在是表达不清楚,请大家补充。
如果思路明了了,那么数据库该如何建立?每条公交线路、每条公交线路站点、相邻公交站点间的距离、枢纽站的公交线路等这些信息在数据库中如何存放和组织?

posted on 2006-05-28 11:17 Rover.Tang 阅读(4754) 评论(17)  编辑 收藏 所属分类: GIS

评论

#1楼  2006-05-28 10:05 马维峰      
应该大多数公交换乘是基于数据库的,而不是基于矢量网络的。

  回复  引用  查看    

搞不懂MAPBAR的公交换乘,只是觉得它的公交换乘很烂,他们的肯定不是基于矢量地图的,那么是基于数据库的?

是哪里做的很烂?换乘方案错误吗?
  回复  引用    

#3楼 [楼主] 2006-05-29 21:00 浪人|努力      
@dean@mapbar
HOHO,终于有MAPBAR的站出来说话了。
以前想写一篇关于公交换乘的,但一直没写出来。
和极索的相比,你们做的真的不好。换乘的方案基本上是不可取。
有时间拿实例来博你们。
还有一个问题,你们和百度分开了吗?百度的公交算法好像不是你们的公交算法耶,至少我敢肯定一点的是你们和百度的公交数据库就不一样,可能买的不同。
  回复  引用  查看    

#4楼  2006-05-29 22:41 mikespook      
如果玩过博弈,其实这里可以加入一个博弈的算法技巧~~
很简单~~

图论中的最短路径在真实的公交换乘中并不一定是最好的路径,那么可以给换乘次数,总站点数,路径长度等信息分别加权~~计算每条路径的分数然后根据权值给出最好的路径~~~

另外,使用applet的好处大概就是将一部分计算放到客户端,这样减轻服务器的压力,同时也能够进行更细致的处理~~
  回复  引用  查看    

@浪人|努力
你是在上海吧。GSUO对于我们来说是个比较重要的竞争对手。我也听很多朋友反映过GSUO把上海的本地化做的很好。关于上海的公交换乘方案可能是不如他们。假如方便的话推荐个上海的公交网。我们可以让数据部给做进去。另外BAIDU数据跟我们用的一样,只是他们的测试比较严格。所以数据会较MAPBAR的晚几天。
  回复  引用    

@mikespook
有点道理
  回复  引用    

#7楼 [楼主] 2006-05-30 20:18 浪人|努力      
@dean@mapbar
你说上海的公交,我想很多地方都找到,你们也有这数据,只是我不知道你们在哪里买的而已。至于公交网,当然上官方网站,www.jt.sh.cn,他们也有自己的公交换乘,只是基于插件的,效果和你们差不多,还能说的过去,使用上倒不是很方便。
说百度的公交和你们一样我是不敢相信的。同样一个地方到另一个地方,怎么你们那就没有路线百度那就有路线呢?呵呵。
顺便问下,据说你们用的是四维的数据,但四维现在的城市数量好像和你们的还有点差距,而且重要的是你们推出的英文地图,那英文地图的数据是哪里的呢?这个问题只是好奇,对数据公司有点了解,所以想问问,谢谢。
  回复  引用  查看    

你把百度能查到,MAPBAR查不到的案例发一下。谢谢。数据我们是自己采集+四维的。英文信息已经包含在四维提供的数据里了。
  回复  引用    

#9楼 [楼主] 2006-05-31 21:04 浪人|努力      
@dean@mapbar
上次是查到外环以外的线路的时候出现这样的情况的,mapbar没有算出来,百度算出了一条文字线路。可能是你们测试的时间不同而已吧。不知道采集的文字路线是否也纳入公交换乘呢?
英文信息已经包含在四维提供的数据里。不太明白这个意思。是指英文是四维提供的吗?不过看了下英文地图觉得你们在这上面自己处理的东西也不少,毕竟四维的所谓的英文地图真的不敢恭维。

  回复  引用  查看    

#10楼  2006-07-04 10:41 New Yang Bo Element       
我们也正在搞这样一个项目,很难吗?
  回复  引用  查看    

#11楼 [楼主] 2006-07-04 19:40 浪人|努力      
@New Yang Bo Element
也许不难。最近有点思路。准备写点代码,然后发上来。
不知道有没有时间去研究下。
  回复  引用  查看    

#12楼  2006-10-18 16:30 rainbow [未注册用户]
看别人做过,用邻接矩阵保存数据
效果比较差,但可以使用

如果仅仅是考虑公交线路的话,那不过是建立一个图而以
只不过图中可能还要考虑到换乘次数、是否有座位
普通、空调、地铁等轨道交通,并设定不同的权值(经验了)
但如果考虑到实际情况中还有步行的话,那个图一直没有找到一个比较
好的想的
  回复  引用    

我做公交换乘的,不用数据库保存。
作品获得来07年四川省同方杯软件设计大赛的一等奖
  回复  引用    

你的图是用什么软件画的?
  回复  引用    

#15楼  2008-03-07 12:02 Alic      
我并不觉得mapbar的公交换乘做得好。
也就一般化吧。

请mapbar的人把你们的性能参数拿出来。
我跟你比比。
我的算法平均耗时0.8秒(p4 2.4G 内存256M)
可支持并发。
  回复  引用  查看    

#16楼  2008-05-20 11:43 cooljz168 [未注册用户]
谁有好的算法或比较详细的文档,正在做这个,感觉挺难的,那位高人发一份给我,多谢了!!!e-mail:chinaqian@126.com
  回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交