本申请涉及电子地图渲染技术领域,更具体地说,涉及一种道路确定方法及装置。
背景技术:
道路信息标注是地图显示的一个重点内容,道路信息标注的好坏直接影响用户的体验,是软件质量保证的重要一环。道路信息标注的宗旨是在地图上找到合适的位置对道路进行信息标注。道路信息标注可以包括:道路文字标注、导航引导箭头标注等。
以道路文字标注为例,现有标注方式一般是,服务端组织客户端所需要的道路数据,包括组成待标注道路的形状点集合和待标注文字,客户端计算待标注文字的长度,并遍历形状点集合找到足够放置待标注文字的位置,进而标注。但是,由于道路的形状点集合中形状点个数是海量的,按照现有方式查找标注位置需要遍历海量的形状点,其计算标注位置的效率低下,并且找到标注位置的机率很低。
技术实现要素:
有鉴于此,本申请提供了一种道路确定方法及装置,用于解决现有技术针对服务端下发的全量道路形状点集合进行遍历查找标注位置所存在的,效率低下、得到标注位置的机率低的问题。
为了实现上述目的,现提出的方案如下:
一种道路文字标注位置确定方法,包括:
从上述的技术方案可以看出,本申请实施例提供的道路确定方案,获取道路数据,所述道路数据包括组成道路的形状点集合;获取待显示的电子地图的地图缩放级别及所述道路的线宽信息;根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合。本申请根据地图缩放级别以及道路的线宽信息,对道路的形状点集合进行抽稀,在一定程度上提升了计算标注位置的效率,同时,因为抽稀减少了一些形状点,使得形状点间距得到增加,从而提高了得到标注位置的机率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种道路确定方法流程图;
图2为本申请实施例公开的一种对形状点集合进行抽稀的方法流程图;
图3为本申请实施例公开的另一种道路确定方法流程图;
图4为本申请实施例公开的一种确定标注位置的方法流程图;
图5为本申请实施例公开的一种确定目标路段的方法流程图;
图6为本申请示例的一种道路的形状点划分方式示意图;
图7为本申请实施例公开的一种查找符合设定曲折条件的形状点的方法流程图;
图8为本申请实施例公开的一种在所述候选段中查找符合设定曲折条件的形状点的示意图;
图9为本申请实施例公开的一种在目标路段中查找可标注文字路段的方法流程图;
图10为本申请示例的一种在目标路段中查找可标注文字路段的效果示意图;
图11a为按照现有技术进行道路文字标注后的显示效果示意图;
图11b为按照本申请方法进行道路文字标注后的显示效果示意图;
图12为本申请实施例公开的一种道路确定装置结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,图1为本申请实施例公开的一种道路确定方法流程图。
如图1所示,该方法包括:
步骤s100、获取道路数据,所述道路数据包括组成道路的形状点集合;
具体地,客户端可以从服务器获取道路数据,该道路数据为服务器下发的组成道路的形状点集合。
步骤s110、获取待显示的电子地图的地图缩放级别及所述道路的线宽信息;
具体地,客户端在响应用户的拖动操作、缩放地图缩放级别操作或其它可能涉及改变已显示的电子地图所覆盖地理区域范围的操作,需要重新对图面(含地图及导航路线)进行渲染时,可以获取待显示的电子地图的地图缩放级别以及道路的线宽信息。
可选的,客户端可以存储样式文件,样式文件中可以规定道路的线宽信息。当然,客户端也可以从服务器中获取道路的线宽信息。
步骤s120、根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合。
具体地,根据地图缩放级别的不同,以及道路的线宽的不同,可以采取不同的抽稀方式,对道路的形状点集合进行抽稀,降低形状点集合中形状点的数量,同时通过抽稀掉部分形状点,使得抽稀后道路的形状点集合中的形状点间距得到增加。
本申请实施例提供的道路确定方法,根据地图缩放级别以及道路的线宽信息,对道路的形状点集合进行抽稀,在一定程度上提升了计算标注位置的效率,同时,因为抽稀减少了一些形状点,使得形状点间距得到增加,从而提高了得到标注位置的机率。
进一步,对上述s120,根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合,以下本申请将结合具体实施例进行详细介绍。
在介绍抽稀实施例之前,首先对道路的形状点集合做进一步介绍。客户端可以从服务器获取道路的形状点集合,形状点集合中每一形状点还可以设置有抽稀标记,抽稀标记的不同取值表示该抽稀标记是否有效。如果抽稀标记有效,则表示对应的形状点在地图缩放级别小于设定地图缩放级别阈值时可直接被抽稀掉。服务器预先根据道路的实际情况,在地图缩放级别小于设定地图缩放级别阈值时将形状点集合中一部分不重要的形状点的抽稀标记设置为有效,以便客户端可以根据该标记来确定是否要对相应形状点进行抽稀。其中,设定地图缩放级别阈值可以根据实际情况而定,例如10或其它数值。举例如,抽稀标记为0时,表示抽稀标记有效,对应形状点在地图缩放级别小于10级时可以直接被抽稀掉。
基于上述介绍,本申请实施例公开了一种对道路的形状点集合进行抽稀的方法流程图,如图2所示,该方法包括:
步骤s200、根据地图缩放级别以及道路的线宽信息,获得所述道路的抽稀跳点阈值;
具体地,本申请可以预先设计地图缩放级别对应的抽稀跳点阈值filterlen计算公式,或者,地图缩放级别和形状点集合中形状点个数的组合对应的抽稀跳点阈值filterlen计算公式。其中,抽稀跳点阈值filterlen计算公式为抽稀跳点阈值filterlen与道路的线宽的数值关系。
基于此,可以获取与所述地图级别,或所述地图级别与所述道路的形状点集合中形状点个数的组合对应的抽稀公式,根据抽稀公式和所述道路的线宽信息,计算道路的抽稀跳点阈值filterlen。即,将道路的线宽带入获取的抽稀跳点阈值filterlen计算公式中,进而得到抽稀跳点阈值filterlen。
举例说明如下:
本申请实施例将地图缩放级别划分为四种情况,四种情况分别对应不同的抽稀跳点阈值filterlen计算公式,如下所示:
(1)、nmaplevel>=17,filterlen=0表示不用抽稀;
(2)、nmaplevel为15、16级,filterlen=k1*nlinewidth;
(3)、nmaplevel<=9且形状点集合中形状点个数>=100,filterlen=k2*nlinewidth;
(4)、剩余的情况filterlen=k3*nlinewidth。
上述nmaplevel表示地图缩放级别,filterlen表示抽稀跳点阈值,nlinewidth表示道路的线宽,k1-k3表示系数值。
步骤s210、依次从所述道路的形状点集合中选取一形状点,计算该选取的形状点与下一相邻形状点间的距离ntemplen;
具体地,依次从道路的形状点集合中选取一形状点pi,计算形状点pi与下一相邻形状点pi+1间的距离ntemplen。
步骤s220、判定所述地图缩放级别是否大于设定的地图缩放级别阈值;若是,执行步骤s230,若否,执行步骤s240;
步骤s230、根据所述ntemplen与filterlen的大小关系,确定是否将所述形状点抽稀掉;
具体地,若地图缩放级别大于设定地图缩放级别阈值,则在确定是否将形状点i抽稀掉时,只需要考虑所述ntemplen与filterlen的大小关系即可。
一种可选的实施方式中,可以判断ntemplen是否超过filterlen,若是,则确定保留选取的形状点pi,若否,则确定将选取的形状点pi抽稀掉。
其中,保留的形状点构成抽稀后道路的形状点集合。
步骤s240、根据所述形状点的抽稀标记的取值、所述ntemplen与filterlen的大小关系,确定是否将所述形状点抽稀掉。
具体地,若地图缩放级别不超过设定地图缩放级别阈值,则在确定是否将选取的形状点pi抽稀掉时,需要综合考虑形状点pi的抽稀标记的取值,以及所述ntemplen与filterlen的大小关系。
一种可选的实施方式中,若地图缩放级别不超过设定地图缩放级别阈值,则判断选取的形状点pi的抽稀标记的取值是否表示该抽稀标记为有效;若表示该抽稀标记为有效,则将选取的形状点pi抽稀掉;若表示该抽稀标记为无效,则判断ntemplen是否超过filterlen,若是,则确定保留选取的形状点pi,若否,则确定将选取的形状点pi抽稀掉。
其中,保留的形状点构成抽稀后道路的形状点集合。
在本申请的另一个实施例中,介绍了另一种道路确定方法,结合图3对该道路确定方法进行介绍,如图3所示,其包括以下步骤:
步骤s300、获取道路数据,所述道路数据包括组成道路的形状点集合;
步骤s310、获取待显示的电子地图的地图缩放级别及所述道路的线宽信息;
步骤s320、根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合;
具体地,本实施例中步骤s300-s320与前述实施例中的步骤s100-s120一一对应,此处不再赘述。
步骤s330、根据所述抽稀后道路的形状点集合,确定所述道路的待标注信息在所述待显示的电子地图中的标注位置。
具体地,客户端在完成对道路的形状点集合进行抽稀之后,可以进一步根据抽稀后道路的形状点集合,确定所述道路的待标注信息在待显示的电子地图中的标注位置,进而便于在标注位置处绘制待标注信息。待标注信息可以是道路的标注文字如路名,也可以是导航引导箭头等适于在道路上进行标注的信息。
本实施例通过依据抽稀后道路的形状点集合来确定标注位置,在一定程度上提升了计算标注位置的效率,同时,因为抽稀减少了一些形状点,使得形状点间距得到增加,从而提高了得到标注位置的机率。
本申请接下来的实施例中,以待标注信息为待标注文字为例进行说明。
进一步,对上述步骤s330中,根据所述抽稀后道路的形状点集合,确定所述道路的待标注文字在所述待显示的电子地图中的标注位置,以下本申请将结合图4进行介绍,该实施例可以包括:
步骤s400、根据构成所述抽稀后道路的形状点集合中形状点的位置,得到一段连续的目标形状点,所述目标形状点构成用于标注所述道路的待标注文字的目标路段,所述目标路段的长度不小于所述待标注文字的长度且曲折程度满足设定曲折条件;
其中,待标注文字的长度可以根据文字属性计算得到,一般性的,待标注文字的长度等于单个待标注文字所占区域的宽度乘以待标注文字个数。
其中,目标路段的曲折程度还需要满足设定曲折条件,也即需要保证目标路段尽量平坦,而避免出现曲折程度过大的情况,导致标注的文字不便于用户观看。
需要说明的是,目标路段的曲折程度可以通过目标路段所包含的各形状点中,相邻形状点组成的子路段之间的夹角来确定。
步骤s410、在所述目标路段中,获取可标注所述道路的待标注文字的路段,作为所述道路的待标注文字的标注位置。
在查找到目标路段之后,进一步从中查找可标注所述道路的待标注文字的路段,具体可以是未被其它文字占位,且长度不小于道路的待标注文字的长度的路段。
可以理解的是,最终查找到的路段的个数并不固定,有可能是零个,也有可能是一个或多个。
若查找到的路段的个数为零个,则表示未查找到满足条件的路段,无法对待标注文字进行标注,退出,即不对该待标注文字进行标注。
若查找到的路段的个数为一个或多个,则可以从查找到的路段中,确定一个路段,作为所述道路的待标注文字的标注位置。
本实施例介绍的确定所述道路的待标注文字的标注位置的方法中,首先在形状点集合中查找满足条件的目标路段,进一步从目标路段中获取可标注所述道路的待标注文字的路段,从中确定出所述道路的待标注文字的标注位置。按照本申请方法,保证了最终查找到的标注位置处于较为平坦的路段,保证了用户可以方便的查看标注后的文字。
在本申请的又一个实施例中,对上述步骤s400,根据构成所述抽稀后道路的形状点集合中形状点的位置,得到一段连续的目标形状点,所述目标形状点构成用于标注所述道路的待标注文字的目标路段的过程进行介绍,结合图5所示,该方法包括:
步骤s500、根据所述抽稀后道路的形状点集合中形状点的位置与所述待显示的电子地图覆盖的地理区域的位置关系,将所述道路的形状点划分为若干段;
其中,可以按照一定的划分规则,保证划分后的每一段均可以包含位于所述待显示的电子地图覆盖的地理区域内的形状点。
一种可选的实施方式中,可以遍历道路的形状点集合中的形状点,从中确定出临界形状点,临界形状点位于待显示的电子地图覆盖的地理区域之外,且临界形状点的前一相邻形状点或后一相邻形状点位于待显示的电子地图覆盖的地理区域之内。将临界形状点及临界形状点之间的位于待显示的电子地图覆盖的地理区域之内的形状点划分为一个分段内。
结合图6对道路的形状点划分过程进行说明:
图6中示例的路线包括p0-pn形状点,待显示的电子地图覆盖地理区域为s1。从图6可以看出,p1、p5、p9、p11、p14为临界形状点,因此,将形状点划分为三段,分别为:
[p1…p5]、[p5…p9]、[p11…p14]。
步骤s510、针对划分后的每一段,确定该段所包含的相邻形状点的最大间距;
具体地,划分后的每一段包括若干形状点。确定其中相邻形状点之间的间距,并从各间距中确定最大间距。
步骤s520、比较各段所包含的相邻形状点的最大间距的大小,将最大间距中值最大的段确定为候选段;
具体地,上一步骤中针对每一段均确定了一个最大间距。本步骤中,比较各个最大间距的大小,将最大间距中值最大的段确定为候选段。
具体地,仍以上述图6为例进行说明:
通过图6可以看出,[p1…p5]段中最大间距为[p1-p2]段长l1;[p5…p9]段中最大间距为[p6-p7]段长l2;[p11…p14]段中最大间距为[p12-p13]段长l3。假设l3>l1>l2,则可以确定候选段为[p12-p13]。
本步骤中从划分后的各段中,确定最大间距中值最大的段为候选段,后续可以从该候选段中截取目标路段。由于该候选段包括间距最大的相邻形状点,因此从该候选段中计算得到足够容下待标注文字的位置的概率会比较大,提高了计算得到标注位置的概率,且保证计算得到的标注位置靠近平坦路段。
步骤s530、将所述候选段中间距等于最大间距的形状点组成的路段作为中心路段;
步骤s540、计算所述待标注文字的长度;
步骤s550、判断所述候选段的长度是否大于所述待标注文字的长度;若否,则退出;若是,执行步骤s560;
具体地,若候选段的长度不大于待标注文字的长度,则表示无法查找到标注位置,可以退出结束。
步骤s560、以所述中心路段两端的形状点为起点,以所述候选段的两端的形状点为终点;
步骤s570、针对每个起点,从该起点开始,在所述候选段位于该起点及其相邻终点之间的形状点中,顺序查找符合设定曲折条件的形状点,直至查找该起点对应的停止形状点;
其中,所述停止形状点为不符合设定曲折条件或所述停止形状点为所述终点。
步骤s580、将两个起点对应的两个停止形状点之间的形状点组成的路段作为目标路段。
本实施例公开的查找目标路段的方法中,将道路的形状点依据待显示的电子地图覆盖区域划分成若干段,每段均包含位于待显示的电子地图覆盖区域内的形状点,从划分后的各段中,确定包含间距最大的相邻形状点的候选段,后续从该候选段中截取目标路段。由于该候选段包括间距最大的相邻形状点,因此从该候选段中计算得到足够容下待标注文字的位置的概率会比较大,提高了计算得到标注位置的概率,且保证计算得到的标注位置靠近平坦路段。
在本申请的另一个实施例中,对上述步骤s570,针对每个起点,从该起点开始,在所述候选段位于该起点及其相邻终点之间的形状点中,顺序查找符合设定曲折条件的形状点,直至查找该起点对应的停止形状点的过程进行介绍,结合图7所示,该方法包括:
步骤s600、从该起点p0开始,在所述候选段位于该起点和其相邻的终点之间的形状点中,顺序选取形状点;
具体地,中心路段两端的形状点分别为起点,其中一个起点表示为p0,另一个起点表示为p’0。
步骤s610、判断选取的形状点是否为所述终点,若是,则执行步骤s620,否则,执行步骤s630;
步骤s620、确定选取的形状点为起点p0对应的停止形状点;
步骤s630、当选取到的是形状点p1,则获取∠p1p0p’0的角度值;
步骤s640、若所述角度值大于预设的第一角度阈值,则所述p1为该起点p0对应的停止形状点;
步骤s650、当读取到的是形状点pi,i初始值为2,获取∠pipi-1pi-2和∠pip0p’0的角度值,每选取一个形状点i=i+1;
步骤s660、若∠pipi-1pi-2大于预设的第一角度阈值或者∠pip0p’0的角度值大于预设的第二角度阈值,则所述pi为该起点p0对应的停止形状点。
其中,第一角度阈值和第二角度阈值可以自行设定,二者大小关系不限定。
为了便于理解,现举例说明:
参见图8,图8为本申请实施例公开的一种在所述候选段中查找符合设定曲折条件的形状点的示意图。
图8中,p1-pn为候选路段包括的形状点,[pn4-pn5]为中心路段。
对于从pn4向p1一侧扩展查询的过程,如下:
1、计算由pn3至pn4的向量,与由pn4至pn5的向量的夹角∠pn3pn4pn5,并确定该夹角小于a1。继续向前探测。
2、计算由pn2至pn3的向量,与由pn3至pn4的向量的夹角∠pn2pn3pn4,并确定该夹角∠pn2pn3pn4小于a1;
3、计算由pn2至pn4的向量,与由pn4至pn5的向量的夹角∠pn2pn4pn5,并确定该夹角∠pn2pn4pn5小于a2。继续向前探测。
4、计算由pn1至pn2的向量,与由pn2至pn3的向量的夹角∠pn1pn2pn3,并确定该夹角∠pn1pn2pn3大于a1,因此确定pn1为停止形状点。
对于从pn5向pn一侧扩展查询的过程,如下:
1、计算由pn6至pn5的向量,与由pn5至pn4的向量的夹角∠pn6pn5pn4,并确定该夹角∠pn6pn5pn4小于a1。继续向前探测。
2、计算由pn7至pn6的向量,与由pn6至pn5的向量的夹角∠pn7pn6pn5,并确定该夹角∠pn7pn6pn5小于a1;
3、计算由pn7至pn5的向量,与由pn5至pn4的向量的夹角∠pn7pn5pn4,并确定该夹角∠pn7pn5pn4大于a2,因此确定pn7为停止形状点。
最终,将pn1至pn7之间的形状点组成的路段确定为目标路段,其中目标路段不包括pn1和pn7。
在本申请的又一个实施例中,对上述步骤s410,在所述目标路段中,获取可标注所述道路的待标注文字的路段,作为所述道路的待标注文字的标注位置的过程进行介绍,结合图9所示,该方法包括:
步骤s700、根据所述道路的待标注文字中单个待标注文字的长度,在所述目标路段的相邻形状点之间生成至少一个矩形框并得到其位置;
其中,相邻形状点之间的相邻矩形框的中心点的间距等于单个待标注文字的长度。
步骤s710、根据被占用矩形框的位置及生成的矩形框的位置,确定生成的矩形框是否被占用;
具体地,本申请可以预先存储已被占用矩形框的位置。进而,本步骤中可以根据被占用矩形框的位置及生成的矩形框的位置,确定生成的矩形框是否被占用。
步骤s720、将连续的、确定为未被占用且个数不小于待标注文字个数的矩形框分入一个矩形框组;
步骤s730、若所述矩形框组仅有一个,则所述矩形框组在所述目标路段上占用的路段为可标注所述道路的待标注文字的路段;
步骤s740、若所述矩形框组有两个以上,则获取所述矩形框组在所述目标路段上占用的路段到所述中心路段的距离值,最小距离值对应的路段为可标注所述道路的待标注文字的路段。
可选的,本申请实施例介绍了一种获取所述矩形框组在所述目标路段上占用的路段到所述中心路段的距离值的可选实施方式。为了便于表述,定义矩形框组在所述目标路段上占用的路段为占位段。则距离值获取方式可以包括:
计算占位段的中心点与中心路段的中心点之间的距离,作为二者的距离值。
除此之外,还可以计算占位段的起始点与中心路段的起始点的距离,或计算占位段的终止点与中心路段的终止点的距离,作为二者的距离值。
本实施例中可以选取最小距离值对应的路段为可标注所述道路的待标注文字的路段。由于中心路段为一条直线,因此选取与其距离最近的路段作为标注位置,使得标注文字靠近平坦路段,更加利于用户观看。
结合图10示例的场景,对上述图9对应实施例的过程进行说明。
图10中形状点p1-p6组成目标路段,其中,p3-p4组成中心路段。待标注文字个数为4。
在目标路段上相邻两个形状点之间生成矩形框,相邻矩形框的中心点的间距等于单个待标注文字的长度。
图10中,白色未填充的矩形框代表未被占用的矩形框,斜线填充的矩形框代表已被占用的矩形框。
将连续的、未被占用且个数不小于待标注文字个数的矩形框分入一个矩形框组中。由此可知,可以得到两个矩形框组,即图10中的矩形框组seg1和矩形框组seg2。
由于存在两个矩形框组,则分别计算两个矩形框组在目标路段上占用路段到中心路段的距离值,并选择最小距离值对应的路段,即seg1对应的路段作为可标注道路的待标注文字的路段。
本实施例提供的,在所述目标路段中查找标注位置的方式,按照矩形框方式来查找可用的路段,作为待标注文字的标注位置,其查找结果更加准确。
其中,步骤s700生成矩形框的过程,可以按照如下方式实施:
首先定义参数:
单个待标注文字的宽度的一半fhalffontsize;
目标路段所包含形状点集合[p1p2…pn];
变量ftmpoffset记录待探测的矩形框中心点离前一最近形状点的累计距离,作为相邻两形状点组成的线段是否探测完毕的标记,ftmpoffset初始长度为fhalffontsize;
统计矩形框个数的变量nrectcount初始为0;记录可放置矩形框的总个数nsumcount=目标路段长度/单个文字占位长度。
实施过程如下:
步骤一:从形状点集合[p1p2…pn-1]中顺序取一个形状点,计算该形状点与下一个形状点所成线段的长度为flistroadlen,并计算线段方向单位向量,用于后续计算;
步骤二:判断ftmpoffset是否小于等于flistroadlen,如果是,则执行步骤三,否则执行步骤四;
步骤三:基于步骤一得到的线段起点,取线段终点方向长度为ftmpoffset的位置,作为矩形框中心,生成一个矩形框,生成的矩形框的宽高为文字的宽高,执行步骤五;
步骤四:取ftmpoffset=ftmpoffset–flistroadlen,跳出循环,执行步骤一;
步骤五:保存生成的矩形框的位置;
步骤六:令nrectcount+1,并判断nrectcount是否已经超出可放置的最大个数nsumcount,如果是则表示目标路段都探测过一遍了,结束整个探测,程序结束。否则执行步骤七;
步骤七:判断ftmpoffset+fhalffontsize*2是否大于flistroadlen,显然,若大于,则表示下一个矩形框的中心点不在当前线段上,需要继续探测下一个线段,这时需要考虑当前线段剩余的结余部分并重置ftmpoffset,ftmpoffset=fhalffontsize*2+ftmpoffset–flistroadlen,进而执行步骤一继续探测,若ftmpoffset+fhalffontsize*2不大于flistroadlen,则表示下一个矩形框的中心点还在当前线段上,继续执行步骤八;
步骤八:重置ftmpoffset,ftmpoffset=ftmpoffset+fhalffontsize*2,即累加一个文字长度,执行步骤二。
进一步,上述步骤s720确定矩形框组的过程,可以按照如下方式实施:
首先定义参数:
用于存储生成的每一矩形框是否被占用的状态的标记数组bflagarray,大小等于生成的矩形框个数nvexnum;待标注文字的个数ncalcharsize;已经探测连续未被占用矩形框个数ncount,初始为0。
实施过程如下:
步骤一:从bflagarray中顺序取出矩形框的占用状态,判断取出的占用状态是否表示对应矩形框未被占用,如果是执行步骤二,否则执行步骤三;
步骤二:令ncount+1,当前取出的矩形框为可用矩形框,判断当前取出的矩形框是否为可用连续矩形框的起点,如果是则要记下起点的位置,否则不需要。继续执行步骤一;
步骤三:当前框为已被占用的矩形框,判断前面记录的连续未被占用矩形框个数是否够用,即判断是否满足ncount>=ncalcharsize,如果否,标记未找到合适位置,重新开始探测,执行步骤一,如果是,执行步骤四;
步骤四:记录当前框之前最近一个未被占用的矩形框的位置,作为终止位置,由起点位置对应的矩形框至终止位置对应的矩形框组成一个连续的、确定为未被占用且个数不小于待标注文字个数的矩形框组。
最后当循环遍历bflagarray中每一个矩形框的占用状态之后,得到若干个矩形框组。
最后,为了证明本申请实施例提供的道路确定方法的有效性,现通过图11a和11b进行说明:
现需要对一条从北京至天津的规划路线进行道路文字标注。按照现有技术标注后的效果如图11a所示,按照本申请方法标注后的效果如图11b所示。
本申请按照待显示的电子地图的地图缩放级别及道路的线宽信息,对获取的道路的形状点集合进行抽稀,根据抽稀后道路的形状点集合来确定标注文字的标注位置。因为抽稀减少了一些形状点,使得形状点间距得到增加,从而提高了得到标注位置的机率。
进一步,本申请对道路的形状点进行分段划分,确定包含间距最大的相邻形状点的候选段,因此从该候选段中计算得到足够容下待标注文字的位置的概率会比较大,进一步提高了计算得到标注位置的概率,且保证计算得到的标注位置靠近平坦路段。
更进一步,本申请使用矩形框方式来查找未被其它文字占用的位置,防止查找到的标注位置已经标注有其它文字,产生文字压盖问题。
对比图11a和图11b可以看出,按照现有技术无法计算得到文字标注位置,导致无法显示道路文字标注,而按照本申请方案能够找到标注位置,且标注位置位于平坦路段上,且不与其它文字压盖。
下面对本申请实施例提供的道路确定装置进行描述,下文描述的道路确定装置与上文描述的道路确定方法可相互对应参照。
参见图12,图12为本申请实施例公开的一种道路确定装置结构示意图。
如图12所示,该装置包括:
道路数据获取单元11,用于获取道路数据,所述道路数据包括组成道路的形状点集合;
信息获取单元12,用于获取待显示的电子地图的地图缩放级别及所述道路的线宽信息;
抽稀单元13,用于根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合。
本申请实施例提供的道路确定装置,按照待显示的电子地图的地图缩放级别及道路的线宽信息,对获取的道路的形状点集合进行抽稀,在一定程度上提升了计算标注位置的效率,因为抽稀减少了一些形状点,使得形状点间距得到增加,从而提高了得到标注位置的机率。
可选的,所述抽稀单元根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合中的形状点进行抽稀,得到抽稀后道路的形状点集合的过程,具体可以包括:
根据所述地图缩放级别以及所述道路的线宽信息,获得所述道路的抽稀跳点阈值;
依次从所述道路的形状点集合中选取一形状点,计算该选取的形状点与下一相邻形状点的距离;
将所述地图缩放级别与设定的地图缩放级别阈值进行比较,若所述地图缩放级别大于设定地图缩放级别阈值,则判断所述距离是否超过所述抽稀跳点阈值,若是,则保留所述选取的形状点,若否,则将所述选取的形状点抽稀掉;
保留的形状点构成抽稀后道路的形状点集合。
可选的,所述形状点集合中每一形状点设置有抽稀标记,所述抽稀单元根据所述地图缩放级别以及所述道路的线宽信息,对所述道路的形状点集合进行抽稀,得到抽稀后道路的形状点集合的过程,还可以包括:
若所述地图缩放级别不超过所述设定地图缩放级别阈值,则判断所述选取的形状点的抽稀标记的取值是否表示该抽稀标记为有效;
若表示该抽稀标记为有效,则将所述选取的形状点抽稀掉;
若表示该抽稀标记为无效,则判断所述距离是否超过所述抽稀跳点阈值,若是,则确定保留所述选取的形状点,若否,则确定将所述选取的形状点抽稀掉;
保留的形状点构成抽稀后道路的形状点集合。
可选的,所述抽稀单元根据所述地图缩放级别以及道路的线宽信息,获得所述道路的抽稀跳点阈值的过程,具体可以包括:
获取所述地图缩放级别对应的抽稀跳点阈值计算公式;
其中,抽稀跳点阈值计算公式规定了在对应地图缩放级别下,抽稀跳点阈值与道路的线宽的数值关系。
根据获取的抽稀跳点阈值计算公式以及道路的线宽,计算抽稀跳点阈值。
可选的,本申请的道路确定装置还可以包括标注位置确定单元,用于根据所述抽稀后道路的形状点集合,确定所述道路的待标注信息在所述待显示的电子地图中的标注位置。
其中,所述待标注信息可以是待标注文字或待标注导航引导箭头等。以下,以待标注信息为待标注文字为例进行说明。
可选的,所述标注位置确定单元根据所述抽稀后道路的形状点集合,确定所述道路的待标注信息在所述待显示的电子地图中的标注位置的过程,具体可以包括:
根据构成所述抽稀后道路的形状点集合中形状点的位置,得到一段连续的目标形状点,所述目标形状点构成用于标注所述道路的待标注文字的目标路段,所述目标路段的长度不小于所述待标注文字的长度且曲折程度满足设定曲折条件;
在所述目标路段中,获取可标注所述道路的待标注文字的路段,作为所述道路的待标注文字的标注位置。
可选的,所述标注位置确定单元根据构成所述抽稀后道路的形状点集合中形状点的位置,得到一段连续的目标形状点,所述目标形状点构成用于标注所述道路的待标注文字的目标路段的过程,具体可以包括:
根据所述抽稀后道路的形状点集合中形状点的位置与所述待显示的电子地图覆盖的地理区域的位置关系,将所述道路的形状点划分为若干段,每一段均包含位于所述待显示的电子地图覆盖的地理区域内的形状点;
针对划分后的每一段,确定该段所包含的相邻形状点的最大间距;
比较各段所包含的相邻形状点的最大间距的大小,将最大间距中值最大的段确定为候选段;
将所述候选段中间距等于最大间距的形状点组成的路段作为中心路段;
计算所述待标注文字的长度;
判断所述候选段的长度是否大于所述待标注文字的长度;
若是,则以所述中心路段两端的形状点为起点,以所述候选段的两端的形状点为终点;
针对每个起点,从该起点开始,在所述候选段位于该起点及其相邻终点之间的形状点中,顺序查找符合设定曲折条件的形状点,直至查找该起点对应的停止形状点,所述停止形状点为不符合设定曲折条件或所述停止形状点为所述终点;
将两个起点对应的两个停止形状点之间的形状点组成的路段作为目标路段。
可选的,所述标注位置确定单元从该起点开始,在所述候选段位于该起点及其相邻终点之间的形状点中,顺序查找符合设定曲折条件的形状点,直至查找该起点对应的停止形状点的过程,具体可以包括:
从该起点p0开始,在所述候选段位于该起点和其相邻的终点之间的形状点中,顺序选取形状点,若选取到的形状点是所述终点,则该选取的形状点为停止形状点,否则,执行以下步骤:
当选取到的是形状点p1,则获取∠p1p0p’0的角度值,若所述角度值大于预设的第一角度阈值,则所述p1为该起点p0对应的停止形状点;
当读取到的是形状点pi,i初始值为2,获取∠pipi-1pi-2和∠pip0p’0的角度值,每选取一个形状点i=i+1,p’0为区别于p0的另一个起点;
若∠pipi-1pi-2大于预设的第一角度阈值或者∠pip0p’0的角度值大于预设的第二角度阈值,则所述pi为该起点p0对应的停止形状点。
可选的,所述标注位置确定单元在所述目标路段中,获取可标注所述道路的待标注文字的路段,作为所述道路的待标注文字的标注位置地过程,具体可以包括:
根据所述道路的待标注文字中单个待标注文字的长度,在所述目标路段的相邻形状点之间生成至少一个矩形框并得到其位置,相邻形状点之间的相邻矩形框的中心点的间距等于单个待标注文字的长度;
根据被占用矩形框的位置及生成的矩形框的位置,确定生成的矩形框是否被占用;
将连续的、确定为未被占用且个数不小于待标注文字个数的矩形框分入一个矩形框组;
若所述矩形框组仅有一个,则所述矩形框组在所述目标路段上占用的路段为可标注所述道路的待标注文字的路段;
若所述矩形框组有两个以上,则获取所述矩形框组在所述目标路段上占用的路段到所述中心路段的距离值,最小距离值对应的路段为可标注所述道路的待标注文字的路段。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。