• Cehui8.com 测绘地理信息领域专业门户
  • 首页 > 测绘论文 > 其他

    基于AO的分幅等高线智能化接边处理方法的研究

    2013-07-07 00:00:12 来源: 测绘论坛 作者:
    聊聊

      [摘要]连续完整的等高线在,-. 的制作以及图属互查中起着重要的作用,然而在实际中它往往被人为的分割。因此,分幅数字化后的等高线拼接问题,就成了地理信息系统中基础数据处理方面的一个必须要解决的问题。本文在吸取了!/0123 处理该问题的优点的基础上,提出了分幅等高线智能化接边的约束条件和算法,并利用!/0"456078(简称!")实现该处理方法。
    [关键词]地理信息系统;!/0"456078;等高线;智能化

    1 引言
    由于测图区域、比例尺大小、成图纸张大小、图纸的形变、绘图误差、数字化误差和分幅数字化等因素的影响,在相邻的两幅等高线图中,位于接边处附近的等高线不仅可能不能够结合在一起,而且原本是一条连续的等高线也被人为地分割成多段等高线。若不对这种现象进行处理,不仅在利用等高线建立,-.、=2E 时会发生错误,而且在对等高线对象进行查询、分析之时亦会得出一些错误的结论。因此,如何高效地将多幅等高线图拼接成为一幅图,如何智能化地将接边处被打断的等高线对象重新合并成为一个完整的对象,是等高线图拼接时所必须处理的一个问题,也是常常困扰我们的问题。
    2 多幅等高线图拼接存在的问题
    由于等高线地图在绘制时是分幅绘制,在数字化时是分幅数字化的,所以,在这些过程中存在的误差就造成了在多幅等高线图拼接成一幅完整的等高线图时,等高线图在接边处存在着较大的误差。这些误差在接边处所表现出的现象有以下几种:
    (1)两线分离现象:理论上在接边处附近的某一等高线,应与相邻图幅上对应等高线是咬合在一起的,即这两条对应的等高线至少有一个节点的坐标是相同的。可是在实际中由于误差的影响,对应等高线在接边处常常发生了偏移(如图# 所示)或断裂(如图$ 所示)现象。
    (2)貌合神离现象:根据等高线是闭合曲线的原理,当将多幅等高线合并成一幅等高线图时,等高线在接边处应与其对应等高线合并成一个对象,从而构成一条闭合曲线。但是,由于分幅数字化的原因,对应等高线在接边处表面上表现为一条完全闭合的等高线,但实质却是多条等高线(如图’ 所示),这种现象就是貌合神离现象。这种现象往往具有欺骗性,因为在打印出图和视觉上是不会发现问题的,但是要用于构建!"# 或$%&,或者用于拓扑分析时,就会出现意想不到的问题。
    3 地图拼接的研究现状
    地图接边处理,国内外学者和众多的商家都开展了广泛和深入的研究,提出的理论和解决的方法也有许多不同,而且也有比较成熟的商业软件。比如,"*+% 公司的,-./%* 01-23454617,就可以用来处理接边的问题。但是,这些软件在处理这种多幅图合并成一幅图的接边问题上,有明显的不足之处。这些软件能够较好地处理等高线接边时存在的分离现象,但是在处理貌合神离这种现象上,却存在不足。比如,在,-.#58 中,要处理接边处的对应等高线被分割成多个对象的现象,就只有将这些将要合并的对象一一选取,分别合并(#9-:9)。这种人工选取方法不仅工作效率低下,而且工作量大,因而是一种不可取的方法。
    4 多幅等高线图智能化接边中的知识库和推理机
    笔者采用智能化地理信息系统处理中的专家系统来处理多幅等高线图接边作业。知识的获取是建造专家系统的关键一步,知识库是建立专家系统的核心,而推理机是与知识库对应的专家系统中另一个重要部件。因此,针对多幅等高线图拼接成一幅完整的等高线图这个具体问题,知识库就是等高线的特性以及等高线图在接边时所表现出来的相关性质。基于知识库的特征,笔者在知识的选取和推理上确定了如下几点约束条件:
    (1)所有要处理的等高线必须与接边处某一个给定阈值的缓冲区(<=>>9-)相交。因为,如果等高线不在这个区域内,说明它不可能在对应图幅中有相对应的等高线,那么它也就不是接边时所要处理的对象。所以可以选取该区域中的等高线集作为处理对象,从而加快处理速度。
    (2)所有要处理的等高线,都分别位于等高线图接边线的两侧。因为,等高线是被等高线图的内图廓线(接边线)打断的,所以,所要合并的线也将位于接边线的两侧。笔者在处理位于每条接边线两侧的所有可能要合并的等高线对象时,将按照这些等高线与接边线的位置的不同而分成两个集合。这样,我们只要考虑一个集合中的所有元素,就能全部处理这条接边线所涉及到的所有等高线。这也就减少了不必要的重复的循环,加快了处理速度。
    (3)所有可能合并的等高线必须具有同一高程值。因为在接边缓冲区中的等高线,只有高程值相等的等高线才有可能需要合并,否则就不必考虑。
    (4)所有可能合并的两个等高线对象,它们之间的距离必须小于某一给定阈值。因为,只有两条高程相等的等高线间的距离小于阈值时,我们才认为这两条等高线是相交的。否则,认为这两条等高线是分离的。
    (5)等高线是闭合曲线,不存在分枝。所以,某段等高线最多就有两条等高线可以与它合并,不可能有两条以上的等高线。基于以上的约束机制,我们在问题的求解上采用启发式搜索方法。即在约束条件" 这个总的约束条件下,采用约束满足法,逐渐遍历寻找满足条件的等高线,在遍历的同时又根据其他约束条件来剪枝,从而减少在搜索循环时遍历次数,加快查找速度。
    5 等高线智能化接边的流程设计
    笔者现在所讨论的等高线图的拼接处理是指将多幅等高线图合并成一幅完整的等高线图,做无缝数据处理。处理流程是(如图# 所示):首先,将两幅同比例尺的等高线图在接边处做等高线偏离和断裂处理。这种处理的结果是在接边处的对应等高线的末端都做了一个微小调整,使得坐标相同的,即达到咬合($%&’)。接着,将所要合并的两幅等高线图通过合并成为一幅新的等高线图。这时,等高线在原来接边处仍然被打断成为两个对象,即在接边处还存在貌合神离的现象。然后,通过上述约束条件的判断,将接边处的本应是一个对象的等高线全部找出,利用&( 的拓扑逻辑操作接口函数,将这些对象重新合并成一个新的对象,然后插入到原图层中,依次循环,直到拼接完所有对象为止。最后,将原来这些貌合神离的对象全部删除。因为,在插入操作时,为了加快程序运行效率,并没有立即删除,而是在最后作删除处理。
    6 基于&( 的具体实现方法
    &*+(,-.+/0 是1$23 公司开发的面向对象的地理数据模型和高度集成的软件组件库,是一套完全符合4(5 标准的大型软件架构。&( 不仅是&*+63$ 的基石,而且它提供了大量的接口函数,用户可以在&( 的架构上开发自己的模型和功能组件。这样,我们不仅可以避开大量的底层的、我们并不十分关心的功能模块的开发,同时可以利用&( 中的强大的功能函数,快速实现用户最需要的、最关心的功能。
    笔者将多幅等高线图合并成一幅等高线图,为建立715、拓扑分析和图属互查等做前期数据处理。所以,对于目前商业软件已能对等高线图接边时的偏移和断裂的处理,笔者只是简要地介绍用&( 实现的方法。而对于目前商业软件不能够高效处理的,即在原接边处被打断成多个对象的合并问题,笔者将详细介绍其智能化处理的算法流程。
    (1)等高线在接边处的偏移或断裂现象的处理。在所要接边的等高线图中,接图边缘地物对象存在偏移或断裂现象。在接边时,我们首先要消除这种影响,使对应等高线的末节点重合。我们可利用&( 中的接口函数3189.5:/+; 和$<:=,完成等高线图接边处的咬合处理。在这个过程中,我们可以设置等高线对象咬合距离,以及咬合后对应等高线的末端的微小移动方向。
    (2)所有需要拼接的等高线全部合并到一个新图层中的处理。笔者之所以将所有要合并的等高线图幅中的等高线全部合并到一个新图层中,作初始合并处理,是因为原来等高线分别处在不同的图幅中,等高线的拼接就会涉及到多幅图的多个图层,这样会导致效率低下,操作复杂。而经过上述的合并处理后,所有的等高线对象全部合并到同一图层中,只是在原等高线图的接边处的对象仍然是被打断成多个对象。这样,我们在后面的处理中就只需要在一个图层中对原接边处的对象进行处理,就可完成拼接合并时的接边工作。对于将多个图幅中的等高线合并到一个新的图层中的方法,我们可以利用"# 提供的$%&’()*+,-.,)+’’,. 接口中的合并(/+.0+)函数,来实现这种图层的合并工作。这种方法的优点是,不必打开任何图层,既不用把所要合并的等高线图在窗口中显示,也不用将合并后的新等高线图在窗口中显示,从而减少内存资源消耗,加快合并速度。
    (3)在新等高线图中,在原等高线接边处貌合神离等高线合并的智能化处理。这也是笔者本次处理等高线接边的独特之处,也是常用的商业软件所不足之处。如在".)/&- 下,我们先要一一选取所要合并的对象,然后再利用23(4,. 下的合并(/+.0+)来合并对象,但是,一次只能合并一条等高线。因此,这种方法不是一种理想的方法。笔者在这里采用启发式搜索方法,然后通过一些约束条件,智能化地找出所要合并的等高线,并将它们合并。整个智能化合并流程如下(如图! 所示):
    a 利用所要合并图层的范围(264+74)求出等高线图的接边处的分割线。这是一条关键的线,因为它决定了初始合并后地图中可能存在貌合神离现象的位置。
    b 根据约束条件9,利用启发式搜索法,找出等高线接边处所有可能需要合并的对象。在初始合并后的新图层中,因为在第一步中已做过咬合处理,即现在只有貌合神离的现象,所以我们只要找出与原接边线有相接(:,;)<)关系的所有高线。因此,在智能化处理的程序设计中,启发式搜索条件是:在新图层上与原分割线具有:,;)< 关系的所有等高线对象。利用"# 中的位置查询函数,求出所有与分割线具有相接(:,;)<)关系的所有等高线集合-=+>+)4(,7。这个选择集,将是后面所有对象分析的基础集合,即下面分析的所有等高线对象都只能包含于这个集合中,在这个集合外的任何对象,都不用考虑。
    c 根据约束条件?,采用剪枝的方法,根据这些等高线位于分割线两侧位置的不同,将选择集合中的所有等高线的对象$@(#$@)分成为两组,使得每一组中的等高线都位于分割线的同一侧。
    d 选用任意侧的等高线的对象$@ 数组#$@=,对其中的每一元素所对应的等高线对象-A+&4 进行遍历查找。根据约束条件1,利用等高线对象-A+&4的高程值,在原选择集-=+>+)4(,7 中,找出所有该高程值的对象,并将该对象放入"# 提的指针数组!"#$%&’#(&’)*’ 中。然后依据约束条件+,依次判断该指针数组中的对象,(&’"#$% 与,"#$% 的距离关系,判断它们的距离是否在容差范围之内。若在,将该对象的-!. 存入相交数组,否则就存入不相交数组。接着,判断在不相交数组中是否存在与,(&’/"#$% 相交的对象。同时,再根据约束条件0,可判断与,(&’"#$% 相交的等高线最多只有一个对象,即在不相交数组中找到一个对象就退出循环,转入递归查找遍历中。依次循环遍历,直到找出所有的对象。
    e 将所有相交对象合并,生成一个新对象。利用2- 中的!3*,*-,#’$%* 接口所提供的合并(4/56*5)函数,将所有相交的对象合并成一个新的图形对象(7#*8#%’9),然后将该对象插入到合并后的图层中去。
    f 判断上面已处理过的相交对象数组中是否有对象是对象!. 数组-!.; 中的对象,有则要去掉该对象,这样就可避免重复绘制某对象。
    g 返回( 步,执行下一个对象的遍历。直到遍历完该对象!. 数组中所有的对象为止。
    (4)删除重复对象。因为笔者在第三步是插入的新对象,这样就存在着对象的重复。所以,我们就要将原对象全部删除。我们之所以没有在第三步中删除,是因为2- 在做插入操作时,不允许做删除操作。同时,将所有删除对象放进集合(!;#%)中删除的速度要比单个删除快许多倍,而且内存消耗少。
    7 结束语
    地图接边工作,一直是7!; 原始数据处理工作中所必须面对的问题,也是十分棘手的一个问题。虽然,目前的商业软件也能处理一部分问题,但是还是存在不足。笔者针对这种不足,提出了解决问题的算法,并在该基础上实现了等高线的拼接。在实验中,笔者所用的两图等高线图共有>+?? 个对象,在接边处存在着+=0 个对象,使用该方法,用程序实现整个拼接工作不到> 分钟。若是仅仅合并拼接处对象,仅要@ 分钟左右。这说明了笔者设计的算法不仅可行,而且处理速度快。因此,笔者认为该方法可以用于生产实际。

      声明①:文章部分内容来源互联网,如有侵权请联系删除,邮箱 cehui8@qq.com

      声明②:中测网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。

      加群提示:我们创建了全国32个省份的地方测绘群,旨在打造本地测绘同行交流圈,有需要请联系管理员测小量(微信 cexiaoliang)进群,一人最多只能进入一个省份群,中介人员勿扰

    返回顶部