具体实施方式
为使本发明实施例的目的、技术方案及优点更加清楚明白,以下参照附图对本发明实施例提供的技术方案进行详细说明。
请参见图1,本发明实施例提供了一种获取路线描述的方法,该方法包括:
步骤101:将导航路径中属性相似的导航路段划分到同一个导航路段簇(SectionCluster)中;
其中,所述导航路径是电子地图服务器根据用户输入的起点及终点信息生成的。
步骤102:从每个导航路段簇中提取用户关注信息;
步骤103:将所述用户关注信息组合为所述导航路径的路线描述。
本发明实施例提供的方法通过将导航路径中属性相似的导航路段划分到同一个导航路段簇中,使连续且相似的导航路段聚在一起,再针对导航路段簇进行描述,使得最终获得的路线描述相对于现有基于导航动作的路线描述,更加精简直观,使用户对导航路径产生非常深刻的印象,更容易理解行车方案。
比如,电子地图服务器生成从“国贸”到“中央电视台”的导航路径为:
S1:沿建国门外大街行驶1.9公里,直行进入建国门内大街;
S2:沿建国门内大街行驶1.4公里,直行进入东长安街;
S3:沿东长安街行驶1.9公里,直行进入西长安街;
S4:沿西长安街行驶1.6公里,直行进入复兴门内大街;
S5:沿复兴门内大街行驶1.6公里,直行进入复兴门外大街;
S6:沿复兴门外大街行驶1.3公里,
S7:朝复兴路方向,左转进入复兴路。
对上述导航路径,采用本发明实施例提供方法获取路线描述的过程具体包括:
将上述导航路径中属性相似(同一条线路上的)的导航路段划分到同一个导航路段簇中,得到两个导航路段簇,分别为:导航路段簇C1{S1,S2,S3,S4,S5,S6}及导航路段簇C2{S7},该过程将一条由7个导航路段构成的导航路径,整合为由2个“导航路段”(导航路段簇C1和导航路段簇C2)构成的导航路径,再从这2个“导航路段”提取用户关注的信息,比如导航路段名称:建国门外大街,建国门内大街,东长安街,西长安街,复兴门内大街,复兴门外大街,复兴路,组合用户关注信息得到路线描述具体为:沿建国门外大街行驶,经建国门内大街、东长安街、西长安街、复兴门内大街、复兴门外大街后,进入复兴路。
由上述举例可清楚看到,采用本发明实施例提供方法获取的路线描述比现有路线描述更加精简且非常直观,用户不用将上述道路在地图上进行一一对应,也可以准确理解行车方案,极大地改善了用户体验。
以上是本发明实施例提供的获取路线描述的方法,以下结合具体实现方式对前文所述方法做进一步阐述。
在实际应用中,技术人员可以采用聚类方式,实现将导航路径中属性相似的导航路段划分到同一个导航路段簇中,即,对导航路径的导航路段进行聚类,得到属性相似导航路段构成的导航路段簇,也可以采用其他方式,实现将导航路径中属性相似的导航路段划分到同一个导航路段簇中,并不影响本发明实施例的实现。
以下以“聚类”为例,对本发明实施例提供的获取导航路段簇的方法进行详细介绍。
所谓“聚类”(Cluster),是将物理或抽象对象的集合分成由类似或相似对象组成的多个类的过程。聚类生成的簇是一组数据对象的集合,同一个簇中的对象彼此相似或类似,而与其他簇中的对象相异。
例如,某栋楼有10位居民,年龄分别为22、23、35、37、38、21、65、35、68、72,通过聚类算法分析后,可以将上述样本数据划分为两类或三类:
如果分两类:A:{22,23,35,37,38,21,35},B:{65,68,72};
如果分为三类:A:{22,23,21},B:{35,37,38,35},C:{65,68,72}。
上述例子中,样本数据是无序的,因此在聚类时可以打乱原有顺序。有序聚类则是对顺序固定样本数据的聚类,它要求聚类时样本数据必须按照固有顺序排列。导航路径(Route)是一条由多个导航路段(Section)顺序连接而成的曲线,若将每个导航路段视为一个样本数据,则整条导航路径可视为一条按时间顺序组织起来的有序样本数据集合。因此,本发明实施例优选采用有序聚类算法对导航路径进行聚类,获取由相似导航路段构成的导航路段簇。
在具体实现时,对导航路径这样的有序样本集合,有多种有序聚类算法可供选择,包括:最优分割算法(Fisher Analysis)和基本顺序算法(BasicSequential AlgorithmicScheme,BSAS)等。无论采用哪种聚类算法,都需要计算样本数据之间的距离,用“距离”来量化样本间的“相似度”。
其中,基本顺序算法BSAS的主要处理流程是:在聚类之前设定一个距离阈值θ,然后将样本集合中的第一个样本数据独立作为一个簇,再按照样本数据的固有顺序,顺序计算每一个样本数据与其对应的最后一个簇的样本中心值的距离,如果距离小于距离阈值θ,则把样本数据加入到最后一个簇中,并重新计算该簇的样本中心值,否则,则新生成一个簇,将样本数据加入新的簇中,该簇就成为了最后一个簇,计算该簇的样本中心值,依次类推,直至所有样本数据处理完毕。在本发明实施例中,所谓样本中心值,就是一个簇中所有样本数据各个维度上的平均值。
进一步,为避免一个簇中包含的样本数据过多,对于前文所述基本顺序算法BSAS,在设定距离阈值θ的同时,还可以进一步设定一个单簇最大样本数Q,与前文只设定距离阈值θ的情况相比,其区别仅在于:
若判断得到距离小于距离阈值θ且最后一个簇中已聚合的样本数目小于Q时,则将样本数据加入到最后一个簇中,并重新计算该簇的样本中心值;
若判断得到距离大于距离阈值θ或者判断得到距离小于距离阈值θ且最后一个簇中已聚合的样本数目大于Q,则新生成一个簇,将样本数据加入新的簇中,并计算该簇的样本中心值。为节省篇幅其他内容请参照前文相关部分此处不再赘述。
最优分割算法,又称Fisher分析法,这种算法的优点是:通过反复计算和保存各种分割情况下的直径距离与离均差,能够较好的寻找到最优分割点。
以上介绍了两种主要的有序聚类算法,由于有序聚类算法种类众多,本发明实施例无法穷举,技术人员可以按需求采用相关算法并不影响本发明实施例的实现。
以下以基本顺序算法为例,对本发明实施例提供的获取导航路段簇的具体实现方式进行详细介绍。
请参见图2,为本发明实施例提供的采用基本顺序算法,获取导航路段簇的方法流程图,该方法包括:
步骤201:生成一个导航路段簇;
步骤202:将导航路径的第1个导航路段(沿行车方向)作为一个样本数据加入到此簇中;
步骤203:沿着导航路径行车方向,读取第i个导航路段,i初始值为2;
步骤204:判断最后一个导航路段簇中聚合的导航路段数是否小于预置的单簇最大样本数,如果小于,则进入步骤205,否则,进入步骤208;
步骤205:计算第i个导航路段与最后一个导航路段簇的距离;
步骤206:判断所述距离是否小于预置的距离阈值θ1,如果小于,说明第i个导航路段与最后一个导航路段簇中的导航路段相似,进入步骤207,如果大于,说明不相似,进入步骤208;
其中,距离阈值θ1可以由技术人员根据实践经验进行设定。
步骤207:将所述第i个导航路段添加到所述最后一个导航路段簇中,进入步骤209;
步骤208:新生成一个导航路段簇,并将第i个导航路段添加到新生成的导航路段簇中,进入步骤209;
步骤209:判断所述第i条导航路段是否为所述导航路径的最后一条导航路段,如果是,则结束上述流程,如果否,则i=i+1,返回步骤203。
以上是本发明实施例提供的采用基本顺序算法获取导航路段簇的方法,上述方法中预置了距离阈值θ1和单簇最大样本数两个参数,在实际应用中也可以仅设置距离阈值θ1,并不影响本发明实施例的实现。
另外,在上述实施例中是先执行步骤204判断最后一个导航路段簇中聚合的导航路段数是否小于预置的单簇最大样本数,再执行步骤205计算距离,最后执行步骤206判断距离是否小于预置的距离阈值θ1,这样的执行顺序可以提高处理导航路段的速度及效率。进一步,在本发明其他实施例中,也可以先执行步骤205计算距离,再执行步骤206判断距离是否小于预置的距离阈值θ1,如果距离大于距离阈值θ1,则进入步骤208,如果距离小于距离阈值θ1,则执行步骤204判断最后一个导航路段簇中聚合的导航路段数是否小于预置的单簇最大样本数,如果聚合的导航路段数小于单簇最大样本数,则进入步骤207,否则,进入步骤208。
以上介绍了本发明实施例提供的获取导航路段簇的方法流程,以下对如何计算第i个导航路段与最后一个导航路段簇的距离的方式进行介绍。
本发明实施例提供的计算第i个导航路段与最后一个导航路段簇的距离的方法包括如下步骤:
第一步、计算最后一个导航路段簇的样本中心值;
在实际应用中,该步骤可以在读取出导航路段之前进行,也可以在读取出导航路段之后进行,并不影响本发明实施例的实现。
比如,将第2条导航路径添加到其对应的最后一个导航路段簇后,可以马上计算该导航路段簇的样本中心值,也可以在读取出第3个导航路段簇之后计算该簇的样本中心值。这两种方式得到的样本中心值是相同的,都是最后一个导航路段簇中所有导航路段的样本均值,因此并不会影响本发明实施例的实现。
第二步,用第i条导航路段的样本值减去导航路段的样本中心值,得到第i条导航路段到最后一个导航路段簇的距离。
关于样本中心值,前文已述样本中心值是一个簇中所有样本数据各个维度上的平均值。对于导航路段簇,可以将该簇中每个导航路段都视为一个样本数据,导航路段包含了许多属性,如道路名称、道路等级、道路长度、道路类型、导航动作等,每个属性就是导航路段的一个维度,因此导航路段簇的样本中心值就是该簇中所有样本数据各个属性的平均值。
由于导航路段簇维度很高,如果对每个维度都进行相似度评估,模式比较复杂且计算效率较低。为提高计算效率,减小问题的复杂程度,本发明实施例优选对导航路段进行适当的降维,选择道路等级、道路名称、重要导航动作(如进入下一个导航路段)这三个属性其中之一或者这三个属性的组合,计算导航路段簇的样本中心值。比如,导航路段簇的样本中心值可以是导航路段簇中所有导航路段道路等级的均值。
对于判断导航路段是否相似可以确定如下原则:
1、道路名称相同或相近的导航路段属于相似导航路段(样本数据间距离小于阈值);
2、道路等级接近的导航路段属于相似导航路段(样本数据间距离小于阈值);
3、如果导航路段1进入导航路段2存在重要的导航动作(如调头、进入高速、乘坐轮渡等),则这两个导航路段不相似(样本数据间距离大于阈值),反之则相似(样本数据间距离小于阈值)。
以下以一个实例对本发明实施例提供的方法进行介绍。为简明起见,用道路等级计算样本间距离,预置的距离阈值θ1=1.5,单簇最大样本数=5。
假如某条导航路径经过7个路段{S1,S2,...,S7},道路等级分别为:2,2,3,4,4,6,7,则聚类过程具体为:
生成一个导航路段簇C1,将S1添加到导航路段簇C1中,该簇目前只有一个导航路段,它的样本中心值就是S1的道路等级值2;
用S2的道路等级值2减去导航路段簇C1的样本中心值2,得到距离为0,由于0小于距离阈值θ1且导航路段簇C1中聚合的样本数小于5,则将S2添加到导航路段簇C1中;
导航路段簇C1的样本中心值等于2,即,(2+2)/2,用S3的道路等级值3减去导航路段簇C1的样本中心值2,得到的距离为1,由于1也小于距离阈值θ1且导航路段簇C1中聚合的样本数小于5,则将S3也添加到导航路段簇C1中;
导航路段簇C1的样本中心值约等于2.33,即(2+2+3)/3,用S4的道路等级值4减去导航路段簇C1的样本中心值2.33,得到距离等于1.67,由于1.67大于距离阈值θ1,则新生成一个导航路段簇C2,并将S4添加到该导航路段簇中;
导航路段簇C2目前只有一个导航路段,它的样本中心值就是S4的道路等级值4,用S5的道路等级值4减去导航路段簇C2的样本中心值4,得到距离为0,该距离小于距离阈值θ1且导航路段簇C2中聚合的样本数小于5,则将将S5也添加到导航路段簇C2中;后续导航路段S6和S7的聚合方法与前文类似此处不再赘述,最后聚合得到的结果请参见表1。
导航路段簇 |
C1 |
C2 |
C3 |
样本集合 |
S1,S2S3 |
S4,S5 |
S6,S7 |
样本中心值 |
2.3 |
4 |
6.5 |
表1一次聚类结果
将原始导航路径经过一次聚类后,该原始导航路径已经被较好地整合,为使用户能够有更好的用户体验。本发明实施例还提供了一种获取导航路段簇的方法,该方法是在完成图2所示第一次聚类后,对第一次聚类得到的导航路段簇进行第二次聚类,以下对本发明实施例提供的如何对导航路段簇进行第二次聚类的方法进行详细介绍。
在实际应用中,第二次聚类可以有以下两种实现方式:
第一种实现方式,如果第一次聚类时设定的距离阈值θ1较小,则在二次聚类时,可以设置一个大于距离阈值θ1的距离阈值θ2,然后,在完成第一次聚类后,执行将属性相似的导航路段簇合并为一个导航路段簇的步骤,该步骤的具体实现方式为:
顺序读取所述导航路径的导航路段簇,计算当前读取的导航路段簇与其对应的前一个导航路段簇的样本中心值的距离,如果距离小于预置的距离阈值θ2,则将当前读取的导航路段簇与其对应的前一个导航路段簇合并为一个导航路段簇。
以表1所示一次聚类结果为例说明第一种实现方式。距离阈值θ2等于1.8,则二次聚类具体包括:
导航路段簇C2的前一个导航路段簇是导航路段簇C1,则用导航路段簇C2的样本中心值4减去导航路段簇C1的样本中心值2.3,得到距离为1.7,由于1.7小于距离阈值θ2,导航路段簇C1和导航路段簇C1是属性相似的导航路段簇,则将这两个导航路段簇并为导航路段簇C′1,导航路段簇C′1是导航路段簇C3的前一个导航路段簇,用导航路段簇C2的样本中心值6.5减去导航路段簇C′1的样本中心值3,得到距离为3.5,说明导航路段簇C′1和导航路段簇C3不属于相似导航路段簇,则以导航路段簇C3作为第二次聚类的分簇结果。二次聚类结果请参见表2。
二次聚类的分簇 |
C′1 |
C′2 |
样本集合 |
{C1,C2}={S1,S2,S3,S4,S5} |
{C3}={S6 S7} |
样本中心值 |
3 |
6.5 |
表2二次聚类结果
第二种实现方式,如果第一次聚类时设定的距离阈值θ1较大,则在第二次聚类时可以设置一个小于距离阈值θ1的距离阈值θ2,然后在完成第一次聚类后,执行对每一个导航路段簇中的导航路段进行聚类,得到由属性相似导航路段构成的二次聚类导航路段簇的步骤。对每个导航路段簇中的导航路段进行聚类,可以采用基本顺序算法,也可以采用其他有序聚类算法进行聚类,并不影响本发明实施例的实现。
以前文表1所示一次聚类结果为例说明第二种实现方式。一次聚类得到三个导航路段簇,则分别对导航路段簇C1、C2和C3中的每个导航路段进行二次聚类,其中,二次聚类时可以先处理导航路段簇C1,再处理导航路段簇C2,最后处理导航路段簇C3,也可以按其他顺序处理,比如先处理导航路段簇C2,再处理导航路段簇C3,最后处理导航路段簇C1,或者三个导航路段簇同时处理,并不影响本发明实施例的实现。
以上是本发明实施例提供的二次聚类的实现方式。对于前文所述由7个导航路段构成的导航路径,经过两次聚类后可以形成两级路线描述。第一级为概要描述,它用两个导航路段{S1,S2,S3,S4,S5}和{S6,S7}的信息描述整个导航路径,如果概要描述不能够让用户理解具体行进方案,用户可以查看更详细的路线描述,此时,用三个导航路段{S1,S2,S3},{S4,S5}和{S6,S7}的信息描述整个导航路径,给用户更加丰富的信息。
以上详细介绍了采用聚类方式如何解决导航路段整合的问题,以下介绍本发明实施例提供的如何根据整合后的导航路段,得到路线描述的过程。
路线描述的文字组合可以千变万化,如方向、长度等信息都比较好获取,可以视需要决定是否提取(例如:可以在详述中多采用一些元素,概述中少采用一些元素)。本发明实施例主要关注三种要素信息的提取:途经道路名称列表、路段结尾处导航动作、切换信息,这三个要素信息也是用户关注的信息。在实际应用中,可以仅提取道路名称列表,即遍历每个导航路段簇的每条导航路段,提取用户关注的道路名称,也可以在此基础上提取路段结尾处的导航动作及离开位置。
若仅提取道路名称列表,则将所述用户关注信息组合为所述导航路径的路线描述具体包括:
将所述道路名称按行车顺序依次排列,并按照预置的规则得到所述导航路径的路线描述。
另外,在实际应在用中,提取道路名称列表就是按行顺序遍历导航路段簇中所有导航路段,但是需要进行一定排重与去噪,主要需要注意以下一些事项:
1、如果出现连续的同名道路,多个道路名称相同且连续时,只提取第一个。
2、只提取主要道路的名称,对于道路中存在一些小的过渡段,如复杂节点内部道路、辅助道路、匝道、出口、入口、左右转专用道,这些道路一般不提取名称。
3、某些道路可能存在一些别名,更加通俗易懂,也可以使用别名,但是也需要进行排重,例如:路径经过“北三环西路”、“北三环中路”、“北三环西路”,它们的别名都为“北三环”,采用别名提取后则生成一个“北三环”的名称。
经过路名提取后,每个导航路段簇都有自己道路名称列表,至少可以形成基本的描述。例如,从{S1,S2,S3,S4,S5}簇中提取出三条主要道路的名称:依次为“A路“B路”、“C路”,从{S6,S7}提取出一条道路的名称:“D路”,则可以形成以下基本描述:
1、“从A路出发,经B路、C路行驶,[在**处]进入D路”。
2、“沿D路[向北]行驶[**千米],到达目的地。”
上面描述中,如方向定语,行驶长度,转折位置、导航动作等都可以视需求进行裁剪与调整。当然,如果有的簇中经过的都是无名道路则可以选择不以路名进行描述,也可以在聚类时,通过距离函数,尽量将无名道路至少与一个含名称的道路聚合在一起。
关于导航动作,前面已经分析过:在互联网应用中,如“偏左转”、“偏右转”等许多许多导航动作没有播报的价值,可以都用“进入”、“行驶到”之类的词通称。在具体实现时,技术人员可以视具体需求而定,例如概述中,动作都采用简略的通称,在详细描述中,采用更加具体的动作词汇,详略结合。
关于切换信息,我们是基于聚类的簇生成描述,相邻簇之间存在道路或动作的切换,有些信息是具有标识意义的,能让用户更加快捷地理解路径,因此应该在生成描述时,加强对这些切换信息的提取,以下是一些可选项:
如果两个导航路段簇之间的切换是通过出入口进出高速或主路,可以路牌信息中提取出入口或出口的名称或者编号,形成描述如“在**出口驶离,进入**路”、“在**入口进入**路”。
如果两个导航路段簇之间的切换是通过立交桥或高驾的匝道进入另一条道路,则可以提取匝道的名称(匝道的名称是不被提取到道路名称列表的)形成描述,如“沿**匝道,进入**路”。
如果切换前不远位置存在重要POI名称,可以提取该POI名称及到切换处的位置,形成描述如“过海龙大厦50米后右转进入北四环路”。
以上介绍了本发明实施例提供的获取路线描述的方法,以下结合附图对本发明实施例提供的获取路线描述的装置进行详细介绍。
请参见图3,是本发明实施例提供的获取路线描述的装置,该装置包括:
簇获取单元301,用于将导航路径中属性相似的导航路段划分到同一个导航路段簇中;
信息提取单元302,用于从每个导航路段簇中提取用户关注信息;
路线描述生成单元303,用于将所述用户关注信息组合为所述导航路径的路线描述。
在实际应用中,可以采用聚类的方式获取导航路段簇,则所述簇获取单元301具体包括:
一次聚类单元,用于对导航路径的导航路段进行聚类,得到属性相似导航路段构成的导航路段簇。
优选地,一次聚类单元具体包括:
第一簇生成单元,生成一个导航路段簇,将导航路径的第1个导航路段加入所述导航路段簇;
路段距离计算单元,用于顺序读取所述导航路径的其余导航路段,计算当前读取的导航路段与其对应的最后一个导航路段簇样本中心值的距离;
路段距离判断单元,用于判断所述距离是否小于预置的第一距离阈值;
路段添加第一单元,用于在距离判断单元判断得到距离小于预置的第一距离阈值时,将所述导航路段添加到最后一个导航路段簇中;
簇生成第一单元,用于在距离判断单元判断得到距离大于预置的第一距离阈值时,新生成一个导航路段簇,并将所述导航路段添加到新的导航路段簇中。
为避免一个导航路段簇中聚合过多的导航路段,上述一次聚类单元可以进一步包括:
单簇样本数判断单元,用于判断所述最后一个导航路段簇中聚合的导航路段数是否小于预置的单簇最大样本数;
路段添加第二单元,用于在路段距离判断单元及单簇样本数判断单元,判断得到距离小于第一距离阈值且所述最后一个导航路段簇中聚合的导航路段数小于预置的单簇最大样本数时,将所述导航路段添加到最后一个导航路段簇中,
簇生成第二单元,用于在路段距离判断单元及单簇样本数判断单元,判断得到距离小于第一距离阈值且所述最后一个导航路段簇中聚合的导航路段数大于预置的单簇样本数,则新生成一个导航路段簇,并将所述导航路段添加到新的导航路段簇中。
由于不同用户路线描述的详略有不同的需求,为了满足各种用户的需求,本发明实施例提供的获取路线描述的装置可以进一步包括:
二次聚类单元,用于属性相似的导航路段簇合并为一个导航路段簇。
在实际应用中,所述二次聚类单元具体包括:
簇距离计算单元,用于顺序读取所述导航路径的导航路段簇,计算当前读取的导航路段簇与其对应的前一个导航路段簇的样本中心值的距离;
簇距离判断单元,用于判断所述簇距离计算单元计算的距离是否小于预置的第二距离阈值;
簇合并单元,用于在簇距离判断单元判断得到距离小于预置的第二距离阈值时,将所述导航路段簇与所述最后一个导航路段簇合并为一个导航路段簇。
所述信息提取单元302具体包括:
道路名称提取单元,用于遍历每个导航路段簇的每条导航路段,提取道路名称;
所述路线描述生成单元303具体包括:
路线描述生成子单元,用于将所述道路名称按行车顺序依次排列,按预置规则得到所述导航路径的路线描述。
本发明实施例还提供了一种电子地图服务器,前文所述获取路线描述的装置是该电子地图服务器的一个功能实体。
以上对本发明所提供的一种获取路线描述的方法及装置、电子地图服务器进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。