CN104268190A - 公交线路搜索方法和装置 - Google Patents
公交线路搜索方法和装置 Download PDFInfo
- Publication number
- CN104268190A CN104268190A CN201410476675.3A CN201410476675A CN104268190A CN 104268190 A CN104268190 A CN 104268190A CN 201410476675 A CN201410476675 A CN 201410476675A CN 104268190 A CN104268190 A CN 104268190A
- Authority
- CN
- China
- Prior art keywords
- bus network
- public bus
- starting point
- public
- communicated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/047—Optimisation of routes or paths, e.g. travelling salesman problem
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Development Economics (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Small-Scale Networks (AREA)
- Traffic Control Systems (AREA)
Abstract
一种公交线路搜索方法,包括:获取起点公交线路和终点公交线路,并以广度优先原则搜索与起点公交线路连通的公交线路的过程、以及以广度优先原则搜索与终点公交线路连通的公交线路的过程轮番进行,每当与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至公共线路的最短连通路径以及终点公交线路至公共线路的最短连通路径,根据该两最短连通路径合成从起点至终点的乘坐路径;由于上述方法从两个方向上按照广度优先原则搜索与起点公交线路和终点公交线路连通的公交线路,可大大减少搜索到从起点至终点的乘坐路径所耗费的计算资源以及搜索所需的时间。此外,还提供一种公交搜索装置。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种公交线路搜索方法。
背景技术
获取用户输入的起点和终点、提供从起点至终点的公交乘坐方案的公交查询服务是互联网上人们经常使用的一项服务。
一个城市的公交线路往往是错综复杂的,而用户输入的起点和终点附近可能都有多个公交站点(分别记为起点公交站点和终点公交站点),而且每一个起点公交站点内可能停靠多条公交线路(记为起点公交线路),每一个终点公交站点内也可能停靠多条公交线路(记为终点公交线路);比较复杂的是,起点公交线路和终点公交线路可能不包括相同的公交线路,从而需要查询搭乘哪一趟起点公交线路并换乘哪一趟终点公交线路从而从起点抵达终点;更为复杂的是,起点公交线路与终点公交线路之间不能直接换乘,而是在起点公交线路与终点公交线路之间还需要搭乘其它公交线路,而搭乘其它公交线路的方案又包括多种。
因此,查询起点至终点的公交乘坐方案需要耗费大量的时间以及计算资源。
发明内容
基于此,有必要提供一种可减小时间及计算资源耗费的公交线路查询方法和装置。
一种公交线路搜索方法,包括以下步骤:
获取输入的起点和终点的位置信息;
搜索所述起点附近预设范围内停靠的起点公交线路和所述终点预设范围内停靠的终点公交线路;
判断所述起点公交线路和所述终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路,判断与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间是否有公共线路;
每当与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径;
根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从所述起点至所述终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
一种公交线路搜索装置,包括:
输入获取模块,用于获取输入的起点和终点的位置信息;
起终公交线路搜索模块,用于搜索所述起点附近预设范围内停靠的起点公交线路和所述终点预设范围内停靠的终点公交线路;
公共线路搜索模块,用于判断所述起点公交线路和所述终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路,判断与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间是否有公共线路;
可行线路获取模块,用于每当与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径;
乘坐路径合成模块,用于根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从所述起点至所述终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
上述公交线路搜索方法和装置,获取起点对应的起点公交线路和终点对应的终点公交线路,并以广度优先原则搜索与起点公交线路连通的公交线路的过程、以及以广度优先原则搜索与终点公交线路连通的公交线路的过程轮番进行,每当与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至公共线路的最短连通路径以及终点公交线路至公共线路的最短连通路径,根据该两最短连通路径合成从起点至终点的乘坐路径;由于上述方法和装置从两个方向上按照广度优先原则搜索与起点公交线路和终点公交线路连通的公交线路,实时判断两个方向上搜索到的公交线路是否有公共线路,并获取包含公共线路的从起点公交线路至终点公交线路的最短连通路径为从起点至终点的乘坐路径,因此可大大减少搜索到从起点至终点的乘坐路径所耗费的计算资源以及搜索所需的时间。
附图说明
图1为一个实施例中运行本发明的公交线路搜索方法的电子设备100的部分结构框图;
图2为一个实施例中的公交线路搜索方法的流程示意图;
图3A为一个实施例中根据预先存储的公交数据生成并存储线路连通图以及线路连通站点信息的步骤的流程示意图;
图3B为一个实施例中的线路连通图的图形化表示;
图4为一个实施例中公共线路搜索步骤的流程示意图;
图5为另一实施例中公共线路搜索步骤的流程示意图;
图6A、6B和6C为一个实施例中的公交线路搜索示意图;
图7A为一个实施例中过滤乘坐路径的过程的流程示意图;
图7B为一个实施例中获取一公交线路的公交线路信息的过程的流程示意图;
图8为一个实施例中的公交线路搜索装置的结构示意图;
图9为一个实施例中的公交线路搜索装置的结构示意图;
图10为一个实施例中公共线路搜索模块的结构示意图;
图11为一个实施例中的公交线路搜索装置的结构示意图;
图12为一个实施例中的公交线路搜索装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中运行本发明的公交线路搜索方法的电子设备100的部分结构框图。该电子设备100可以是手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、车载电脑等任意一种可以进行公交线路搜索的电子设备。如图1所示,在一个实施例中,该电子设备100包括处理器102、存储器104、输入设备106、显示屏幕108和通信模块110等部件。其中,存储器104可用于存储软件程序以及模块,处理器102通过运行存储在存储器104中的软件程序以及模块,从而执行各种功能应用以及数据处理;输入设备106可用于接收输入的数字、字符、声音、图形或者其他信息,以及产生相应的输入信号;显示屏幕108可用于根据处理器102的控制指令显示可视化元素;而通信模块110可用于实现与网络之间的通信。本领域技术人员可以理解,图1中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的电子设备100的限定,具体的电子设备100可以包括比图示中更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图2所示,在一个实施例中,一种公交线路搜索方法,包括以下步骤:
步骤S202,获取输入的起点和终点的位置信息。
在一个实施例中,起点和终点的位置信息可以是地理位置名称、或地理位置经纬度等。地理位置名称可为地理区域名称或地理位置点名称。地理区域名称包括小区名称、公共场所名称和道路名称等;地理位置点名称包括公交站点名称和建筑物名称等。
在一个实施例中,可获取用户在电子地图上标记的起点和终点起点和终点,并获取起点和终点对应的地理位置经纬度。
在一个实施例中,在步骤S202之后以及步骤S204之前,还可获取当前所在城市,可判断本地存储中是否存储有当前所在城市的公交数据,若是,则进入步骤S204,若否,则结束。本地存储指的是本地的存储设备或存储介质,包括本地的硬盘、磁盘等。其中的公交数据包括公交站点信息以及公交线路信息。在一个实施例中,公交站点信息包括公交站点序列号、公交站点名称、公交站点内停靠的公交线路的序列号以及公交站点经纬度等;公交线路信息包括公交线路序列号、公交线路所停靠的按照停靠顺序排列的公交站点序列号、所停靠的各相邻两个公交站点之间的行驶时长等。在一个实施例中,步骤S204~S210可基于上述的公交数据进行。
步骤S204,搜索起点附近预设范围内停靠的起点公交线路和终点预设范围内停靠的终点公交线路。
在一个实施例中,步骤S204包括以下步骤:搜索起点附近预设范围内的起点公交站点和终点附近预设范围内的终点公交站点;查询经过起点公交站点的起点公交线路和经过终点公交站点的终点公交线路。
在一个实施例中,可分别将起点和终点的地理位置名称与预先存储的公交站点名称进行匹配,获取匹配的公交站点名称作为起点公交站点和终点公交站点。
在另一个实施例中,可查询起点和终点的地理位置名称对应的经纬度,根据起点和终点对应的经纬度与预先存储的公交站点的经纬度计算预先存储的公交站点和与起点和终点的距离,获取与起点的距离在预设范围内的公交站点作为起点公交站点,并获取与终点的距离在预设范围内的公交站点作为终点公交站点。
进一步的,可在预先存储公交站点序列号和公交站点内停靠的公交线路的序列号的对应关系中查询经过起点公交站点的起点公交线路和经过终点公交站点的终点公交线路。
步骤S206,判断起点公交线路和终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路,判断与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间是否有公共线路。
其中,与一公交线路连通的公交线路为与该公交线路直接连通的公交线路或通过其它公交线路与该公交线路间接连通的公交线路。若两条公交线路停靠的公交站点中包括相同的公交站点或距离小于阈值的公交站点,则称该两条公交线路直接连通。而若公交线路LA与公交线路LB直接连通、公交线路LB与公交线路LC直接连通、公交线路LA与公交线路LC不直接连通,则说明公交线路LA与公交线路LC间接连通。若两条公交线路直接连通,则称该两条公交线路之间的连通距离为1;若两条公交线路通过至少一条公交线路间接连通,则称该两条公交线路之间的连通距离为2;依次类推,若两条公交线路通过至少n条公交线路间接连通,则该两条公交线路的连通距离为n+1。而公交线路至自身的连通距离可认为是0。
以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路表示:总是先搜索与起点公交线路和终点公交线路的连通距离为i的所有公交线路,然后再搜索与起点公交线路和终点公交线路的连通距离为i+1的所有公交线路。其中,i仅作为标记连通距离长度符号,不用于限定本发明。
在一个实施例中,在步骤S206之前,可根据预先存储的公交数据生成并存储线路连通图以及线路连通站点信息;如图3A所示,在一个实施例中,该步骤包括以下步骤:
步骤S302,生成与预先存储的公交线路对应的节点作为线路连通图的节点,并获取预先存储的公交线路中直接连通的公交线路。
步骤S304,根据直接连通的公交线路生成连接节点的边,若两条公交线路直接连通,则生成连接该两条公交线路对应的节点的边。
步骤S306,存储线路连通图的节点的集合以及连接节点的边的集合。
步骤S308,判断直接连通的两条公交线路中是否包括相同的公交站点,若是,则执行步骤S310,若否,则执行步骤S312。
步骤S310,存储相同的公交站点为对应的两条公交线路的连通站点。
可存储两条直接连通的公交线路的标识与其所包含的相同的公交站点的标识之间的对应关系。
步骤S312,获取直接连通的两条公交线路中包括的距离最近的两个公交站点,存储距离最近的两个公交站点为对应的两条公交线路的连通站点。
若两条直接连通的公交线路对应的连通站点为距离小于阈值的两个公交站点,则说明从其中一条公交线路换乘至另一条公交线路,需要从其中一个公交站点下车,并抵达(例如步行)至另一公交站点,从该另一公交站点换乘。
可将两条直接连通的公交线路包括的距离最近的两个公交站点的标识组成数据对,存储该两条直接连通的公交线路的标识与该数据对之间的对应关系。
例如,可如下表1所示存储两条连通的公交线路与它们之间的连通站点的对应关系。其中,若两条直接连通的公交线路包括多个相同的公交站点,可将该多个公交站点都存储为该两条公交线路对应的连通站点,公交站点之间用逗号隔开。表1中的数据表示:公交线路L1与L2的包括两个相同的公交站点Za和Zd;而公交线路L3与L4不包括相同的公交站点,且其包括的距离小于阈值的公交站点且Zb和Zc为其中距离最近的两个公交站点。
表1
第一线路标识 | 第二线路标识 | 连通站点的标识 |
L1 | L2 | Za,Zd |
L2 | L3 | (Zb,Zc) |
图3B为一个实施例中的线路连通图的图形化表示。每一个节点表示一条公交线路,若两节点之间有边连接则表示该两节点对应的公交线路直接连通。从图3B所示的线路连通图可知:公交线路1与公交线路2直接连通、公交线路2与公交线路3直接连通等等。
步骤S206可基于上述线路连通图以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路。
如图4所示,在一个实施例中,以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路,判断与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间是否有公共线路的步骤(简称为:公共线路搜索步骤)包括以下步骤:
步骤S402,以所有起点公交线路构成起点的首层公交线路,并以所有终点公交线路构成终点的首层公交线路,以起点的首层公交线路和终点的首层公交线路为基础,轮番逐层扩展与起点公交线路连通的公交线路层以及与终点公交线路连通的公交线路层,其中,扩展任意一个公交线路层的步骤包括:搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路,以该搜索到的公交线路构成本层公交线路层。
起点的首层公交线路可以理解为与起点公交线路连通的首层公交线路,而与起点公交线路连通的第n层公交线路可以理解为起点(对应)的第n层公交线路。同样的,终点的首层公交线路可以理解为与终点公交线路连通的首层公交线路,而与终点公交线路连通的第n层公交线路可以理解为终点(对应)的第n层公交线路。
某一层公交线路的上级公交线路层指的是对应的首层公交线路至该层公交线路的上一层公交线路的所有公交线路层。例如,起点对应的第n层公交线路的上级公交线路层包括:起点的首层公交线路、起点对应的第2层公交线路、……、起点对应的第n-1层公交线路。
步骤S404,每扩展一个公交线路层,都将与所述起点公交线路连通的最外层公交线路层以及与所述终点公交线路连通的最外层公交线路层进行比较,判断其中是否有公共线路。
本实施例中,以所有起点公交线路构成起点的首层公交线路,并以所有终点公交线路构成终点的首层公交线路,以起点的首层公交线路和终点的首层公交线路为基础,轮番逐层扩展与起点公交线路连通的公交线路层以及与终点公交线路连通的公交线路层,且每扩展一个公交线路层,都判断起点的最外层公交线路层与终点的最外层公交线路层是否包含公共线路,从而可快速地获取到公共线路,从而快速地获取到包含公共线路的从起点公交线路至终点公交线路的最短连通路径。
在一个实施例中,步骤S402在搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路时,不搜索与上一层公交线路中的公共线路直接连通的公交线路。若上一层公交线路中的某一条公交线路已被判定为公共线路,则不再搜索该公共线路的直接连通的公交线路来构成本层公交线路。
本实施例在扩展某一层公交线路的过程中,若上一层公交线路中某一公交线路已经被判定为公共线路,则不再搜索与该公共线路直接连通的公交线路来构成该本层公交线路,由于搜索过程是从起点和终点两个方向进行的,继续搜索公共线路直接连通的公交线路会导致重复搜索,或者搜索出比已有的路径更绕的路径,从而上述实施例可避免重复的无效搜索,从而节点计算资源以及加快搜索速度。
在一个实施例中,上述公交线路搜索方法还包括步骤:在搜索不到符合条件的公交线路从而不能再扩展公交线路层时,停止扩展公交线路层。
在另一个实施例中,上述公交线路搜索方法还包括步骤:每扩展一个公交线路层之后,判断搜索得到的与起点公交线路连通的公交线路层数加上与终点公交线路连通的公交线路层数之和是否超过阈值,若是,则停止扩展公交线路层。
本实施例中,扩展得到的公交线路层数越多,则说明通过最外层公交线路从起点至终点需要换乘的公交线路也越多,而换乘次数过多的公交乘坐方案对于用户没有意义,因此,本实施例可减少无效搜索。
如图5所示,在一个实施例中,以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路,判断与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间是否有公共线路的步骤(简称为公共线路搜索步骤)包括以下步骤:
步骤S502,以所有起点公交线路构成起点的第1层公交线路,并以所有终点公交线路构成终点的第1层公交线路,赋值k=1,j=1。
步骤S504,判断k+j是否大于阈值,若是,则结束,若否,则进入步骤S506。
步骤S506,搜索与起点的第k层公交线路中的各公交线路直接连通且不包含在起点第1~k层中的公交线路,得到起点的第k+1层公交线路,判断起点的第k+1层公交线路与终点的第j层公交线路是否有公共线路,k++,进入步骤S508。
步骤S508,判断k+j是否大于阈值,若是,则结束,若否,则进入步骤S510。
步骤S510,搜索与终点的第j层公交线路中的各公交线路直接连通且不包含在终点的第1~j层中的公交线路,得到终点的第j+1层公交线路,判断起点的第k层公交线路与终点的第j+1层公交线路是否有公共线路,j++,进入步骤S504。
上述的k与j仅作为表示公交线路层序号的符号,不用于限定本发明。
步骤S208,每当与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径。
起点公交线路至某一条公共线路的最短连通路径所包括的公交线路,以起点公交线路为首、公共线路为尾,起点公交线路与公共线路之间的公交线路中前后两相邻的公交线路之间直接连通,且后一公交线路与起点公交线路的连通距离比前一公交线路与起点公交线路的连通距离大1。
例如,记起点公交线路L0与公共线路Ln的连通距离为n,则起点公交线路至公共线路Ln的最短连通路径包括的公交线路按照与起点公交线路L0的连通距离从小到大排列为:L0、L1、L2、……、Ln-2、Ln-1、Ln。其中,公交线路Ln-1与公共线路Ln直接连通并与起点公交线路的连通距离为n-1、公交线路Ln-2与公交线路Ln-1直接连通并与起点公交线路的连通距离为n-2、……、公交线路L2与公交线路L3直接连通并与起点公交线路的连通距离为2、公交线路L1与公交线路L2直接连通并与起点公交线路的连通距离为1。
终点公交线路至公共线路的最短连通路径与起点公交线路至公共线路的最短连通路径的含义相似,在此不再赘述。
在一个实施例中,在步骤S206搜索连通的公交线路的过程中,可将与起点公交线路的连通距离为i+1的公交线路,记录在与其直接连通且与起点公交线路的连通距离为i的公交线路之后,从而逐步形成起点公交线路至各条公交线路的最短连通路径。相应的,可将与终点公交线路的连通距离为i+1的公交线路,记录在与其直接连通且与终点公交线路的连通距离为i的公交线路之后,从而逐步形成终点公交线路至各条公交线路最短连通路径。
本实施例中,步骤S208可获取上述记录的起点公交线路至各条公共线路的最短连通路径,并获取上述记录的终点公交线路至各条公共线路的最短连通路径。
步骤S210,根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从起点至终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
例如,起点公交线路至公共线路LE的最短连通路径包括的公交线路为:起点公交线路、公交线路LD、公共线路LE;终点公交线路至公共线路LE的最短连通路径包括的公交线路为:终点公交线路、公交线路LF、公共线路LE;则合成的起点至终点的包含公共线路LE的乘坐路径包含的公交线路按照乘坐顺序依次排列为:起点公交线路、公交线路LD、公共线路LE、公交线路LF、终点公交线路。
下面以一个具体的例子说明上述公交线路搜索过程。以图3B中的线路连通图为例,若其中的公交线路1和公交线路7为起点公交线路,公交线路4和公交线路5为终点公交线路,则可以公交线路1和公交线路7构成起点的第1层公交线路,并以公交线路4和公交线路5构成终点的第1层公交线路。
进一步的,如图6A所示,搜索与公交线路1和公交线路7直接连通且不包含在起点公交线路中的公交线路,从而以公交线路2、公交线路11、公交线路8、公交线路6构成起点的第2层公交线路,并根据公交线路之间的直接连通关系,将公交线路2、公交线路11记录在公交线路1之后,以及将公交线路8、公交线路11、公交线路6记录在公交线路7之后;以及搜索与公交线路4和公交线路5直接连通且不包含在终点公交线路中的公交线路,从而以公交线路3、公交线路10和公交线路6构成终点的第2层公交线路,并根据公交线路之间的直接连通关系,将公交线路3记录在公交线路4之后,以及将公交线路10记录在记录6之后。此时,起点的第2层公交线路和终点的第2层公交线路中包含有公共线路6,公交线路7、公交线路6和公交线路5可以构成乘坐路径。
进一步的,如图6B所示,搜索与起点第2层公交线路中公共线路以外的公交线路2、公交线路11、公交线路8直接连通且不包含在起点公交线路以及起点第2层公交线路中的公交线路,从而以公交线路3、公交线路9和公交线路12构成起点的第3层,并根据公交线路之间的直接连通关系,将公交线路3记录在公交线路2之后,将公交线路9记录在公交线路11之后,将公交线路12记录在公交线路8之后。此时,起点的第3层公交线路与终点的第2层公交线路之间包含有公共线路3,公交线路1、公交线路2、公交线路3和公交线路4可以构成乘坐路径。
进一步的,如图6C所示,搜索与终点第2层公交线路中公共线路以外的公交线路10直接连通、且不包含在终点公交线路以及终点第2层公交线路中的公交线路,得到公交线路9,以公交线路9构成终点的第3层公交线路,并将公交线路9记录在公交线路10之后。此时,起点的第3层与终点的第3层公交线路之间包含有公共线路9。公交线路1、公交线路11、公交线路9、公交线路10和公交线路5可以构成乘坐路径,以及公交线路7、公交线路11、公交线路9、公交线路10和公交线路5也可以构成乘坐路径。
进一步的,搜索与起点第3层公交线路中公共线路以外的公交线路12直接连通、且不包含在起点公交线路、起点第2层公交线路和起点第3层公交线路中的公交线路,没有符合条件的公交线路,从而终止搜索过程。
在一个实施例中,上述公交线路搜索方法还包括过滤乘坐路径的过程,如图7A所示,该过程包括以下步骤:
步骤S702,获取各条乘坐路径包含的公交线路的公交线路信息,公交线路的公交线路信息包括公交线路所停靠的公交站点的信息。
在一个实施例中,上述公交线路搜索方法还包括以下步骤:生成地址映射数组,该地址映射数组的元素数量与已存储的公交线路的数量相等,该地址映射数组中的各个元素用于依次存放按照序列号排序的已存储的公交线路在内存中对应的存储位置。即,对于按照序列号排序的已存储的公交线路,数组的第1个元素用于存储第1条公交线路在内存中对应的存储位置,数组的第2个元素用于第2条公交线路在内存中对应的存储位置,依此类推。
本实施例中,如图7B所示,步骤S702中获取一公交线路的公交线路信息的过程包括以下步骤:
步骤S722,读取该公交线路的序列号在地址映射数组中对应的元素的值,判断读取的值是否对应内存中的存储位置,若否,则执行步骤S742,若是,则执行步骤S762。
步骤S742,从本地存储中将该公交线路的公交线路信息加载到内存,将该公交线路的公交线路信息在内存中的存储位置写入地址映射数组中该公交线路的序列号对应的元素中,并从内存中读取该公交线路的公交线路信息。
步骤S762,从内存中上述元素的值对应的存储位置读取该公交线路的公交线路信息。
本实施例中,生成用于存储公交线路在内存中的存储位置的地址映射数组,每次需要用到公交线路的公交线路信息时,只需要读取数组中对应元素的值从而得到公交线路在内存中的存储位置,进一步在该存储位置读取公交线路的信息即可,因此读取速度非常快。
步骤S704,根据各条乘坐路径包含的公交线路的排列顺序以及公交线路所停靠的公交站点,获取通过各条乘坐路径从起点至终点需要依次换乘的公交站点。
换乘的公交站点包括需要上车的公交站点、需要下车的公交站点和需要下车并上车的公交站点。
乘坐路径的第一个需要换乘的公交站点即为其中第一条公交线路对应的起点公交站点,最后一个需要换乘的公交站点即为其中最后一条公交线路对应的终点公交站点。
进一步的,可按照乘坐路径中公交线路的排列顺序依次获取其中相邻的两条公交线路所包含的相同的公交站点或者距离最近的公交站点;在一个实施例中,可在步骤S310和步骤S312存储的公交线路的连通站点中依次查询该乘坐路径中相邻的两条公交线路对应的连通站点;从而得到通过该乘坐路径从起点至终点需要依次换乘的起点公交站点与终点公交站点之间的中间公交站点。
例如,一乘坐路径包含的公交线路依次为:L1、L2、L3;可先获取L1对应的起点公交站点,例如为Zstart;进一步的,可查询L1和L2对应的连通站点,例如,L1和L2包含的一个相同的公交站点为Za;进一步的,可查询L2和L3对应的连通站点,例如,L2和L3不包含相同的公交站点,但其包含距离小于阈值的公交站点,且L2和L3距离最近的两个公交站点为(Zb,Zc);最后,可获取L3对应的终点公交站点,例如为Zend。则可知通过上述乘坐路径从起点至终点,需要依次在起点公交站点Zstart乘坐L1,进一步在公交站点Za下车,并在此站换乘L2,且需要在公交站点Zb下车,抵达(例如步行)至公交站点Zc并在此站换乘L3,最后在公交站点Zend下车。
步骤S706,判断各条乘坐路径需要依次换乘的公交站点中前一换乘公交站点至后一换乘公交站点的方向是否与对应的公交线路的行驶方向相逆,若是,则过滤相应的乘坐路径。
上述对应的公交线路指的是乘坐路径中从前一换乘公交站点至后一换乘公交站点所乘坐的公交线路。例如,基于上述例子中的乘坐路径,若公交线路L1的行驶方向是从Za至Zstart,则说明从起点公交站点Zstart至公交站点Za的方向与L1的行驶方向相逆,需要过滤该乘坐路径。
在一个实施例中,上述公交线路搜索方法还包括以下步骤:根据上述乘坐路径和对应的换乘公交站点生成公交乘坐方案,以描述从起点至终点需要依次换乘的公交站点以及从上一换乘公交站点至下一换乘公交站点需要采用的交通手段;需要采用的交通手段包括步行和乘坐某一路具体的公交线路。
例如,基于上述例子中的乘坐路径和对应的换乘公交站点,可生成如下的公交乘坐方案:从起点步行至起点公交站点Zstart(若起点即为公交站点,则该项描述可省略),在起点公交站点Zstart乘坐L1,进一步在公交站点Za下车,并在此站换乘L2,在公交站点Zb下车,步行至公交站点Zc并在此站换乘L3,最后在公交站点Zend下车,步行至终点(若终点即为公交站点,则该项描述可省略)。
在一个实施例中,上述公交线路搜索方法还包括以下步骤:获取输入的或默认的排序规则对应的排序因素,统计上述生成的公交乘坐方案对应的排序因素的值,按照各个公交乘坐方案对应的排序因素的值将各个公交乘坐方案进行排序。
例如,排序规则包括:按公交乘坐方案需花费时长排序、按照公交乘坐方案需换乘次数排序等;上述排序规则对应的排序因素即为需花费时长和需换乘次数。
在一个实施例中,可依次统计从公交乘坐方案中的上一位置点至其中的下一位置点所花费时长,上述起点、换乘公交站点和终点在本实施例中都统称为位置点,进一步累加各段所花费时长得到公交乘坐方案需花费时长。若从上一位置点至下一位置点通过步行抵达,则获取两个位置点之间的距离,按照预设的步行速度计算该上一个位置点步行至该下一个位置点需花费时长。若从上一位置点至下一位置点通过乘坐公交线路抵达,则可查询预先存储的该公交线路从该上一位置点至下一位置点的行驶时长,或者,可获取该两个位置点之间的距离,并按照预设的公交行驶速度计算从该上一个位置点至该下一个位置点需花费时长。
上述实施例中,将各个公交乘坐方案按照排序规则进行排序,从而可方便用户选择合适的公交乘坐方案。
如图8所示,在一个实施例中,一种公交线路搜索装置,包括输入获取模块802、起终公交线路搜索模块804、公共线路搜索模块806、可行线路获取模块808和乘坐路径合成模块810,其中:
输入获取模块802用于获取输入的起点和终点的位置信息。
在一个实施例中,起点和终点的位置信息可以是地理位置名称、或地理位置经纬度等。地理位置名称可为地理区域名称或地理位置点名称。地理区域名称包括小区名称、公共场所名称和道路名称等;地理位置点名称包括公交站点名称和建筑物名称等。
在一个实施例中,输入获取模块802可获取用户在电子地图上标记的起点和终点起点和终点,并获取起点和终点对应的地理位置经纬度。
在一个实施例中,上述公交线路搜索装置还包括存储数据判断模块(图中未示出),用于获取当前所在城市,并判断本地存储中是否存储有当前所在城市的公交数据,若是,则启动起终公交线路搜索模块804,若否,则结束。
本地存储指的是本地的存储设备或存储介质,包括本地的硬盘、磁盘等。其中的公交数据包括公交站点信息以及公交线路信息。在一个实施例中,公交站点信息包括公交站点序列号、公交站点名称、公交站点内停靠的公交线路的序列号以及公交站点经纬度等;公交线路信息包括公交线路序列号、公交线路所停靠的按照停靠顺序排列的公交站点序列号、所停靠的各相邻两个公交站点之间的行驶时长等。在一个实施例中,起终公交线路搜索模块804可基于上述的公交数据进行搜索。
起终公交线路搜索模块804用于搜索起点附近预设范围内停靠的起点公交线路和终点预设范围内停靠的终点公交线路。
在一个实施例中,起终公交线路搜索模块804用于搜索起点附近预设范围内的起点公交站点和终点附近预设范围内的终点公交站点,并查询经过起点公交站点的起点公交线路和经过终点公交站点的终点公交线路。
在一个实施例中,起终公交线路搜索模块804可分别将起点和终点的地理位置名称与预先存储的公交站点名称进行匹配,获取匹配的公交站点名称作为起点公交站点和终点公交站点。
在另一个实施例中,起终公交线路搜索模块804可查询起点和终点的地理位置名称对应的经纬度,根据起点和终点对应的经纬度与预先存储的公交站点的经纬度计算预先存储的公交站点和与起点和终点的距离,获取与起点的距离在预设范围内的公交站点作为起点公交站点,并获取与终点的距离在预设范围内的公交站点作为终点公交站点。
进一步的,起终公交线路搜索模块804可在预先存储公交站点序列号和公交站点内停靠的公交线路的序列号的对应关系中查询经过起点公交站点的起点公交线路和经过终点公交站点的终点公交线路。
公共线路搜索模块806用于判断起点公交线路和终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路,判断与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间是否有公共线路。
其中,与一公交线路连通的公交线路为与该公交线路直接连通的公交线路或通过其它公交线路与该公交线路间接连通的公交线路。若两条公交线路停靠的公交站点中包括相同的公交站点或距离小于阈值的公交站点,则称该两条公交线路直接连通。而若公交线路LA与公交线路LB直接连通、公交线路LB与公交线路LC直接连通、公交线路LA与公交线路LC不直接连通,则说明公交线路LA与公交线路LC间接连通。若两条公交线路直接连通,则称该两条公交线路之间的连通距离为1;若两条公交线路通过至少一条公交线路间接连通,则称该两条公交线路之间的连通距离为2;依次类推,若两条公交线路通过至少n条公交线路间接连通,则该两条公交线路的连通距离为n+1。而公交线路至自身的连通距离可认为是0。
以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路表示:总是先搜索与起点公交线路和终点公交线路的连通距离为i的所有公交线路,然后再搜索与起点公交线路和终点公交线路的连通距离为i+1的所有公交线路。其中,i仅作为标记连通距离长度符号,不用于限定本发明。
如图9所示,在一个实施例中,上述公交线路搜索装置还包括连通图生成模块902和连通站点获取模块904,其中:
连通图生成模块902生成与预先存储的公交线路对应的节点作为线路连通图的节点,并获取预先存储的公交线路中直接连通的公交线路,并根据直接连通的公交线路生成连接节点的边,若两条公交线路直接连通,则生成连接该两条公交线路对应的节点的边,以及存储线路连通图的节点的集合以及连接节点的边的集合。
连通站点获取模块904用于判断直接连通的两条公交线路中是否包括相同的公交站点,若是,则存储相同的公交站点为对应的两条公交线路的连通站点,若否,则获取直接连通的两条公交线路中包括的距离最近的两个公交站点,存储距离最近的两个公交站点为对应的两条公交线路的连通站点。
若直接连通的两条公交线路中包括相同的公交站点,可存储两条直接连通的公交线路的标识与其所包含的相同的公交站点的标识之间的对应关系;否则,可将两条直接连通的公交线路包括的距离最近的两个公交站点的标识组成数据对,存储该两条直接连通的公交线路的标识与该数据对之间的对应关系。
例如,连通站点获取模块904可如表1所示存储两条连通的公交线路与它们之间的连通站点的对应关系。其中,若两条直接连通的公交线路包括多个相同的公交站点,可将该多个公交站点都存储为该两条公交线路对应的连通站点,公交站点之间用逗号隔开。表1中的数据表示:公交线路L1与L2的包括两个相同的公交站点Za和Zd;而公交线路L3与L4不包括相同的公交站点,且其包括的距离小于阈值的公交站点且Zb和Zc为其中距离最近的两个公交站点。
公共线路搜索模块806可基于上述线路连通图以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路。
如图10所示,在一个实施例中,公共线路搜索模块806包括第一比较模块1002、搜索模块1004和第二比较模块1006,其中:
第一比较模块1002用于判断所述起点公交线路和所述终点公交线路之间是否有公共线路。
搜索模块1004用于若起点公交线路和终点公交线路之间没有公共线路时,以所有起点公交线路构成起点的首层公交线路,并以所有终点公交线路构成终点的首层公交线路,以起点的首层公交线路和终点的首层公交线路为基础,轮番逐层扩展与起点公交线路连通的公交线路层以及与终点公交线路连通的公交线路层,其中,扩展任意一个公交线路层的步骤包括:搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路,以该搜索到的公交线路构成本层公交线路层。
起点的首层公交线路可以理解为与起点公交线路连通的首层公交线路,而与起点公交线路连通的第n层公交线路可以理解为起点(对应)的第n层公交线路。同样的,终点的首层公交线路可以理解为与终点公交线路连通的首层公交线路,而与终点公交线路连通的第n层公交线路可以理解为终点(对应)的第n层公交线路。
某一层公交线路的上级公交线路层指的是对应的首层公交线路至该层公交线路的上一层公交线路的所有公交线路层。例如,起点对应的第n层公交线路的上级公交线路层包括:起点的首层公交线路、起点对应的第2层公交线路、……、起点对应的第n-1层公交线路。
第二比较模块1006用于每扩展一个公交线路层,都将与所述起点公交线路连通的最外层公交线路层以及与所述终点公交线路连通的最外层公交线路层进行比较,判断其中是否有公共线路。
本实施例中,以所有起点公交线路构成起点的首层公交线路,并以所有终点公交线路构成终点的首层公交线路,以起点的首层公交线路和终点的首层公交线路为基础,轮番逐层扩展与起点公交线路连通的公交线路层以及与终点公交线路连通的公交线路层,且每扩展一个公交线路层,都判断起点的最外层公交线路层与终点的最外层公交线路层是否包含公共线路,从而可快速地获取到公共线路,从而快速地获取到包含公共线路的从起点公交线路至终点公交线路的最短连通路径。
在一个实施例中,搜索模块1004在搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路时,不搜索与上一层公交线路中的公共线路直接连通的公交线路。即,若上一层公交线路中的某一条公交线路已被判定为公共线路,则不再搜索该公共线路的直接连通的公交线路来构成本层公交线路。
本实施例在扩展某一层公交线路的过程中,若上一层公交线路中某一公交线路已经被判定为公共线路,则不再搜索与该公共线路直接连通的公交线路来构成该本层公交线路,由于搜索过程是从起点和终点两个方向进行的,继续搜索公共线路直接连通的公交线路会导致重复搜索,或者搜索出比已有的路径更绕的路径,从而上述实施例可避免重复的无效搜索,从而节点计算资源以及加快搜索速度。
在一个实施例中,搜索模块1004还用于在搜索不到符合条件的公交线路从而不能再扩展公交线路层时,停止扩展公交线路层。
在另一个实施例中,搜索模块1004还用于每扩展一个公交线路层之后,判断搜索得到的与起点公交线路连通的公交线路层数加上与终点公交线路连通的公交线路层数之和是否超过阈值,若是,则停止扩展公交线路层。
本实施例中,扩展得到的公交线路层数越多,则说明通过最外层公交线路从起点至终点需要换乘的公交线路也越多,而换乘次数过多的公交乘坐方案对于用户没有意义,因此,本实施例可减少无效搜索。
可行线路获取模块808用于每当与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径。
起点公交线路至某一条公共线路的最短连通路径所包括的公交线路,以起点公交线路为首、公共线路为尾,起点公交线路与公共线路之间的公交线路中前后两相邻的公交线路之间直接连通,且后一公交线路与起点公交线路的连通距离比前一公交线路与起点公交线路的连通距离大1。
例如,记起点公交线路L0与公共线路Ln的连通距离为n,则起点公交线路至公共线路Ln的最短连通路径包括的公交线路按照与起点公交线路L0的连通距离从小到大排列为:L0、L1、L2、……、Ln-2、Ln-1、Ln。其中,公交线路Ln-1与公共线路Ln直接连通并与起点公交线路的连通距离为n-1、公交线路Ln-2与公交线路Ln-1直接连通并与起点公交线路的连通距离为n-2、……、公交线路L2与公交线路L3直接连通并与起点公交线路的连通距离为2、公交线路L1与公交线路L2直接连通并与起点公交线路的连通距离为1。
终点公交线路至公共线路的最短连通路径与起点公交线路至公共线路的最短连通路径的含义相似,在此不再赘述。
在一个实施例中,搜索模块1004还用于将与起点公交线路的连通距离为i+1的公交线路,记录在与其直接连通且与起点公交线路的连通距离为i的公交线路之后,从而逐步形成起点公交线路至各条公交线路的最短连通路径。相应的,搜索模块1004还用于将与终点公交线路的连通距离为i+1的公交线路,记录在与其直接连通且与终点公交线路的连通距离为i的公交线路之后,从而逐步形成终点公交线路至各条公交线路最短连通路径。
本实施例中,可行线路获取模块808可获取上述记录的起点公交线路至各条公共线路的最短连通路径,并获取上述记录的终点公交线路至各条公共线路的最短连通路径。
乘坐路径合成模块810用于根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从起点至终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
例如,起点公交线路至公共线路LE的最短连通路径包括的公交线路为:起点公交线路、公交线路LD、公共线路LE;终点公交线路至公共线路LE的最短连通路径包括的公交线路为:终点公交线路、公交线路LF、公共线路LE;则乘坐路径合成模块810合成的起点至终点的包含公共线路LE的乘坐路径包含的公交线路按照乘坐顺序依次排列为:起点公交线路、公交线路LD、公共线路LE、公交线路LF、终点公交线路。
如图11所示,在一个实施例中,上述公交线路搜索装置还包括公交线路信息获取模块1102、换乘公交站点获取模块1104和过滤模块1106,其中:
公交线路信息获取模块1102用于获取各条乘坐路径包含的公交线路的公交线路信息,公交线路的公交线路信息包括公交线路所停靠的公交站点的信息。
如图12所示,在一个实施例中,上述公交线路搜索装置还包括数组生成模块1202,用于生成地址映射数组,该地址映射数组的元素数量与已存储的公交线路的数量相等,该地址映射数组中的各个元素用于依次存放按照序列号排序的已存储的公交线路在内存中对应的存储位置。即,对于按照序列号排序的已存储的公交线路,数组的第1个元素用于存储第1条公交线路在内存中对应的存储位置,数组的第2个元素用于第2条公交线路在内存中对应的存储位置,依此类推。
本实施例中,公交线路信息获取模块1102获取一条公交线路的公交线路信息的过程包括:读取该公交线路的序列号在地址映射数组中对应的元素的值,判断读取的值是否对应内存中的存储位置,若否,则从本地存储中将该公交线路的公交线路信息加载到内存,将该公交线路的公交线路信息在内存中的存储位置写入地址映射数组中该公交线路的序列号对应的元素中,并从内存中读取该公交线路的公交线路信息,若是,则从内存中上述元素的值对应的存储位置读取该公交线路的公交线路信息。
本实施例中,生成用于存储公交线路在内存中的存储位置的地址映射数组,每次需要用到公交线路的公交线路信息时,只需要读取数组中对应元素的值从而得到公交线路在内存中的存储位置,进一步在该存储位置读取公交线路的信息即可,因此读取速度非常快速。
换乘公交站点获取模块1104用于根据各条乘坐路径包含的公交线路的排列顺序以及公交线路所停靠的公交站点,获取通过各条乘坐路径从起点至终点需要依次换乘的公交站点。
换乘的公交站点包括需要上车的公交站点、需要下车的公交站点和需要下车并上车的公交站点。
乘坐路径的第一个需要换乘的公交站点即为其中第一条公交线路对应的起点公交站点,最后一个需要换乘的公交站点即为其中最后一条公交线路对应的终点公交站点。
换乘公交站点获取模块1104可按照乘坐路径中公交线路的排列顺序依次获取其中相邻的两条公交线路所包含的相同的公交站点或者距离最近的公交站点。在一个实施例中,换乘公交站点获取模块1104可在连通站点获取模块904存储的公交线路的连通站点中依次查询乘坐路径中相邻的两条公交线路对应的连通站点,从而得到通过该乘坐路径从起点至终点需要依次换乘的起点公交站点与终点公交站点之间的中间公交站点。
例如,一乘坐路径包含的公交线路依次为:L1、L2、L3;换乘公交站点获取模块1104可先获取L1对应的起点公交站点,例如为Zstart;进一步的,换乘公交站点获取模块1104可查询L1和L2对应的连通站点,例如,L1和L2包含的一个相同的公交站点为Za;进一步的,换乘公交站点获取模块1104可查询L2和L3对应的连通站点,例如,L2和L3不包含相同的公交站点,但其包含距离小于阈值的公交站点,且L2和L3距离最近的两个公交站点为(Zb,Zc);最后,换乘公交站点获取模块1104可获取L3对应的终点公交站点,例如为Zend。则可知通过上述乘坐路径从起点至终点,需要依次在起点公交站点Zstart乘坐L1,进一步在公交站点Za下车,并在此站换乘L2,且需要在公交站点Zb下车,抵达(例如步行)至公交站点Zc并在此站换乘L3,最后在公交站点Zend下车。
过滤模块1106用于判断各条乘坐路径需要依次换乘的公交站点中前一换乘公交站点至后一换乘公交站点的方向是否与对应的公交线路的行驶方向相逆,若是,则过滤相应的乘坐路径。
上述对应的公交线路指的是乘坐路径中从前一换乘公交站点至后一换乘公交站点所乘坐的公交线路。例如,基于上述例子中的乘坐路径,若公交线路L1的行驶方向是从Za至Zstart,则说明从起点公交站点Zstart至公交站点Za的方向与L1的行驶方向相逆,需要过滤该乘坐路径。
在一个实施例中,上述公交线路搜索装置还包括乘坐方案生成模块1302,用于根据上述乘坐路径和对应的换乘公交站点生成公交乘坐方案,以描述从起点至终点需要依次换乘的公交站点以及从上一换乘公交站点至下一换乘公交站点需要采用的交通手段;需要采用的交通手段包括步行和乘坐某一路具体的公交线路。
例如,基于上述例子中的乘坐路径和对应的换乘公交站点,坐方案生成模块1302可生成如下的公交乘坐方案:从起点步行至起点公交站点Zstart(若起点即为公交站点,则该项描述可省略),在起点公交站点Zstart乘坐L1,进一步在公交站点Za下车,并在此站换乘L2,在公交站点Zb下车,步行至公交站点Zc并在此站换乘L3,最后在公交站点Zend下车,步行至终点(若终点即为公交站点,则该项描述可省略)。
在一个实施例中,上述公交线路搜索装置还包括以下排序模块1402,用于获取输入的或默认的排序规则对应的排序因素,统计上述生成的公交乘坐方案对应的排序因素的值,按照各个公交乘坐方案对应的排序因素的值将各个公交乘坐方案进行排序。
例如,排序规则包括:按公交乘坐方案需花费时长排序、按照公交乘坐方案需换乘次数排序等;上述排序规则对应的排序因素即为需花费时长和需换乘次数。
在一个实施例中,排序模块1402可依次统计从公交乘坐方案中的上一位置点至其中的下一位置点所花费时长,上述起点、换乘公交站点和终点在本实施例中都统称为位置点,进一步的,排序模块1402可累加各段所花费时长得到公交乘坐方案需花费时长。若从上一位置点至下一位置点通过步行抵达,则排序模块1402可获取两个位置点之间的距离,按照预设的步行速度计算该上一个位置点步行至该下一个位置点需花费时长。若从上一位置点至下一位置点通过乘坐公交线路抵达,则排序模块1402可查询预先存储的该公交线路从该上一位置点至下一位置点的行驶时长,或者,可获取该两个位置点之间的距离,并按照预设的公交行驶速度计算从该上一个位置点至该下一个位置点需花费时长。
上述实施例中,将各个公交乘坐方案按照排序规则进行排序,从而可方便用户选择合适的公交乘坐方案。
上述公交线路搜索方法和装置,获取起点对应的起点公交线路和终点对应的终点公交线路,并以广度优先原则搜索与起点公交线路连通的公交线路的过程、以及以广度优先原则搜索与终点公交线路连通的公交线路的过程轮番进行,每当与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至公共线路的最短连通路径以及终点公交线路至公共线路的最短连通路径,根据该两最短连通路径合成从起点至终点的乘坐路径;由于上述方法和装置从两个方向上按照广度优先原则搜索与起点公交线路和终点公交线路连通的公交线路,实时判断两个方向上搜索到的公交线路是否有公共线路,并获取包含公共线路的从起点公交线路至终点公交线路的最短连通路径为从起点至终点的乘坐路径,因此可大大减少搜索到从起点至终点的乘坐路径所耗费的计算资源以及搜索所需的时间。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种公交线路搜索方法,包括以下步骤:
获取输入的起点和终点的位置信息;
搜索所述起点附近预设范围内停靠的起点公交线路和所述终点预设范围内停靠的终点公交线路;
判断所述起点公交线路和所述终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路,判断与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间是否有公共线路;
每当与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径;
根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从所述起点至所述终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
2.根据权利要求1所述的公交线路搜索方法,其特征在于,所述以广度优先原则轮番搜索与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路,判断与起点公交线路连通的公交线路以及与终点公交线路连通的公交线路之间是否有公共线路的步骤包括:
以所有所述起点公交线路构成所述起点的首层公交线路,并以所有所述终点公交线路构成所述终点的首层公交线路,以起点的首层公交线路和所述终点的首层公交线路为基础,轮番逐层扩展与所述起点公交线路连通的公交线路层以及与所述终点公交线路连通的公交线路层,其中,扩展任意一个公交线路层的步骤包括:搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路,以该搜索到的公交线路构成本层公交线路层;
每扩展一个公交线路层,都将与所述起点公交线路连通的最外层公交线路层以及与所述终点公交线路连通的最外层公交线路层进行比较,判断其中是否有公共线路。
3.根据权利要求2所述的公交线路搜索方法,其特征在于,在搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路时,不搜索与上一层公交线路中的公共线路直接连通的公交线路。
4.根据权利要求2所述的公交线路搜索方法,其特征在于,所述方法还包括:
判断搜索得到的与所述起点公交线路连通的公交线路层数加上与所述终点公交线路连通的公交线路层数之和是否超过阈值,若是,则停止扩展公交线路层。
5.根据权利要求1所述的公交线路搜索方法,其特征在于,所述方法还包括:
获取各条乘坐路径包含的公交线路的公交线路信息,公交线路的公交线路信息包括公交线路所停靠的公交站点的信息;
根据各条乘坐路径包含的公交线路的排列顺序以及公交线路所停靠的公交站点,获取通过各条乘坐路径从所述起点至所述终点需要依次换乘的公交站点;
判断各条乘坐路径需要依次换乘的公交站点中前一公交站点至后一公交站点的方向是否与对应的公交线路的行驶方向相逆,若是,则过滤相应的乘坐路径。
6.根据权利要求5所述的公交线路搜索方法,其特征在于,所述方法还包括步骤:
生成地址映射数组,该地址映射数组的元素数量与已存储的公交线路的数量相等,该地址映射数组中的各个元素用于依次存放按照序列号排序的所述已存储的公交线路在内存中对应的存储位置;
所述获取各条乘坐路径包含的公交线路的公交线路信息的步骤中,获取一条公交线路的公交线路信息的步骤包括:
读取该公交线路的序列号在所述地址映射数组中对应的元素的值,判断读取的值是否对应内存中的存储位置,若否,则从本地存储中将该公交线路的公交线路信息加载到内存,将该公交线路的公交线路信息在内存中的存储位置写入所述地址映射数组中该公交线路的序列号对应的元素中,并从内存中读取该公交线路的公交线路信息,若是,则从内存中所述元素的值对应的存储位置读取该公交线路的公交线路信息。
7.一种公交线路搜索装置,其特征在于,包括:
输入获取模块,用于获取输入的起点和终点的位置信息;
起终公交线路搜索模块,用于搜索所述起点附近预设范围内停靠的起点公交线路和所述终点预设范围内停靠的终点公交线路;
公共线路搜索模块,用于判断所述起点公交线路和所述终点公交线路之间是否有公共线路,若否,以广度优先原则轮番搜索与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路,判断与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间是否有公共线路;
可行线路获取模块,用于每当与所述起点公交线路连通的公交线路以及与所述终点公交线路连通的公交线路之间有公共线路,则获取起点公交线路至各条公共线路的最短连通路径,并获取终点公交线路至各条公共线路的最短连通路径;
乘坐路径合成模块,用于根据起点公交线路至各条公共线路的最短连通路径以及终点公交线路至各条公共线路的最短连通路径,合成从所述起点至所述终点的各条乘坐路径,每一条乘坐路径中各条公交线路按照需要的乘坐顺序依次排列。
8.根据权利要求7所述的公交线路搜索装置,其特征在于,所述公共线路搜索模块包括:
第一比较模块,用于判断所述起点公交线路和所述终点公交线路之间是否有公共线路;
搜索模块,用于若所述起点公交线路和所述终点公交线路之间没有公共线路时,以所有所述起点公交线路构成所述起点的首层公交线路,并以所有所述终点公交线路构成所述终点的首层公交线路,以起点的首层公交线路和所述终点的首层公交线路为基础,轮番逐层扩展与所述起点公交线路连通的公交线路层以及与所述终点公交线路连通的公交线路层,其中,扩展任意一个公交线路层的过程包括:搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路,以该搜索到的公交线路构成本层公交线路层;
第二比较模块,用于每扩展一个公交线路层,都将与所述起点公交线路连通的最外层公交线路层以及与所述终点公交线路连通的最外层公交线路层进行比较,判断其中是否有公共线路。
9.根据权利要求8所述的公交线路搜索装置,其特征在于,所述搜索模块在搜索与上一层公交线路中各公交线路直接连通且不包含在上级公交线路层中的公交线路时,不搜索与上一层公交线路中的公共线路直接连通的公交线路。
10.根据权利要求8所述的公交线路搜索装置,所述搜索模块还用于判断搜索得到的与所述起点公交线路连通的公交线路层数加上与所述终点公交线路连通的公交线路层数之和是否超过阈值,若是,则停止扩展公交线路层。
11.根据权利要求7所述的公交线路搜索装置,其特征在于,所述装置还包括:
公交线路信息获取模块,用于获取各条乘坐路径包含的公交线路的公交线路信息,公交线路的公交线路信息包括公交线路所停靠的公交站点的信息;
换乘公交站点获取模块,用于根据各条乘坐路径包含的公交线路的排列顺序以及公交线路所停靠的公交站点,获取通过各条乘坐路径从所述起点至所述终点需要依次换乘的公交站点;
过滤模块,用于判断各条乘坐路径需要依次换乘的公交站点中前一公交站点至后一公交站点的方向是否与对应的公交线路的行驶方向相逆,若是,则过滤相应的乘坐路径。
12.根据权利要求11所述的公交线路搜索装置,其特征在于,所述装置还包括:
数组生成模块,用于生成地址映射数组,该地址映射数组的元素数量与已存储的公交线路的数量相等,该地址映射数组中的各个元素用于依次存放按照序列号排序的所述已存储的公交线路在内存中对应的存储位置;
所述公交线路信息获取模块获取一条公交线路的公交线路信息的过程包括:读取该公交线路的序列号在所述地址映射数组中对应的元素的值,判断读取的值是否对应内存中的存储位置,若否,则从本地存储中将该公交线路的公交线路信息加载到内存,将该公交线路的公交线路信息在内存中的存储位置写入所述地址映射数组中该公交线路的序列号对应的元素中,并从内存中读取该公交线路的公交线路信息,若是,则从内存中所述元素的值对应的存储位置读取该公交线路的公交线路信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410476675.3A CN104268190B (zh) | 2014-09-17 | 2014-09-17 | 公交线路搜索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410476675.3A CN104268190B (zh) | 2014-09-17 | 2014-09-17 | 公交线路搜索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268190A true CN104268190A (zh) | 2015-01-07 |
CN104268190B CN104268190B (zh) | 2017-03-22 |
Family
ID=52159712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410476675.3A Active CN104268190B (zh) | 2014-09-17 | 2014-09-17 | 公交线路搜索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268190B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557830A (zh) * | 2015-09-30 | 2017-04-05 | 百度在线网络技术(北京)有限公司 | 一种交通线路匹配方法和装置 |
CN107092986A (zh) * | 2017-04-13 | 2017-08-25 | 上海理工大学 | 基于站点及共线运行的公交乘客出行路径选择方法 |
CN107103393A (zh) * | 2017-05-26 | 2017-08-29 | 广州和方信息科技有限公司 | 一种公路客运长途班次调配方法和系统 |
CN107560628A (zh) * | 2016-06-30 | 2018-01-09 | 高德信息技术有限公司 | 一种公交路线规划方法及装置 |
CN109726262A (zh) * | 2019-01-10 | 2019-05-07 | 武汉轻工大学 | 公交线路的查询方法、装置、终端设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470665A (zh) * | 2007-12-27 | 2009-07-01 | Tcl集团股份有限公司 | 一种无mmu平台的应用系统内存管理的方法及系统 |
CN101980326A (zh) * | 2010-11-11 | 2011-02-23 | 百度在线网络技术(北京)有限公司 | 建构公交换乘网络的方法与装置 |
-
2014
- 2014-09-17 CN CN201410476675.3A patent/CN104268190B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470665A (zh) * | 2007-12-27 | 2009-07-01 | Tcl集团股份有限公司 | 一种无mmu平台的应用系统内存管理的方法及系统 |
CN101980326A (zh) * | 2010-11-11 | 2011-02-23 | 百度在线网络技术(北京)有限公司 | 建构公交换乘网络的方法与装置 |
Non-Patent Citations (4)
Title |
---|
景丽荣等: "《基于最少换乘路径选择算法的改进》", 《电脑知识与技术》 * |
景丽荣等: "《基于最少换乘路径选择算法的改进》", 《电脑知识与技术》, vol. 6, no. 1, 31 January 2010 (2010-01-31), pages 168 - 170 * |
第6期: "《基于双向搜索的公交路径选择算法及优化模型》", 《吉林大学学报(信息科学版)》 * |
第6期: "《基于双向搜索的公交路径选择算法及优化模型》", 《吉林大学学报(信息科学版)》, vol. 27, no. 6, 30 November 2009 (2009-11-30), pages 579 - 583 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557830A (zh) * | 2015-09-30 | 2017-04-05 | 百度在线网络技术(北京)有限公司 | 一种交通线路匹配方法和装置 |
CN107560628A (zh) * | 2016-06-30 | 2018-01-09 | 高德信息技术有限公司 | 一种公交路线规划方法及装置 |
CN107560628B (zh) * | 2016-06-30 | 2019-11-15 | 高德信息技术有限公司 | 一种公交路线规划方法及装置 |
CN107092986A (zh) * | 2017-04-13 | 2017-08-25 | 上海理工大学 | 基于站点及共线运行的公交乘客出行路径选择方法 |
CN107092986B (zh) * | 2017-04-13 | 2020-10-09 | 上海理工大学 | 基于站点及共线运行的公交乘客出行路径选择方法 |
CN107103393A (zh) * | 2017-05-26 | 2017-08-29 | 广州和方信息科技有限公司 | 一种公路客运长途班次调配方法和系统 |
CN107103393B (zh) * | 2017-05-26 | 2020-10-30 | 广州和方信息科技有限公司 | 一种公路客运长途班次调配方法和系统 |
CN109726262A (zh) * | 2019-01-10 | 2019-05-07 | 武汉轻工大学 | 公交线路的查询方法、装置、终端设备及可读存储介质 |
CN109726262B (zh) * | 2019-01-10 | 2020-12-25 | 武汉轻工大学 | 公交线路的查询方法、装置、终端设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104268190B (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268190A (zh) | 公交线路搜索方法和装置 | |
US10132638B2 (en) | Route search system, route search method, and computer program | |
CN110573837B (zh) | 导航方法、装置、存储介质以及服务器 | |
CN104596531A (zh) | 一种导航路线的生成方法、装置及服务器 | |
CN105547308A (zh) | 基于数字路网地图与深度优先遍历的导航方法与装置 | |
CN104636457B (zh) | 一种位置搜索认知的方法及装置 | |
CN105628044A (zh) | 基于位置实时更新与路段属性的车载导航装置与导航方法 | |
CN113758496B (zh) | 路径的规划方法、装置、电子设备及存储介质 | |
CN105606110A (zh) | 基于深度优先遍历的可达路径的查找方法与装置 | |
CN103822630A (zh) | 一种公共交通工具的换乘导航方法及系统 | |
CN108332765A (zh) | 拼车出行路线生成方法及装置 | |
CN104751250A (zh) | 一种基于蚁群方法的最优路径寻找方法 | |
CN114422885A (zh) | 基于拓扑路由的路由搜索方法、装置、设备及介质 | |
CN104063831A (zh) | 一种提供铁路行程方案的方法及装置 | |
CN112541912A (zh) | 矿井突发灾害场景中显著性目标的快速检测方法及装置 | |
CN112185150A (zh) | 确定目标车位的方法、装置、电子设备和计算机可读介质 | |
CN107807922A (zh) | 用于确定聚会地点的方法和装置 | |
CN107133339A (zh) | 线路查询方法和装置以及存储介质、处理器 | |
US20180128629A1 (en) | Route search apparatus, route search method, computer readable storage medium storing a program and data structure | |
CN105466441A (zh) | 一种车载导航装置与导航方法 | |
CN103034938A (zh) | 行程管理系统及方法 | |
CN113761397B (zh) | 一种定制客运路线的推荐方法、系统、设备及存储介质 | |
CN109241453A (zh) | 基于用户位置的公交线路推送方法及装置 | |
CN108121725A (zh) | 一种搜索方法及装置 | |
CN108204820B (zh) | 一种快速导航路径推测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |