最短路径的计算方法及装置与流程

文档序号:16387483发布日期:2018-12-22 10:12阅读:441来源:国知局
最短路径的计算方法及装置与流程

本发明涉及地理信息系统领域,更具体地,涉及最短路径的计算方法及装置。

背景技术

地理信息系统(geographicinformationsystem或geo-informationsystem,gis)。是一门综合性学科,结合地理学与地图学以及遥感和计算机科学,已经广泛的应用在不同的领域,是用于输入、存储、查询、分析和显示地理数据的计算机系统,随着gis的发展,也有称gis为“地理信息科学”(geographicinformationscience),近年来,也有称gis为"地理信息服务"(geographicinformationservice)。gis是一种基于计算机的工具,它可以对空间信息进行分析和处理(简而言之,是对地球上存在的现象和发生的事件进行成图和分析)。gis技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。

路径搜索问题一般可以通过图论中的最短路径方法解决。常用的最短路径方法有dijkstra算法,该算法是由e.w.dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法之一。该算法解决的是有向图中单个起始点到其他终止点的最短路径问题,其主要特点是每次迭代时选择的下一个顶点是标记点之外距离起始点最近的顶点。但由于dijkstra算法主要计算从起始点到其他所有点的最短路径,所以算法的效率较低。



技术实现要素:

本发明提供一条克服上述问题或者至少部分地解决上述问题的最短路径的计算方法及装置。

根据本发明的一个方面,提供一种最短路径的计算方法,包括:

获取起始点和终止点在预设的地图中的空间信息;

根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点;

根据路径中包括的网络点的空间信息,计算每条路径的长度;

从长度最短的路径开始进行连接判断,当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径。

根据本发明的第二个方面,提供一种最短路径的计算装置,包括:

请求获取模块,用于获取起始点和终止点在预设的地图中的空间信息;

路径获取模块,用于根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点;

长度计算模块,用于根据路径中包括的网络点的空间信息,计算每条路径的长度;

连接判断模块,用于从长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径。

根据本发明的第三个方面,还提供一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的计算方法。

根据本发明的第四个方面,还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的计算方法。

本发明提出的最短路径的计算方法及装置,从长度最短的路径进行连接判断,这样一旦出现满足连接判断的路径,即可作为最短路径,不用继续进行连接判断,大大降低了计算量,经过验证,在大规模地图分析中,能够以比原有dijkstra算法快十几倍的速度分析地理空间中各点之间的最短路径。

附图说明

图1为根据本发明实施例的最短路径的计算方法的流程示意图;

图2为根据本发明实施例的调用软件服务接口的流程示意图;

图3为根据本发明实施例的根据路径中包括的网络点的空间信息,计算每条路径的长度的流程示意图;

图4为根据本发明实施例的根据各路径的长度进行排序,获得队列的流程示意图;

图5为根据本发明实施例的计算装置的功能框图;

图6为根据本发明实施例的电子设备的框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

现有的dijkstra算法解决的是有向图中单个起始点到其他终止点的最短路径问题,其主要特点是每次迭代时选择的下一个顶点是标记点之外距离起始点最近的顶点。但由于dijkstra算法主要计算从起始点到其他所有点的最短路径,所以算法的效率较低。

为了克服现有技术的上述缺陷,本发明实施例提供一种最短路径的计算方法,其发明构思为:根据地图中已有的网络点的空间信息,计算由起始点到达终止点的一定数量条路径,作为本领域技术人员可以理解的是:并不是所有网络点在网络点中都是可以直接连接的,网络点的连接还需要遵从一定的规则。因此,本发明实施例从长度最短的路径开始进行连接判断,若路径中所有两两相邻的网络点均满足连接规则,则将该路径作为最短路径。本发明实施例避免了原有dijkstra算法在计算每一个路径点时需要遍历所有路径点至起始点距离的低效遍历计算环节,通过采用根据路径长度的长短,逐个进行连接判断,一旦找出符合连接判断的路径即停止进行连接判断过程,实现了高效连接判断的效果,经验证,本发明实施例相比原有dijkstra算法分析地理空间中各点之间的最短路径时,速度提升了十几倍。

图1示出了本发明实施例的最短路径的计算方法的流程示意图,如图所示,包括:

s101、获取起始点和终止点在预设的地图中的空间信息。

需要说明的是,本发明实施例中的最短路径是指起始点和终止点在地图中的最短路径,本发明实施例中的地图为预先获取的地图,地图中预先记录了各网络点的空间信息,起始点和终止点显然也属于网络点,在接收用户输入的起始点和终止点后,会获取起始点和终止点在预设的地图中的空间信息,地图中的空间信息可以是投影坐标、经纬度坐标等信息,以投影坐标为例,当地图为二维地图时,投影坐标相应地为二维坐标,当地图为三维地图时,经纬度坐标相应地为三维坐标。

s102、根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点。

需要说明的是,本发明实施例随机以地图中的其他网络点作为起始点和终止点间的中间节点,获得若干条路径,例如地图中存在网络点a、网络点b、网络点c,随机获得以下几种路径:路径1:起始点、网络点a、网络点b、网络点c、终止点;路径2:起始点、网络点a、网络点c、终止点;路径3:起始点、网络点b、网络点c、终止点;路径1:起始点、网络点b、网络点c、网络点a、终止点。本发明实施例计算的路径的信息记录了按连接顺序排序的网络点,例如:起始点、网络点a、网络点b、终止点,其含义为由起始点出发首先到的网络点a,再由网络点a到达网络点b,最后网络点b到达终止点。需要注意的是,本发明实施例还可以获得由起始点到达终止点的所有路径,并从所有路径中筛选一定数量的路径,也可以省去上述筛选的动作,当从所有路径中分析最短路径时,最终获得的最短路径必然是真实的,但存在耗时较多的问题,而在获得所有路径后,筛选一定数量的路径进行最短路径分析,虽然最终获得最短路径可能并不是真正的最短路径,但存在耗时较少的优势,本发明实施例的计算方法可以根据实际需求进行选择,本发明实施例不做具体的限定。

s103、根据路径中包括的网络点的空间信息,计算每条路径的长度。

具体地,可以根据每条路径中网络点的连接顺序分别计算相邻的网络点的间距,进而统计出整条路径的长度。需要注意的是,由于地图中不止有网络点,还包括了一些网络点的连接规则,例如网络点a和网络点b并不是直接连接,因此,步骤s103中获取的路径并不表示路径是一定是存在的。

s104、从长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径。

需要说明的是,本发明实施例从长度最短的路径进行连接判断,这样一旦出现满足连接判断的路径,即可作为最短路径,不用继续进行连接判断,大大降低了计算量,经过验证,本发明实施例相比原有dijkstra算法,在分析地理空间中各点之间的最短路径时,速度提升了十几倍。

此外,本发明实施例通过将计算方法封装为软件服务接口,可供各种不同的gis系统灵活调用。

例如,具体的调用流程如图2所示,包括:

s201、运行软件服务接口;

s202、读取地图中所有网络点的空间信息,这些网络点是事先准备好的矢量数据,网络点是地图的一个重要组成部分;

s203、读取由使用者从软件服务接口传递来的起始点s和终止点t;

s204、结合网络点计算起始点s至终止点t的所有路径(路径包括各个网络点的连接顺序,比如:起始点s-网络点a-网络点b-终止点t等等)每种路径以网络点集合的方式存储和表示;

s205、计算每种路径的长度;

s206、首先取出长度最短的路径对应的网络点集合,对该网络点集合进行连接判断,若该网络点集合中的网络点不符合连接判断的要求,则从队列中取出下一个网络点集合,直至找出全部符合连接判断的网络点集合,将该网络点集合对应的路径作为最短路径;

s207、将最短路径的网络点集合通过软件服务接口返回至使用者。

基于上述实施例的内容,作为一种可选实施例,根据路径中包括的网络点的空间信息,计算每条路径的长度,参见图3,具体为:

s301、对于任意一条路径,根据该路径中各网络点的空间信息,计算所述路径中两两相邻的网络点间的距离。

现有技术中根据两个点的空间信息计算距离已经存在很多成熟的方案,目前使用较多的方案有两类:球面模型,这种模型将地球看成一个标准球体,球面上两点之间的最短距离即大圆弧长,这种方法使用较广,被广泛使用;2)椭球模型,该模型最贴近真实地球,精度也最高,但计算较为复杂。本发明实施例对具体的计算方案不做限定。

s302、根据所述网络点的连接顺序,对所有两两相邻的网络点间的距离求和,获得该路径的长度。

例如,若路径包括按连接顺序连接的起始点、网络点1、网络点2和终止点,那么分别计算起始点至网络点1的距离d1、网络点1至网络点2的距离d2和网络点2至终止点的距离d3。通过将d1、d2和d3求和,即可获得整条路径的长度。

需要说明的是,本发明实施例能够准确地获得每条路径的长度,为后续选择最短路径奠定了基础。

基于上述实施例的内容,作为一种可选实施例,计算每条路径的长度,之后还包括根据各路径的长度进行排序获得队列的步骤,参见图4,具体为:

s401、计算所述起始点至所述终止点在所述地图中的直线距离;

s402、对任意一条路径,根据所述直线距离与该路径的长度的比值,作为该路径的权重;

s403、根据各路径的权重由大到小的顺序对所述路径进行排序,获得所述队列。

需要说明的是,本发明实施例通过权重的方式获得队列,其目的是在后期获得最短路径后,将该最短路径对应的权重发送给客户,由权重的定义可知,当路径的长度越接近直线距离,则权重值越大,同时意味着效率越高,这样用户可以更直观地获知最短路径的程度,提高用户的体验。

相应地,所述从长度最短的路径开始进行连接判断,具体为从所述队列中长度最短的路径开始进行连接判断。需要注意的是,本发明实施例并不局限以长度变化的顺序还是逆序构建队列。即,既可以将最短长度的路径置于队列的队首,也可以将最长路径的路径置于队列的队首。

基于上述实施例的内容,作为一种可选实施例,所述从所述队列中长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径,具体为:

从所述当前进行连接判断的路径中的第一个网络点和第二个网络点开始,根据所述地图的网络线的空间信息判断所述第一个网络点和第二个网络点是否为连接状态。

需要说明的是,地图中的另一个重要组成部分即网络线,网络线用于将两个网络点进行连接,网络线的空间信息提供了起始点和终止点网络点的信息,也就是说,网络线提供了网络点的连接规则,若两个网络点之间有连接线,则说明两个网络点在地图中是可达的,若没有连接线,则说明不可达,因此,通过将路径中相邻的两个网络点的信息与网络线的空间信息匹配,即可获知两个网络点是否连接。

例如,路径中的第一个网络点为起始点,第二个网络点为网络点a,通过预先对地图中的所有网络点的编号可知,起始点的编号为112,网络点a的编号为134,检索是否有存在一条网络线将编号112和编号134的网络点连接,若存在,则判断起始点和网络点a为连接状态。

若是,则继续判断所述当前进行连接判断的路径中的第二个网络点和第三个网络点是否为连接状态,以此类推,若直至所述当前进行连接判断的路径中的倒数第二个网络点和倒数第一个网络点同样为连接状态,则将所述当前进行连接判断的路径作为最短路径。

基于上述实施例的内容,作为一种可选实施例,若判断所述当前进行连接判断的路径中出现不为连接状态的两个相邻的网络点,则从所述队列中选择下一条路径进行连接判断。

例如,队列中存在相邻的两条路径:路径1和路径2,路径2比路径1的长度略长,路径1为当前进行连接判断的路径。路径1包括:起始点、网络点k、网络点j、网络点s、终止点。在进行连接判断时,首先判断获知起始点至网络点k为连接状态,然后继续判断网络点k和网络点j是否为连接状态,若判断网络点k和网络点j之间不为连接状态,则不再对路径1中的后续网络点进行连接判断,而是对路径2进行连接判断。

基于上述实施例的内容,作为一种可选实施例,对于任意一对两两相邻的网络点,若存在一条网络线的空间信息与该两两相邻的网络点的编号匹配,则判断该两两相邻的网络点为连接状态。

基于上述实施例的内容,作为一种可选实施例,所述网络点的空间信息包括网络点在所述地图中的坐标;所述网络线的空间信息包括网络线连接的起始网络点的编号和终止点网络点的编号。

根据本发明的另一个方面,本发明实施例还提供一种最短路径的计算装置,参见图5,图5示出了本发明实施例的计算装置的功能框图,该计算装置用于前述各实施例的获取起始点至终止点的最短路径。因此,在前述各实施例中的计算方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。

如图所示,包括:

请求获取模块501,用于获取起始点和终止点在预设的地图中的空间信息;

路径获取模块502,用于根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点;

长度计算模块503,用于根据路径中包括的网络点的空间信息,计算每条路径的长度;

连接判断模块504,用于从长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,将该路径作为最短路径。

需要说明的是,本发明实施例通过长度计算模块对各种可能的路径计算长度,由连续判断模块从最短的路径进行连接判断,这样一旦出现满足连接判断的路径,即可作为最短路径,不用继续进行连接判断,大大降低了计算量,经过验证,本发明实施例相比原有dijkstra算法,在分析地理空间中各点之间的最短路径时,速度提升了十几倍。

图6示出了本发明实施例的电子设备的结构示意图,如图6所示,处理器(processor)601、存储器(memory)602和总线603;

其中,处理器601及存储器602分别通过总线603完成相互间的通信;处理器601用于调用存储器602中的程序指令,以执行上述实施例所提供的控制方法,例如,包括:获取起始点和终止点在预设的地图中的空间信息;根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点;根据路径中包括的网络点的空间信息,计算每条路径的长度;从长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径。

本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的控制方法,例如,包括:获取起始点和终止点在预设的地图中的空间信息;根据所述地图中其他网络点的空间信息,计算由所述起始点到达所述终止点的若干条路径,所述路径的信息包括一定数量的、按连接顺序排列的网络点;根据路径中包括的网络点的空间信息,计算每条路径的长度;从长度最短的路径开始进行连接判断,若当前进行连接判断的路径中所有两两相邻的网络点均符合连接判断的要求时,则将该路径作为最短路径。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个地图单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的路径来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者地图设备等)执行各个实施例或者实施例的某些部分的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1