方 衎,王山东
(1.河海大学 地球科学与工程学院,江苏 南京 210098)
基于ArcGIS Engine的数字地图逻辑拼接
方 衎1,王山东1
(1.河海大学 地球科学与工程学院,江苏 南京 210098)
针对目前GIS系统海量数据分幅存储与管理造成的地理要素在图幅边缘产生的缝隙问题,结合拼接相关理论,提出了一种兼顾空间位置关系和属性特征的拼接方法,并基于ArcGIS Engine 10以及Microsoft Visual Studio 2010的开发环境实现了该方法。实践证明,该方法很好地实现了数字地图的逻辑拼接。
数字地图;逻辑拼接;ArcGIS Engine
当多幅相邻的地图显示在一起时,虽然用户在视觉上感觉图形是连续的,但实际在图幅的接边处是有误差的(如图1所示),且同一地理要素在跨越多图幅时在各自的图幅中具有不同的地理编码以及不同的属性信息,即存在逻辑缝隙。所谓逻辑拼接,就是在分幅地图数据的基础上,一方面使同一地理要素在相邻图幅中的地理编码和属性信息一致[1],另一方面消除图幅间的空间错位,使其在几何上连接在一起,实现地理要素的整体一致显示[2]。
目前,市场上有很多GIS软件都具有地图拼接功能(ArcGIS、MapGIS和SuperMap等),但在实际操作中需要较多的人工干预,效率不是很高,且往往只考虑了要素的空间位置关系,对其属性特征考虑较少,并不能完全满足用户的需求。
本文提出了一种兼顾空间位置关系和属性特征的拼接方法,利用ArcGIS Engine 10提供的空间操作功能,在 Microsoft Visual Studio 2010环境下实现了这一方法。
图1 图幅间的接边误差
1.1 拼接的总体流程
拼接的总体流程如图2所示。在进行图幅拼接时,由于数据是图幅拼接的基础,保证数据的质量决定着最终拼接的效果,因此需要对待拼接的图幅进行质检,以满足以下条件[3]:①数据格式必须统一;②待拼接的图幅应具有相同的地图数学基础,即有相同的比例尺、坐标系统以及高程基准,保证图幅之间没有缝隙;③保证一定的几何精度;④具有正确的属性信息;⑤相邻图幅的边界数据没有重叠现象。
本文的数据都是同一时期航测的,并经过专业人士的调绘、数字化以及检查,因此满足以上各条件。
图2 拼接的流程图
1.2 拼接算法概述
拼接算法的流程如图3所示。
1)获取接边线。接边线为每个图幅的图幅边框(图幅边框单独为一个图层)。
2)生成选择集。给定一个阈值,求取接边线的双侧缓冲区,相邻图幅中凡是与这个缓冲区相交的要素,分别放在2个集合中。本文中阈值大小为0(在数据检验时,所有要素都通过剪切和延伸操作,使得首末端点都已严格落在图幅的边框上),即与接边线有交点的要素为待接边的要素。选择集分为3种:点选择集、线选择集和面选择集[4]。
3)对选择集进行排序。为了提高要素匹配效率,对接边要素按空间关系进行排序。
4)要素匹配。遍历选择集,查看选择集中要素的属性值,主要是要素的编码是否一致。对于点要素和线要素,若属性一致,再判断距离。经过属性约束后,满足条件的要素可能并不是一一对应的,就需要比较两要素之间的距离,最短的那对则认为是匹配的一对。对于面要素,属性匹配正确后,同样需要进一步判断,若两要素之间有重合的部分,则匹配成功。在要素匹配成功后,确定其接边点,然后可进行下一步的拼接处理。若属性不一致,则继续遍历选择集,直到所有要素都遍历完成。
5)拼接处理。对于点要素的拼接处理,删除掉重复要素即可;对于线要素的拼接处理,主要有3种方法[5]:①平均法:取待接点A和B的坐标平均值点C作为接边后的点,如图4 a所示,一般适用于接边误差在精度范围内的直线及多段线的处理;②强制法:取相对准确的待接点A作为接边后的点,将另一待接点B强制附合到A点上,如图4b所示,主要用于用户能明显判断出哪一条待接边更准确,适合交互式的接边处理;③优化法:找出待接点A和B以及它们的前一点A’和B’,由这2个点的连线与接边线求出一个交点P,用P点作为最终点来替换原来的A点和B点,如图4c所示,主要用于共线要素的接边处理。对于面要素的拼接处理,则采用融合法[6],即对2个面要素的重叠部分进行融合。
图4 线要素接边方法示意图
2.1 主要的技术实现
1)接边线的获取。通过创建一个QueryFilter对象,用IFeatureLayer接口的Search方法来获取。
2)缓冲区的生成。用Geometry类库中ITopological Operator接口的Buffer方法来求取接边线的缓冲区域。
3)选择集的生成。通过创建一个SpatialFilter空间过滤器对象,空间关系类型为esriSpatialRelIntersects得到与接边线相交的要素,从而生成选择集。
4)接边点的获取。通过ITopologicalOperator的Intersect方法来获取。
5)面要素的拼接处理。在用Buffer缓冲后,用ITopologicalOperator接口的Union方法进行融合。
2.2 拼接的结果
为了验证该算法的有效性和正确性,以安徽省1∶10 000地形图为测试数据,部分拼接结果如图5所示。由图5可知,该方法达到了预期的效果,绝大部分线要素和面要素在边界处都已很好地拼接在一起(只有少数的需要人工干预),在视觉上实现了几何无缝,满足了逻辑拼接的要求。
图5 拼接的结果图
本文针对数字地图图幅之间存在的缝隙问题,研究并实现了图幅之间的逻辑拼接。结果表明,通过本文的方法,其拼接结果达到了预期的效果,实现了图幅之间的逻辑无缝,很好地解决了地理要素跨图幅存在的不连贯问题。但若要查询分析地理要素的完整信息,则还需要将跨图幅的地理要素合并成一完整要素。因此,接下来的研究工作则是实现物理无缝功能。
[1] 周依文. 多图幅数字海洋地图无缝拼接算法研究[D]. 北京:北京邮电大学,2009
[2] 朱欣焰,张建超,李德仁,等. 无缝空间数据库的概念、实现与问题研究[J]. 武汉大学学报:信息科学版,2002,27(4):382-383
[3] 曹健,李国忠,徐效波,等. 基于ArcGIS Engine的多幅数字地形图接边算法研究[J].测绘与空间地理信息,2010,33(2):76-78
[4] 李晓欢,张雯,别红霞,等. 数字海洋地图无缝拼接的研究[J].地理空间信息,2008,6(6):59-61
[5] 周顺平,张江东,左泽均,等. 线要素任意范围接边算法的设计[J]. 测绘科学,2012,37(5):20-22
[6] 杨爱,王发良,朱秀丽,等. 一种基于实体匹配的面要素无缝拼接方法及精度分析[J].地理信息世界,2012(3):68-72
[7] 张丰,杜震洪,刘仁义. GIS程序设计教程[M]. 杭州:浙江大学出版社,2012
P208
B
1672-4623(2014)01-0164-02
10.11709/j.issn.1672-4623.2014.01.058
方衎,硕士,主要研究方向为地图制图智能化理论与方法。
2013-05-03。