[发明专利]一种快速检索公交换乘方案的方法在审
申请号: | 201711133084.6 | 申请日: | 2017-11-15 |
公开(公告)号: | CN108182193A | 公开(公告)日: | 2018-06-19 |
发明(设计)人: | 许飒;翁剑成;邢健 | 申请(专利权)人: | 北京通途永久科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 沈波 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 缓存 站点 公交换乘 快速检索 实时计算 预先计算 步行 矩阵 公交线路 基础数据 实际系统 查找 | ||
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中的每一个站点,跳过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将所有需要缓存的方案计算出来,接下来,对于用户输入的任意一个站点对,首先从MatrixCache中查找是否已有方案,如果没有或已有方案数量小于3,则进行多次换乘方案查询。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京通途永久科技有限公司,未经北京通途永久科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711133084.6/1.html,转载请声明来源钻瓜专利网。