一种最短路线规划方法、系统及计算机存储介质与流程

文档序号:16881832发布日期:2019-02-15 22:14阅读:245来源:国知局
一种最短路线规划方法、系统及计算机存储介质与流程

本申请涉及计算机技术领域,特别涉及最短路线规划方法及系统。



背景技术:

最短路径问题是图论研究中的一个经典的算法问题,旨在寻找图中两个节点之间的最短路径,最常用的算法有dijkstra算法、spfa算法\bellman-ford算法、floyd算法\floyd-warshall算法、johnson算法等。但是目前这些算法都需要进行相应的建模,数据结构的设计,数据存储的方案设计,以及海量数据下的运算效率问题,导致进行相应的设计开发需要花费大量的人力、时间。



技术实现要素:

考虑到上述问题而提出了本发明。本发明提供了一种最短路径规划方法、系统及计算机存储介质,实现了运用于时间最少,花费最少等相应场景,无需考虑设计算法、数据结构等因素,快速开发上线应用功能。

根据本发明一方面,提供了一种最短路径规划方法,所述最短路径规划方法包括:

获取用户自定义的路网图;

将所述路网图中的路线拆分成点位集合;

合并所述点位集合中不同路线间的相近的点位;

将所述合并后的点位集合录入数据库;

根据用户标注的起始和结束位置计算出最短路径。

示例性地,将所述路网图中的路线拆分成点位集合包括:基于所述路网图中的每条路线,将所述每条路线拆分为相邻点位之间距离相同的点位集合。

示例性地,将所述路网图中的路线拆分成点位集合包括:

所述路网图中的路线包括若干个标注点;

计算路线上相邻两个标注点p1,p2的方位角angle;

计算所述相邻两个标注点p1,p2的距离distance,除以拆分距离radius,得到细分粒度count;

将标注点p1作为第一点位,并根据第一点位和方位角angle计算第c点位,所述第c点位与所述第一点位距离radius*c长度,c小于或等于count。

示例性地,将所述点位集合中路线间相近的点位合并包括:路线间的两个点位之间的距离不超过合并距离阈值则将所述两个点位合并为同一个点。

示例性地,所述录入数据库包括:根据所述点位的经纬度生成id,并存储原始的点位信息或点位之间的实际距离或正确的点位链接信息中的至少一个。

示例性地,所述根据用户标注的起始和结束位置计算出最短路径包括:

根据用户标注的起始点位ps和结束点位pe,计算离用户自定义路线图上的最近的点位,作为新的起始点位pns和结束点位pne;

利用数据库计算所述新的起始点位pns和结束点位pne之间的最短路径,其点位集合[p1,p2,…,pn],n为自然数;

结合所述起始点位ps和结束点位pe,则所述最短路径的点位集合为[ps,p1,p2,…,pn,pe]。

示例性地,所述数据库包括neo4j数据库。

示例性地,所述拆分距离radius包括点位间最短距离。

示例性地,根据如下公式计算相邻两点p1,p2之间的方位角angle,其中,相邻两个标注点p1,p2的坐标分别记为(x1,y1)和(x2,y2),所述相邻两点p1,p2之间的方位角angle记为a:

赤道半径:rc=6378137;

极半径:rj=6356725;

点p1的经度弧度:

点p2的经度弧度:

点p1的纬度弧度:

点p2的纬度弧度:

点p1相对地心半径:

点p1投射赤道面至地心的距离:ed=ec×cos(la1);

经度差圆弧数:dx=(lo2-lo1)×ed;

纬度差圆弧数:dy=(la2-la1)×ec;

方位角:

示例性地,根据如下公式计算相邻两点p1,p2之间的距离distance,其中,所述相邻两个标注点p1,p2坐标分别记为(xa,ya)和(xb,yb),所述相邻两点p1,p2之间的距离distance记为l:

赤道半径:rc=6378137;

极半径:rj=6356725;

p1点纬度弧度值:

p2点纬度弧度值:

p1和p2点纬度弧度差值:a=r1-r2;

p1和p2点纬度角度差值:

p1和p2两点间的距离:

示例性地,根据如下公式计算所述第c点位的坐标,其中,所述第一点位和第c点位的坐标分别记为(xa,ya)和(xb,yb),二者之间的距离记为d,所述方位角angle记为a:

赤道半径:rc=6378137;

极半径:rj=6356725;

第一点位的纬度弧度:

第一点位相对地心半径:

第一点位投射赤道面至地心的距离:ed=ec×cos(la);

根据距离d换算经线差数:

根据距离d换算纬线差数:

第c点位点的坐标:

根据本发明另一方面,本发明提供了一种最短路径规划系统,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述所述方法的步骤。

根据本发明实施例的最短路径规划方法和系统,通过客户自定义的路网图以及neo4j数据库,利用平均节点间的距离权重因素,将最短路径的节点间权重弱化,运用neo4j的高效查询,找出相应的跳数最少的最短路径,实现了运用于时间最少,花费最少等相应场景,无需考虑设计算法、数据结构等因素,快速开发上线应用功能。

附图说明

通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1是用于实现根据本发明实施例的一种最短路径规划方法的示意流程图;

图2是用于实现根据本发明实施例的路线拆分成点位集合的示意流程图;

图3是用于实现根据本发明实施例的一条路线拆分成点位集合的示意原理图;

图4是用于实现根据本发明实施例的根据用户标注的起始和结束位置计算出最短路径的示意流程图。

具体实施方式

为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。

下面参考图1来描述用于实现本发明实施例的最短路径规划方法。

首先,获取用户自定义的路网图。其中,所述路网图包括用户录入的路线集合ls。

接着,将所述路网图中的路线拆分成点位集合。其中,基于所述路网图中路线集合ls的每条路线,将所述每条路线拆分为相邻点位之间距离相同的点位集合。

在一个实施例中,如图2所示,将所述路网图中的路线拆分成点位集合包括:

所述路网图中的路线包括若干个标注点;

计算路线上相邻两个标注点p1,p2的方位角angle;

计算所述相邻两个标注点p1,p2的距离distance,除以拆分距离radius,得到细分粒度count;

将标注点p1作为第一点位,并根据第一点位和方位角angle计算第c点位,所述第c点位与所述第一点位距离radius*c长度,c小于或等于count。

上述根据方位角分割两个标注点的路线,可以保证新的点位集合画出的路线与原始一致。因为每条路线包括用户标注的多个标注点,每两个标注点之间的路线可根据上述拆分点位集合的方法进行拆分;每条路线上的所有标注点之间的路线拆分完之后,即整条路线被拆分为相邻点位的距离相同的点位集合。而拆分距离radius的选取尽量跟点位间最短距离相近,以便减小距离权重影响。

在一个实施例中,如图3所示,路网图中的一条路线l,从起点l1到终点ln,包括路线的起点、每个转折点、终点分别为:l1、l2、l3、l4….ln,按照图2所示的方法分别拆分点l1、l2之间的路线,点l2、l3之间的路线,……,ln-1、ln之间的路线,得到每两点之间的点位集合,进而组成整条线路的点位集合。

在一个实施例中,所述拆分距离radius包括点位间最短距离。

在一个实施例中,根据如下公式计算相邻两点p1,p2之间的方位角angle,其中,相邻两个标注点p1,p2的坐标分别记为(x1,y1)和(x2,y2),所述相邻两个标注点p1,p2之间的方位角angle记为a:

赤道半径:rc=6378137;

极半径:rj=6356725;

点p1的经度弧度:

点p2的经度弧度:

点p1的纬度弧度:

点p2的纬度弧度:

点p1相对地心半径:

点p1投射赤道面至地心的距离:ed=ec×cos(la1);

经度差圆弧数:dx=(lo2-lo1)×ed;

纬度差圆弧数:dy=(la2-la1)×ec;

方位角:

在一个实施例中,根据如下公式计算相邻两点p1,p2之间的距离distance,其中,所述相邻两个标注点p1,p2坐标分别记为(xa,ya)和(xb,yb),所述相邻两个标注点p1,p2之间的距离distance记为l:

赤道半径:rc=6378137;

极半径:rj=6356725;

p1点纬度弧度值:

p2点纬度弧度值:

p1和p2点纬度弧度差值:a=r1-r2;

p1和p2点纬度角度差值:

p1和p2两点间的距离:

在一个实施例中,根据如下公式计算所述第c点位的坐标,其中,所述第一点位和第c点位的坐标分别记为(xa,ya)和(xb,yb),二者之间的距离记为d,所述方位角angle记为a:

赤道半径:rc=6378137;

极半径:rj=6356725;

第一点位的纬度弧度:

第一点位相对地心半径:

第一点位投射赤道面至地心的距离:ed=ec×cos(la1);

根据距离d换算经线差数:

根据距离d换算纬线差数:

第c点位点的坐标:

下一步,合并所述点位集合中不同路线间的相近的点位。其中,路线间的两个点位之间的距离不超过合并距离阈值则将所述两个点位合并为同一个点。这样有利于减少由于用户标注的路线数据间的误差,如实际路线为同一段,标注时不同路线间点位不一致情况。

下一步,将所述合并后的点位集合录入数据库。其中,数据库根据所述点位的经纬度生成id,并存储原始的点位信息或点位之间的实际距离或正确的点位链接信息中的至少一个。在一个实施例中,数据库包括neo4j数据库。

录入数据库时根据点位经纬度生成id,保证了点位的唯一;而存储原始点位信息、两点之间的实际距离distance、正确的点位链接信息,这样计算出的最短路径上的点位信息保证都是原始标注路线上的点位,进一步提高了准确性。

最后,根据用户标注的起始和结束位置计算出最短路径。

其中,如图4所示,根据用户标注的起始点位ps和结束点位pe,计算离用户自定义路线图上的最近的点位,作为新的起始点位pns和结束点位pne;

利用数据库计算所述新的起始点位pns和结束点位pne之间的最短路径,其点位集合[p1,p2,…,pn],n为自然数;

结合所述起始点位ps和结束点位pe,则所述最短路径的点位集合为[ps,p1,p2,…,pn,pe]。

本发明根据客户自定义的路网图以及neo4j数据库来粗略实现相应功能,将用户录入的路径根据距离平均分割成多个点位,以减少路径点位间的距离权重影响,合并路线间相近点位,然后将所有节点信息和节点链接信息录入neo4j,利用neo4j的最短路径规划可在毫秒级找出相应路线,实现了快速设计开发上线的相应功能。同时,因节点间距离因素已在入库时处理,可大致认为跳数最少的路径即为距离最短的路径,所以本发明的准确性与入库时路径节点间的距离相差度成正比,即两两节点间距离差值越小,选出的最短路径越接近正确值。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

根据本发明的另一方面,提供了一种最短路径规划系统,包括存储装置、以及处理器;

所述存储装置存储用于实现根据本发明实施例的最短路径规划方法中的相应步骤的程序代码;

所述处理器用于运行所述存储装置中存储的程序代码,以执行以上根据本发明实施例的最短路径规划方法的相应步骤。

在一个实施例中,在所述程序代码被所述处理器运行时执行以上根据本发明实施例的前述最短路径规划方法的相应步骤。

此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的最短路径规划方法的相应步骤,并且用于实现根据本发明实施例的最短路径规划系统。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含用于随机地生成动作指令序列的计算机可读的程序代码,另一个计算机可读存储介质包含用于进行最短路径规划的计算机可读的程序代码。

在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的前述最短路径规划方法。

根据本发明实施例的最短路径规划方法和系统,通过客户自定义的路网图以及neo4j数据库,利用平均节点间的距离权重因素,将最短路径的节点间权重弱化,运用neo4j的高效查询,找出相应的跳数最少的最短路径,实现了运用于时间最少,花费最少等相应场景,无需考虑设计算法、数据结构等因素,快速开发上线应用功能。

尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。

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