一种快速检索公交换乘方案的方法技术

技术编号:18256478 阅读:46 留言:0更新日期:2018-06-20 08:16
本发明专利技术公开了一种快速检索公交换乘方案的方法,在海量的可能的公交线路组合中,通过预先计算直达和步行换乘作为缓存、实时计算多次换乘,查找最优的换乘方案的快速方法;本发明专利技术的实施流程为:建立基础数据缓存;构造步行可达矩阵;计算直达站点对;计算步行直达站点对;计算多次换乘方案;现有的技术方案采用实时计算,一旦遇到三次及以上换乘才能抵达的站点对,计算速度会超过10s。从实际系统中测得,经过此方案预先计算缓存后,3次甚至4次换乘的站点对,也能在5秒之内得出结果,直达或二次换乘方案,往往不超过300ms。

A method for fast retrieval of bus transfer scheme

The present invention discloses a method for fast retrieval of bus transfer scheme. In the mass possible combination of bus lines, the fast method of searching the optimal transfer scheme by calculating direct and walking transfer in advance is a fast method to find the optimal transfer scheme in advance. The implementation process of the invention is to establish the basic data cache; Make the walking reachable matrix; calculate the direct station pair; calculate the walking direct station; calculate the multiple transfer scheme; the existing technical scheme uses real time calculation. Once the three and above transfer can reach the station, the calculation speed will exceed 10s. From the actual system, after this scheme is pre calculated, 3 or 4 times of transfer stations can also get the result in 5 seconds, and the direct or two transfer scheme is often not more than 300ms.

【技术实现步骤摘要】
一种快速检索公交换乘方案的方法
本专利技术涉及一种公交换乘的快速检索换乘方案的方法,在海量的可能的公交线路组合中,通过预先计算直达和步行换乘作为缓存、实时计算多次换乘,查找最优的换乘方案的快速方法。
技术介绍
公交换乘检索是计算机系统接收公交站点对输入、通过查询城市公共交通线路及站点数据,得到从起点站出发、经过乘车、中间站点换乘、步行等方式抵达终点站的综合方案的技术。公交换乘检索系统是城市公共交通服务的重要组成部分,在城市普通市民、旅游者有着重要作用。系统通过PC端、Web端、移动端等方式提供服务,在GIS地图上显示规划线路、并提供文字说明,方便市民和旅游者的日常工作、学习、参观游览等的交通需求。随着城市公共交通线路的增多,城市的扩张,站点之间的换乘方案也越来越复杂,使用传统方法检索方案的响应时间也越来越长。为了解决上述问题,公交换乘检索系统使用了缓存技术、预先计算能直达和步行直达的站点对,放入缓存中,在多次换乘中,可经过较少次的循环,对已经存在的直达方案进行组合,生成二次、三次及以上的换乘方案。
技术实现思路
针对现有技术中存在的上述问题,本专利技术提供一种通过建立直达和步行直达站点对的缓存结构,大幅缩短换乘方案检索时间,实现全市域公交换乘方案检索的流程。为实现上述目的,本专利技术采用一种快速检索公交换乘方案的缓存结构,该缓存结构从小到大包括以下四个层级:换乘段(Segment):指完整不可分割的一段步行(WalkSegment)、或乘坐公交车(BusSegment)、或乘坐地铁(SubwaySegment)的出行方式。换乘方案(TransferPlan):指由多个换乘段(Segment)构成的、从起点站到终点站完成的换乘计划。包括了整个换乘方案的总距离、总步行距离、总花费时间、总金额和总换乘次数等信息。换乘方案缓存(TransferCache):指包含多个换乘方案(TransferPlan)的一对站点对的换乘方案的集合,包括了对换乘方案数量的统计、纯公交方案的统计、纯地铁方案的统计和各换乘次数方案的统计等。换乘矩阵(MatrixCache):是一个双重HashMap,HashMap的外层key是起点站点的id,HashMap的内层key是终点站点的id,value是起点和终点间的换乘方案缓存(TransferCache)。计算机内存所保存的缓存数据由公交线路数据、公交站点数据、公交线路所包含的站点数据、公交站点所包含的公交线路数据、一定距离(500m)内公交站点对步行可达矩阵数据、预先计算的直达和步行直达能够连通的公交站点对,以及无需计算换乘方案的站点对集合(needlessPairSet:两站点间距离太近等情况)等数据组成。公交线路和站点及相互关联的基础数据从数据库读取。一定距离内公交站点对步行可达矩阵由基础数据计算两两站点距离生成。直达站点对数据由公交站点所包含的公交线路数据做集合相交运算获得。步行直达包含三种情况,第一种是指从起点站步行一段距离到达上车站、然后直达抵达终点站,第二种是指从起点站坐车到达下车站、再步行一段距离到达终点站,第三种是指从起点站步行一段距离到达上车站、在下车站下车后,步行一段距离到达终点站,这种情况要保证前后的步行距离总和不超过限定的最大步行距离。一种快速检索公交换乘方案的方法:该方法包括以下步骤:步骤1:建立基础数据缓存从数据库读取公交线路及站点的基础数据,分别保存到以线路id和站点id为key,以线路详情和站点详情为value的Hashmap(lineMap和stationMap)中。按顺序读取某条线路的各个站点,存入List中,作为value,同样以线路id为key,保存到另一个Hashmap(lineStationMap)中;读取某个站点所经过的所有线路,存入List中,作为value,以站点id为key,保存到另一个Hashmap(stationLineMap)中。步骤2:构造步行可达矩阵双重循环stationMap的每一个站点,分别作为起点和终点,排除掉起点和终点id相同的情况,根据两站点的空间距离,如果在500m范围内,则构造步行换乘段对象作为value。存入以“起点id-终点id”为key的HashMap(walkMap)中。由于城市的公交站点数量往往以千计数,因此在步骤2中,需要一些加速方式:1)在计算两站点的空间距离之前,先判断从终点到起点是否已在矩阵中,如果存在,则直接将步行换乘段的起终点互换存入矩阵。2)计算两站点间的步行段,是另一个复杂的算法,且需要步行导航图等基础数据的支持,由于城市中的局部道路网络属于网格结构,因此对于公交换乘采用两点间的曼哈顿距离作为步行距离进行判断,从而加速步行段距离计算。3)对于步行距离<300m的站点对,及站点id不同,但名称相同且距离也很近的站点(往往是同一条线路两个方向的同一个站点),对乘客而言直接步行抵达即可,因此存入needlessPairSet中,在后续计算直达及多次换乘时,可直接跳过,从而加速检索速度。4)对于地铁站点,一个站点往往对应了多个出入口,在计算步行距离时,如果在500m范围内,进一步循环判断距离最近的出入口,将出入口信息设置到步行段中。步骤3:计算直达站点对与计算步行可达站点对类似,双重循环stationMap中的每一个站点,跳过id相同和needlessPairSet中的站点。对起点站点的关联线路List和终点站点的关联线路List取交集,如果交集不为空,并且对交集中的每条公交线路,起点所属的站点序号比终点所属的站点序号要小,则两站点之间有直达方案,并将方案存入MatrixCache中。步骤4:计算步行直达站点对1)计算先步行再坐车的方案。双重循环stationMap中的每一个站点,跳过id相同、在needlessPairSet中,且已经有直达方案的站点对。循环起点站点的所有步行可达站点、判断每个站点到终点站点的直达情况,对于有直达方案的,将步行段与坐车段合并,组合步行直达的方案,存入起终点的TransferCache中。2)计算先坐车再步行的方案。双重循环stationMap中的每一个站点,跳过id相同、在needlessPairSet中,且已经有直达方案的站点对。循环终点站点的所有步行可达站点、判断起点到每个站点的直达情况,对于有直达方案的,将坐车段与步行段合并,组合步行直达的方案,存入起终点的TransferCache中。3)计算先步行再坐车再步行的方案。双重循环stationMap中的每一个站点,跳过id相同、在needlessPairSet中,且已经有直达方案的站点对。双重循环起点站点和终点站点的所有步行可达站点、判断起点步行站点到终点步行站点的直达情况,对于有直达方案的,将前后步行段与坐车段合并,组合步行直达的方案,存入起终点的TransferCache中。4)结果选优对于步骤4中1)-3)三种出行方式的结果,筛选并保留不超过三条方案,存入MatrixCache中;这三条方案指的是根据步行距离、总时间、总距离、总花费等综合因素评估得出。步骤5:计算多次换乘方案通过步骤1-4将所有需要缓存的方案计算出来,接下来,对于用户输入的任意一个站点对,首先从MatrixCach本文档来自技高网...
一种快速检索公交换乘方案的方法

【技术保护点】
1.一种快速检索公交换乘方案的缓存结构,其特征在于:该缓存结构从小到大包括以下四个层级:换乘段(Segment):指完整不可分割的一段步行(WalkSegment)、或乘坐公交车(BusSegment)、或乘坐地铁(SubwaySegment)的出行方式;换乘方案(TransferPlan):指由多个换乘段(Segment)构成的、从起点站到终点站完成的换乘计划;包括了整个换乘方案的总距离、总步行距离、总花费时间、总金额和总换乘次数信息;换乘方案缓存(TransferCache):指包含多个换乘方案(TransferPlan)的一对站点对的换乘方案的集合,包括了对换乘方案数量的统计、纯公交方案的统计、纯地铁方案的统计和各换乘次数方案的统计;换乘矩阵(MatrixCache):是一个双重HashMap,HashMap的外层key是起点站点的id,HashMap的内层key是终点站点的id,value是起点和终点间的换乘方案缓存(TransferCache);计算机内存所保存的缓存数据由公交线路数据、公交站点数据、公交线路所包含的站点数据、公交站点所包含的公交线路数据、一定距离(500m)内公交站点对步行可达矩阵数据、预先计算的直达和步行直达能够连通的公交站点对,以及无需计算换乘方案的站点对集合needlessPairSet:两站点间距离太近情况数据组成;公交线路和站点及相互关联的基础数据从数据库读取;一定距离内公交站点对步行可达矩阵由基础数据计算两两站点距离生成;直达站点对数据由公交站点所包含的公交线路数据做集合相交运算获得;步行直达包含三种情况,第一种是指从起点站步行一段距离到达上车站、然后直达抵达终点站,第二种是指从起点站坐车到达下车站、再步行一段距离到达终点站,第三种是指从起点站步行一段距离到达上车站、在下车站下车后,步行一段距离到达终点站,这种情况要保证前后的步行距离总和不超过限定的最大步行距离。...

【技术特征摘要】
1.一种快速检索公交换乘方案的缓存结构,其特征在于:该缓存结构从小到大包括以下四个层级:换乘段(Segment):指完整不可分割的一段步行(WalkSegment)、或乘坐公交车(BusSegment)、或乘坐地铁(SubwaySegment)的出行方式;换乘方案(TransferPlan):指由多个换乘段(Segment)构成的、从起点站到终点站完成的换乘计划;包括了整个换乘方案的总距离、总步行距离、总花费时间、总金额和总换乘次数信息;换乘方案缓存(TransferCache):指包含多个换乘方案(TransferPlan)的一对站点对的换乘方案的集合,包括了对换乘方案数量的统计、纯公交方案的统计、纯地铁方案的统计和各换乘次数方案的统计;换乘矩阵(MatrixCache):是一个双重HashMap,HashMap的外层key是起点站点的id,HashMap的内层key是终点站点的id,value是起点和终点间的换乘方案缓存(TransferCache);计算机内存所保存的缓存数据由公交线路数据、公交站点数据、公交线路所包含的站点数据、公交站点所包含的公交线路数据、一定距离(500m)内公交站点对步行可达矩阵数据、预先计算的直达和步行直达能够连通的公交站点对,以及无需计算换乘方案的站点对集合needlessPairSet:两站点间距离太近情况数据组成;公交线路和站点及相互关联的基础数据从数据库读取;一定距离内公交站点对步行可达矩阵由基础数据计算两两站点距离生成;直达站点对数据由公交站点所包含的公交线路数据做集合相交运算获得;步行直达包含三种情况,第一种是指从起点站步行一段距离到达上车站、然后直达抵达终点站,第二种是指从起点站坐车到达下车站、再步行一段距离到达终点站,第三种是指从起点站步行一段距离到达上车站、在下车站下车后,步行一段距离到达终点站,这种情况要保证前后的步行距离总和不超过限定的最大步行距离。2.利用权利要求1所述缓存结构进行的一种快速检索公交换乘方案的方法,其特征在于:该方法包括以下步骤:步骤1:建立基础数据缓存从数据库读取公交线路及站点的基础数据,分别保存到以线路id和站点id为key,以线路详情和站点详情为value的Hashmap(lineMap和stationMap)中;按顺序读取某条线路的各个站点,存入List中,作为value,同样以线路id为key,保存到另一个Hashmap(lineStationMap)中;读取某个站点所经过的所有线路,存入List中,作为value,以站点id为key,保存到另一个Hashmap(stationLineMap)中;步骤2:构造步行可达矩阵双重循环stationMap的每一个站点,分别作为起点和终点,排除掉起点和终点id相同的情况,根据两站点的空间距离,如果在500m范围内,则构造步行换乘段对象作为value;存入以“起点id-终点id”为key的HashMap(walkMap)中;由于城市的公交站点数量往往以千计数,因此在步骤2中,需要一些加速方式:1)在计算两站点的空间距离之前,先判断从终点到起点是否已在矩阵中,如果存在,则直接将步行换乘段的起终点互换存入矩阵;2)计算两站点间的步行段,是另一个复杂的算法,且需要步行导航图基础数据的支持,由于城市中的局部道路网络属于网格结构,因此对于公交换乘采用两点间的曼哈顿距离作为步行距离进行判断,从而加速步行段距离计算;3)对于步行距离<300m的站点对,及站点id不同,但名称相同且距离也很近的站点(往往是同一条线路两个方向的同一个站点),对乘客而言直接步行抵达即可,因此存入needlessPairSet中,在后续计算直达及多次换乘时,可直接跳过,从而加速检索速度;4)对于地铁站点,一个站点往往对应了多个出入口,在计算步行距离时,如果在500m范围内,进一步循环判断距离最近的出入口,将出入口信息设置到步行段中;步骤3:计算直达站点对与计算步行可达站点对类似,双重循环stationMap中的每一...

【专利技术属性】
技术研发人员:许飒翁剑成邢健
申请(专利权)人:北京通途永久科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1