一种复杂线状要素的注记方法

文档序号:2584812阅读:245来源:国知局
专利名称:一种复杂线状要素的注记方法
技术领域
本发明涉及地理信息系统技术领域,特别是指一种复杂线状要素的注记方法。
背景技术
线状要素,例如境界线、海岸线、河流、铁路、道路、等值线、等密度线等,是地理信息系统(Geographic Information System,GIS)中的一类重要地物。现有的线状要素的注记方式根据地物类型和地图用途的不同有较大的差别,具体可分为点定位注记配置方式和线定位注记配置方式(曲线注记方式)。其中,曲线注记方式可分为中心线注记配置方式和平行线注记配置方式。例如,道路和街道网一般采用中心线注记配置方式,在其中心线上选取合适的点位进行注记配置;线状水系的注记一般采用平行线注记配置方式,先求出曲线的平行线,然后在平行线上选取适当的位置进行注记配置;等值线和等密度线则采用点定位注记配置方式,重点在于标注出等值线/等密度线间的拓扑关系,并在等值线/等密度线上选取合适的点位进行注记配置。相对复杂的平行线注记配置方式适用于诸如线状水系等复杂线状要素的注记,但是,在采用平行线注记配置方式注记复杂线状要素时会出现平行线相对于线状要素突出或回缩的问题,从而造成线状要素曲线注记的自身冲突。

发明内容
有鉴于此,本发明的主要目的在于提供一种复杂线状要素的注记方法,以解决平行线注记配置方式注记复杂线状要素时出现的平行线相对于线状要素突出或回缩的问题。本发明提供了一种复杂线状要素的注记方法,包括以下步骤A、定义线状要素的平行线,包括以下子步骤Al、构建用来定义平行线的参考线;A2、采用角平分线法求出所述参考线的平行线,其中,对于所述参考线的外侧平行线作如下处理对于所述参考线上角度小于90°的夹角,利用该夹角平分线上在所述参考线外侧的与该夹角的角点距离为一定值的新外侧点代替外侧平行线上原本与该角点对应的外侧点;并在所述新外侧点左右各加入一个与所述角点距离同样为所述定值的辅助点,连接新外侧点与左右辅助点构成一线段;最后将该线段与所述外侧平行线连接;B、分段处理所述线状要素的平行线;C、在每段线状要素的平行线上进行注记定位。由上可以看出,通过上述方法可以解决在采用平行线注记配置方式注记复杂线状要素时出现的平行线相对于线状要素突出或回缩的问题,从而避免线状要素曲线注记的自身冲突。在上述方法中,步骤A中所述参考线的构建包括扫描线状要素的每一个点,依次以每个点作为角点,求其两相邻点与其共同形成的夹角α ;如果α <90°,则计算该角点与其两相邻点形成的两条边的长度如果这两条边的长度都小于d/tan(a ,则删除该角点;如果在这两条边中只有一条边的长度小于d/ tan( α/2),则用另一条边上的距所述角点的距离与较短边的边长相同的一点代替该角点, 其中d为参考线与其平行线的间距。由上可以看出,通过上述方法构建的参考线,要比中心线光滑,采用所述参考线适于构建相对于线状要素不会突出或回缩的平行线。在上述方法中,在所述子步骤A2之后还包括检查所述平行线中是否存在由相交线段形成的环路若存在,则删除环路中的各个顶点,将环路起始点作为新顶点加入平行线坐标串中,并修改平行线的顶点数;输出平行线新的顶点和线段。由上可以看出,采用上述方法可以解决影响注记的平行线自相交的问题。在上述方法中,在所述子步骤A2之后还包括从所述平行线的第一条线段开始,依次判断每条线段与其后线段的距离是否大于 0且小于一设定值;如果是线段间彼此端点的距离大于0且小于一设定值,则连接所述端点,如果是线段间端点与线段的距离大于0且小于一设定值,则连接该端点和这个端点在其相近线段上的垂足;最后删除端点间和/或端点与端点在其相近线段上的垂足间的其他点/线段。由上可以看出,采用上述方法可以解决影响注记的平行线自相近的问题。在上述方法中,在所述步骤A与B之间包括将所述线状要素的平行线划分为多条基础线段,即所述线状要素的平行线上每两点间的线段;判断所述线状要素中是否存在长度大于Lg的基础线段如果存在,则可以使用平均分割法对这部分基础线段进行分段处理;其中,Lg为由两条相邻基础线段合并成的合成基础线段的长度阀值。在上述方法中,所述步骤B包括以下子步骤Bi、计算所述平行线中相邻基础线段的相对高度hk,k+1,并记录下其中最小的相对闻度hmin ;B2、判断最小的相对高度hmin是否大于相对高度的阀值H。。mp 如果大于H。。mp,则进入下一步;如果小于H。。mp,则合并相对高度等hmin的相邻基础线段以形成所述平行线的新曲线段,并求出所述新曲线段的长度Lk,k+1 = Lk+Lk+1 ;其中,如果Lk,k+1 < Ly则使用所述新曲线段替换原来的两条相邻基础线段后,返回步骤Bl ;否则,从剩下的基础线段中找出最小的相对高度来替换hmin,并重新判断最小的相对高度hmin是否大于相对高度的阀值H。。mp ;B3、输出所述平行线的曲线段;当最小的相对高度hmin大于相对高度阀值H。。mp时, 所述曲线段就是所述平行线的基础线段;当最小的相对高度hmin大于相对高度阀值H。。mp时, 所述曲线段是由两条相邻基础线段合并形成的、且合并长度小于Lg的新曲线段。由上可以看出,采用上述方法可以提取出相对光滑的曲线,相对于传统的方位角法和单调分段法,上述方法对曲线弯曲度的适应程度较高,而且可以限制曲线段的合并长度,不对能够进行注记的曲线段进行没有必要的分段,从而提高了曲线分段的效率。
在上述方法中,所述步骤Bl包括假设所述平行线的相邻基础线段的高度为h,即当相邻的两条基础线段合并为一条曲线时,该曲线上某所有点与该曲线两端点所形成的直线距离中的最大值;设相邻两条基础线段的长度分别为Ik和Ik+1,由该两条基础线段合并成的合成曲线两端点之间的距离为d,则相邻基础线段的相对高度hk,k+1 = hd2/(lk2+lk+12)。在上述方法,所述步骤C包括以下子步骤Cl、根据注记字符的长度设定线状要素注记的长度;C2、扫描线状要素平行线的所有曲线段,对满足注记长度的曲线段按照字符个数进行等分,其中,等分点就是注记定位点;C3、按照线注记的规则将每个注记字符放到注记定位点上。在上述方法中,在所述步骤A之前还包括压缩线状要素。由上可以看出,对复杂线状要素的数据进行压缩可以减少冗余数据对注记动态配置速度的影响。


图1为本发明提供的一种复杂线状要素的注记方法流程图;图2为角平分线法原理示意图;图3为改进的角平分线法原理示意图;图4为平行线自相交问题处理前后对照图;图5为平行线自相近问题处理前后对照图;图6为利用角平分线法求取线状要素平行线的效果图;图7为利用改进的角平分线法求取线状要素平行线的效果图。
具体实施例方式下面结合附图,以曲线线状要素为例详细介绍本发明提供的一种复杂线状要素的注记方法。如图1所示,所述复杂线状要素的注记方法包括以下步骤步骤100 压缩线状要素。对于一个GIS系统来说,由于受软硬件条件的限制,数据量的大小及质量将对整个系统的运行速度和效率产生直接的影响。如果GIS系统采用注记动态配置功能模块对线状要素进行注记,则需要不断地动态响应GIS用户的操作,此举对系统速度要求较高。因此,精简的数据对于GIS系统中注记操作来说显得尤为重要。对于线状要素的压缩,一般主要集中在对于线状要素的空间数据的压缩上。而对于空间数据的压缩主要包括无损压缩和有损压缩两种方式。其中,无损压缩可以在保证数据完整性的情况下一定程度上减少数据存储量,但压缩比较低,不能满足注记配置对于数据压缩的需要。本实施例在不改变原始数据的基础上,采用了压缩比更大的有损压缩。具体为Douglas数据压缩算法,包括基本步骤1、设定曲线数据压缩的阀值。取一个基本上不会影响曲线视觉效果的值作为所述阀值。一般情况下,这个阀值不会太大。2、连接曲线的首尾两点,并找出与两点连线有最大偏移距离的点。
3、判断该点的偏移距离是否小于上述阀值若是,则删掉所述首尾两点间所有的点;否则,以该点为分段点,将曲线分成一分为二,并返回执行第2步。由于所述Douglas数据压缩算法为公知技术,在此不再赘述。在注记线状要素前,执行线状要素数据的压缩不仅可以删除冗余数据,减少数据存储量,更重要的是通过压缩线状要素数据可以简化线状要素的轮廓线,这对于后期线状要素的注记配置响应速度的提升有很大的帮助。步骤200 定义经过数据压缩的线状要素的平行线。由于复杂线状要素的注记是在平行线上选取适当的位置进行配置的。因此,需要克服一切可能存在的误差,准确地定义出线状要素的平行线。以往一般采用如图2示出的角平分线法来求取线状要素的平行线。这种算法精度高,运算速度快。但通过这种方法生成的平行线具有如下缺点在中心线夹角α较小时,所求得的平行线夹角顶点(Α、Β)会离中心线非常远(远大于线状要素与其平行线的间距d)。 如果平行线在中心线的外侧,则平行线夹角顶点A会因远离中心线而显得过分突出;如果平行线在中心线的内侧,则平行线夹角顶点B会因远离中心线而显得过分收缩。同时,如果中心线夹角α两边较短的话,平行线就会因平行线夹角顶点的过分外凸或收缩而改变其原有的形状。在本实施例中,通过构建用来定义平行线的参考线,来对角平分线法进行改进,从而以解决中心线内侧平行线因其平行线夹角顶点向内收缩而改变形状的问题。如图3所示,具体为扫描曲线上(相对于其两侧的平行线,也可将曲线称作中心线)的每一个点,依次以每个点作为角点(是二维图像亮度变化剧烈的点或曲线上曲率极大值的点),求其两相邻点与其共同形成的夹角α 如果α <90°,则计算该角点与两相邻点形成的两条边的长度。如果这两条边的长度都小于d/tan(a/2),则删除该角点。如果在这两条边中只有一条边的长度小于d/tan (α/2),则用另一条边上的一点代替该角点,该点距所述角点的距离与较短边(长度小于d/tan(a//2))的边长相同。其中,d为参考线与其平行线的间距。图 3示出的角点A、B分别与其相邻点1、2和3、4构成的夹角α和β均小于90°,且角点Α、 B与其各自的相邻点1、2和3、4之间形成的边长均小于d/tan ( α/2),那么删除角点Α、Β并将点1、2和3、4分别连接后,形成如图3示出的参考线。最后再利用角平分线法求出所述参考线的内侧平行线便可解决平行线夹角顶点向内收缩而改变形状的问题。对于平行线在参考线的外侧时因平行线夹角顶点会因远离参考线而显得过分突出的问题,可通过以下方法解决,即对于参考线上角度小于90°的夹角,利用该夹角平分线上在参考线外侧的与该夹角的角点距离为d(可根据注记字符大小、间距来设置的定值) 的新外侧点代替外侧平行线上原本与该角点对应的外侧点。然后在所述新外侧点左右各加入一个与所述角点距离同样为d的辅助点,连接新外侧点与左右辅助点构成一线段。最后, 将该线段与外侧平行线连接,构成新的外侧平行线。从而解决了外侧平行线因其外侧点突出而改变形状的问题。在完成所述平行线的定义后,如图4、5所示,平行线可能存在自相交和/或自相近的的情况,由此导致注记重叠、显示混乱等问题。在本实施例中,假设平行线N个坐标点(由该N个坐标点构成一坐标串),则其包含的线段数量为N-1。其中,解决平行线自相交问题的具体方法如下如图4所示,在平行线的N-I条线段中依次检查所述平行线的是否存在相交线段,即是否存在由相交线段形成的环路若存在,则删除环路中的各个顶点,将环路起始点a作为新顶点加入平行线坐标串中,并修改平行线的顶点数。最后输出平行线新的顶点和线段。解决平行线自相近问题的具体方法如下如图5所示,从平行线的第一条线段开始,依次判断每条线段与其后线段的关系是否相近(以某一设定值为判断依据,不大于该设定值且大于0则为相近);如果是线段间的端点相近,则连接端点,如果是端点与线段相近,则连接该端点和这个端点在其相近线段上的垂足。最后删除端点间和/或端点与端点在其相近线段上的垂足间的其他点/线段。由此,得到了消除自相近的平行线。下面参照图6、图7,对比分别利用角平分线法和本发明改进的角平分线法定义出的线状要素平行线的效果,其中,Ll为经过数据压缩的中心线,L2为通过角平分线法求出的Ll的平行线,L3为未经数据压缩的中心线,“*”是平行线的分段点。如图6所示,中心线Ll上的点a对应的外侧平行线上的点远离了中心线,且突出到了点b的位置。而中心线Ll上的点a对应的内侧平行线上的点回缩到了点c的位置,使内侧平行线的形状发生了改变。而图6中点d、e示出的位置则发生了平行线自相交的情况, 如果该平行线与中心线Ll的间距再小一点的话,那么点e示出的位置则会发生平行线自相近的情况。因为复杂线状要素的注记是在平行线上选取适当的位置进行配置的,即注记字符的中心就在平行线上,在图6示出的杂乱的平行线上显然是很难进行注记。而图7示出的由本发明改进的角平分线法定义的规整的平行线是很容易进行注记的。步骤300 分段处理所述线状要素的平行线。对于长度较长的线状要素,在注记之前需要对其平行线进行分段处理,然后再对每一段或其中的几段进行注记,即在每一段或其中的几段线状要素的平行线上进行注记。 以曲线为例,现有的曲线分段方法主要有两种一种是方位角法,具体为设定一个方位角变化阀值α ;计算曲线上每一条由曲线坐标点形成的线段的方位角;接着计算位于每个坐标点前后的线段的方位角之差,并将方位角之差的绝对值大于α的所有坐标点记录下作为分段点;最后根据所述分段点对曲线进行分段。这种方法在一定程度上可以将曲线分成较为光滑的曲线段,但是对于一些复杂的曲线,特别是一些方位角变化比较大的曲线,容易将其划分得太细,以至于无法进行注记。另一种是单调分段法,具体为提取出曲线中所有单调性发生变化的坐标点作为初始分段点;根据初始分段点对曲线进行分段,并提取出曲线单调段(由相邻的且彼此间能够同时投影在同一坐标轴上的曲线段合并而成)作为曲线的最终分段。这种方法可以保证曲线注记的通视性,但是不能将曲线划分出相对平滑的曲线段。为了解决上述现有曲线分段方法存在的问题,本实施例基于逆向Douglas算法, 以曲线上所有的线段为基础,逐步合并相对光滑的曲线段,并以最终输出的曲线段作为注记曲线段。在利用逆向Douglas算法分段处理曲线之前,将所述曲线划分为多条基础线段 (曲线上每两点间的线段),设基础线段的长度为lk。根据注记字符串的长度和字符的大小确定由两条相邻的基础线段合并成的合成基础线段(合成曲线)的相对高度的阀值为 H。。mp。设合成曲线的长度阀值为Ly判断所述曲线中是否存在长度大于Lg的基础线段如果存在,则可以使用平均分割法对这部分基础线段进行分段处理;否则采用逆向Douglas算法分段处理所述曲线。所述逆向Douglas算法包括以下步骤步骤301 计算曲线中相邻基础线段的相对高度hk, k+1,并记录下其中最小的相对高度hmin。其中,假设相邻基础线段的高度为h,即当相邻的两条基础线段合并为一条曲线时,该曲线上某所有点与该曲线两端点所形成的直线距离中的最大值;设相邻两条基础线段的长度分别为Ik和lk+1,由该两条基础线段合并成的合成曲线两端点之间的距离为d,则相邻基础线段的相对高度hk,k+1 = hd2/(lk2+lk+12)。步骤302 判断最小的相对高度hmin是否大于相对高度的阀值H。。mp 如果大于H。。mp, 则进入下一步;如果小于H。。mp,则合并相对高度等于hmin的相邻基础线段以形成新曲线段, 并求出新曲线段的长度Lk, k+1 = Lk+Lk+1。其中,如果Lk,k+1 < Ly则使用新曲线段替换原来的两条相邻基础线段后,返回步骤301 ;否则,从剩下的基础线段中找出最小相对高度来替换hmin,并重新判断最小的相对高度hmin是否大于相对高度的阀值H。。mp。步骤303 输出曲线段。当最小的相对高度hmin大于相对高度阀值H。。mp时,所述曲线段就是所述曲线的基础线段。当最小的相对高度hmin大于相对高度阀值H。。mp时,所述曲线段是由两条相邻基础线段合并形成的、且合并长度小于Lg的新曲线段。步骤400 对每段线状要素进行注记定位,即确定每段线状要素数据上注记点的坐标以及该坐标上注记字符的字向。具体为首先根据字符的长度设定线状要素注记的长度;扫描线状要素的所有曲线段,对满足注记长度的曲线段按照字符个数(注记点个数)进行等分,例如,注记有m个注记点,对满足注记长度的曲线段按照其长度进行m+1等分,其中,等分点就是注记定位点;然后按照线注记的规则将每个注记字符放到注记定位点上;线注记应遵循以下规则1、沿线状要素的平行线,一般采用离散的注记方式,屈曲字列,字向(字头的朝向)与曲线的切线方向垂直;2、注记的字间距为一定范围的等间隔;3、注记的排列方向沿着被注记线状要素的方向,依据其倾角而定,采用从上往下, 从左往右注记的原则;4、注记不允许放在线状要素的两侧;5、注记与线状要素的距离要适当;6、若线状要素较长,应分段重复注记;7、避免注记靠近线要素的端点,注记首末字到线状要素两端点的距离应相等且保持适当距离;8、避免压盖地图要素,不压盖其他注记。最后校正已放到注记定位点上的注记字符的字向。例如,可通过缩短注记字符间距来校正注记首尾字符距离曲线段两端点较近的问题。如果注记首尾字符距离曲线段两端点过近,则可在调整注记字符间距的同时沿曲线段形成足够长的折线,注记字符字向与所述折线两端点连接线平行或垂直。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种复杂线状要素的注记方法,其特征在于,包括以下步骤A、定义线状要素的平行线,包括以下子步骤 Al、构建用来定义平行线的参考线;A2、采用角平分线法求出所述参考线的平行线,其中,对于所述参考线的外侧平行线作如下处理对于所述参考线上角度小于90°的夹角,利用该夹角平分线上在所述参考线外侧的与该夹角的角点距离为一定值的新外侧点代替外侧平行线上原本与该角点对应的外侧点;并在所述新外侧点左右各加入一个与所述角点距离同样为所述定值的辅助点,连接新外侧点与左右辅助点构成一线段;最后将该线段与所述外侧平行线连接;B、分段处理所述线状要素的平行线;C、在每段线状要素的平行线上进行注记定位。
2.根据权利要求1所述的方法,其特征在于,步骤A中所述参考线的构建包括扫描线状要素的每一个点,依次以每个点作为角点,求其两相邻点与其共同形成的夹角ct ;如果α <90°,则计算该角点与其两相邻点形成的两条边的长度如果这两条边的长度都小于d/tan(a/2),则删除该角点;如果在这两条边中只有一条边的长度小于d/ tan( α/2),则用另一条边上的距所述角点的距离与较短边的边长相同的一点代替该角点, 其中d为参考线与其平行线的间距。
3.根据权利要求2所述的方法,其特征在于,在所述子步骤A2之后还包括检查所述平行线中是否存在由相交线段形成的环路若存在,则删除环路中的各个顶点,将环路起始点作为新顶点加入平行线坐标串中,并修改平行线的顶点数;输出平行线新的顶点和线段。
4.根据权利要求2所述的方法,其特征在于,在所述子步骤A2之后还包括从所述平行线的第一条线段开始,依次判断每条线段与其后线段的距离是否大于0且小于一设定值;如果是线段间彼此端点的距离大于0且小于一设定值,则连接所述端点,如果是线段间端点与线段的距离大于0且小于一设定值,则连接该端点和这个端点在其相近线段上的垂足;最后删除端点间和/或端点与端点在其相近线段上的垂足间的其他点/线段。
5.根据权利要求1所述的方法,其特征在于,在所述步骤A与B之间包括将所述线状要素的平行线划分为多条基础线段,即所述线状要素的平行线上每两点间的线段;判断所述线状要素中是否存在长度大于Lg的基础线段如果存在,则可以使用平均分割法对这部分基础线段进行分段处理;其中,Lg为由两条相邻基础线段合并成的合成基础线段的长度阀值。
6.根据权利要求5所述的方法,其特征在于,所述步骤B包括以下子步骤Bi、计算所述平行线中相邻基础线段的相对高度hk, k+1,并记录下其中最小的相对高度h . ·11Iiiin,B2、判断最小的相对高度hmin是否大于相对高度的阀值H。。mp 如果大于H。。mp,则进入下一步;如果小于H。。mp,则合并相对高度等于hmin的相邻基础线段以形成所述平行线的新曲线段,并求出所述新曲线段的长度Lk,k+1 = Lk+Lk+1 ;其中,如果Lk,k+1 < Ly则使用所述新曲线段替换原来的两条相邻基础线段后,返回步骤Bl ;否则,从剩下的基础线段中找出最小的相对高度来替换hmin,并重新判断最小的相对高度hmin是否大于相对高度的阀值H。。mp ;B3、输出所述平行线的曲线段;当最小的相对高度hmin大于相对高度阀值H。。mp时,所述曲线段就是所述平行线的基础线段;当最小的相对高度hmin大于相对高度阀值札_时,所述曲线段是由两条相邻基础线段合并形成的、且合并长度小于Lg的新曲线段。
7.根据权利要求6所述的方法,其特征在于,所述步骤Bl包括假设所述平行线的相邻基础线段的高度为h,即当相邻的两条基础线段合并为一条曲线时,该曲线上某所有点与该曲线两端点所形成的直线距离中的最大值;设相邻两条基础线段的长度分别为Ik和lk+1, 由该两条基础线段合并成的合成曲线两端点之间的距离为d,则相邻基础线段的相对高度hk, k+i = hd2/(lk2+lk+12) ο
8.根据权利要求1所述的方法,其特征在于,所述步骤C包括以下子步骤 Cl、根据注记字符的长度设定线状要素注记的长度;C2、扫描线状要素平行线的所有曲线段,对满足注记长度的曲线段按照字符个数进行等分,其中,等分点就是注记定位点;C3、按照线注记的规则将每个注记字符放到注记定位点上。
9.根据权利要求1所述的方法,其特征在于,在所述步骤A之前还包括压缩线状要
全文摘要
本发明提供了一种复杂线状要素的注记方法,包括步骤A、定义线状要素的平行线,包括构建用来定义平行线的参考线;采用角平分线法求出所述参考线的平行线,其中,对于所述参考线的外侧平行线作如下处理对于所述参考线上角度小于90°的夹角,利用该夹角平分线上在所述参考线外侧的与该夹角的角点距离为一定值的新外侧点代替外侧平行线上原本与该角点对应的外侧点;并在所述新外侧点左右各加入一个与所述角点距离同样为所述定值的辅助点,连接新外侧点与左右辅助点构成一线段;最后将该线段与所述外侧平行线连接;B、分段处理所述线状要素的平行线;C、在每段线状要素的平行线上进行注记定位。以解决平行线相对于线状要素突出或回缩的问题。
文档编号G09B29/00GK102237010SQ20111021443
公开日2011年11月9日 申请日期2011年7月28日 优先权日2011年7月28日
发明者丁圣陶, 刘晓丽, 印洁, 叶关根, 孙伟, 张成成, 方驰宇, 李成名, 梁西腾, 殷勇, 沈涛, 焦孟凯, 赵占杰, 赵园春, 路文娟 申请人:中国测绘科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1