张 标,陈 楠
(1.自然资源部陕西基础地理信息中心,陕西 西安 710054;2.长安大学 地质工程与测绘学院,陕西 西安 710054)
天地图是由国家、省、市三级节点共建而成的国家地理信息公共服务平台,自上线以来得到了政府部门和社会大众的广泛应用[1]。由于各级节点间存在信息资源共享不充分、数据现势性不一致等问题,导致天地图无法支撑复杂空间分析和深度应用。为此原国家测绘地理信息局提出数据融合方法,通过整合天地图国家主节点与省、市级节点数据资源,使融合后的各级天地图数据在现势性、准确性、丰富性等方面达到最优,从而提升天地图的整体数据质量与深度应用支撑能力,进而更好地促进天地图建设与应用服务[2-3]。
目前矢量数据融合工作大多数都是通过ArcGIS软件进行实施。ArcGIS软件提供了丰富的数据编辑和数据质检功能,可对要素进行几何形状修改、属性内容处理和空间关系检查与协调等编辑操作[4-5];但由于其提供的功能都是通用功能,因此不能有效支持一些数据融合处理要求(如线反向、孤立线检查等),同时已有的一些功能(如节点编辑、属性编辑等)也存在不足之处,导致人工重复作业。为弥补ArcGIS软件功能的不足,提升数据融合效率,本文设计并实现了一种矢量数据融合工具。在分析矢量数据融合技术路线的基础上,结合ArcGIS软件已有功能,梳理得到矢量数据融合工具的需求;再根据需求进行工具功能模块设计,并利用ArcGIS相关组件,在Visual Studio开发环境下采用Add-in方式进行工具实现;最后将所开发的工具应用于天地图·陕西国省矢量数据融合工作中,结果表明,该工具能在保证数据融合质量的同时,减少人工重复作业,有效提升数据融合效率。
矢量数据融合是丰富和更新天地图各级数据资源的有效途径。在分析矢量数据融合技术路线的基础上,结合ArcGIS软件已有功能,本文梳理了矢量数据融合工具的需求。
矢量数据融合是通过对参与融合的不同精度、不同类型的矢量数据进行分析比对,从中选取数据精度高、现势性强、内容丰富的要素进行融合处理,并对融合后的数据结果进行几何拓扑、属性表达、空间关系、逻辑一致性检查,使融合后的数据在准确性、现势性、内容丰富性等方面达到最优[6]。
矢量数据融合的技术路线如图1所示[7]:①坐标系转换,由于各数据源坐标系不完全一致,需进行坐标系转换,使各数据源坐标统一;②要素分层提取,对不同数据源中的同类要素进行对比分析,根据现势性强、几何表达精确度高、平面位置精度准、内容丰富等原则进行提取,对确定提取的要素进行分层合并处理;③属性内容处理,即进行各要素属性结构、内容的处理、整合;④几何图形处理,根据现势性、数学精度等原则,进行要素的几何图形处理加工;⑤空间关系处理,即处理各要素间的空间关系,保证各要素间的空间关系合理;⑥质量检查,按照数字测绘成果质量要求,对融合后的成果数据进行质量检查。
图1 矢量数据融合的技术路线
通过对技术路线进行分析,可将矢量数据融合工作分为数据预处理、几何更新、属性更新、数据质量检查、数据检查处理5个部分。数据预处理包括坐标系转换和数据分层提取,ArcGIS软件提供了投影变换与按位置(属性)选取要素的功能,能满足数据预处理的要求,因此该部分没有需求。几何更新主要是对要素的几何图形进行修改,ArcGIS软件提供了几何整修、节点编辑、平移、旋转、打断等功能,能满足几何更新的要求,但存在人工重复作业的问题(如打断编辑一次只能处理一个对象),需要进行改进。属性更新主要是对要素的属性内容进行处理,ArcGIS软件通过要素编辑和字段计算器等方式处理要素属性;但这些方式存在人工操作不便(如不能同时更新多个字段)的问题,需要进行改进。数据质量检查包括拓扑关系检查和逻辑一致性检查,ArcGIS软件提供了丰富的拓扑关系检查功能,如自相交、互相交、悬挂点、小对象等,能满足拓扑关系检查的要求,但不能满足逻辑一致性检查的要求(如河流级别一致性),需要增加相应功能。数据检查处理主要是依据数据检查结果对数据进行相应处理,ArcGIS软件仅提供了少量功能(如延伸、修剪用于悬挂点处理)用于检查结果的数据处理,大多检查结果不能处理,需要增加相应功能。矢量数据融合工具的需求如表1所示。
表1 矢量数据融合工具需求
根据需求分析进行矢量数据融合工具功能模块的设计,如图2所示。矢量数据融合工具的功能模块由几何更新、属性更新、数据检查、数据处理和系统设置组成。
图2 矢量数据融合工具功能模块
几何更新功能模块包括形状更新、线打断、线反向、线公共点移动等功能。虽然ArcGIS软件提供的节点编辑和几何整修功能可用于要素几何形状的修改,但为了保证数据源要素与数据融合要素几何形状的一致性,通过节点编辑处理时,需逐个节点捕捉,利用几何整修处理时,需追踪几何图形,人工操作量较大。因此,为降低人工操作难度,形状更新功能将数据源要素的几何图形作为参数去修改融合数据要素的几何形状,并设置了整修和相等两种更新方式,作业人员只需分别点击数据源要素和融合数据要素,即可实现融合数据要素几何形状的修改。线打断功能主要针对ArcGIS软件的打断功能一次只能打断一个要素的问题设计,作业人员使用该功能在需要打断要素的位置绘制线段即可实现多个要素的同时打断。线反向功能可将要素的节点顺序反向,用于保证道路要素前进方向的一致性。在移动交叉口线要素的节点时,传统方式是逐个要素进行移动,而通过线公共点移动功能则可实现交叉口线要素节点的同时移动。
在矢量数据融合过程中,有大量属性内容需要处理,属性更新功能模块包括属性交互更新、属性批量更新、固定字段更新等功能。属性交互更新是一种作业人员选择数据源要素,再选择数据融合要素进行属性更新的方式,包含部分字段更新、全字段更新和使用更新字段3种形式。由于数据源要素与数据融合要素在属性结构和内容方面可能存在差异,因此需通过属性字段映射、属性内容映射等相关内容消除差异。属性批量更新是属性交互更新的批处理形式,通过对数据源与融合数据之间空间关系(线要素共线、面要素交叠)的判断,找出数据源与融合数据中的同名要素,进而对属性内容进行更新。固定字段更新则是对要素的某个字段进行固定值填写。
由于ArcGIS软件提供了丰富的拓扑关系检查功能,因此数据融合工具中的数据检查主要是逻辑一致性方面的检查,包括孤立线检查、级别一致性检查、伪节点检查等功能。孤立线检查负责找出没有与其他线要素相交或相接的线要素,可用于道路连通性的检查处理。级别一致性检查用于检查相同名称的河流或绿地的级别是否一致。伪节点检查用于检查线要素中不合理的打断。
数据处理功能模块包括悬挂点处理、级别一致性处理等功能。ArcGIS软件提供延伸、修剪功能用于悬挂点处理,但该功能只能逐个处理悬挂点,当数据量很大时,显然不能满足要求。悬挂点处理功能可实现悬挂点的批量消除。级别一致性处理是在级别一致性检查结果的基础上对要素的级别属性进行处理,以保证河流级别、绿地级别的一致性。
系统设置功能模块负责工具使用时的相关参数设置,包括环境设置和参数设置,如系统坐标单位、更新图层设置、几何更新方式、属性字段映射设置、属性内容映射设置等。
根据上述设计,本文利用ArcGIS相关组件,在Visual Studio开发环境下采用ArcGIS Add-in方式开发了矢量数据融合工具。ArcGIS Add-in是ArcGIS在10.0版本后引入的新功能,旨在让用户可以通过轻量级的代码定制面向应用需求的桌面插件和功能,是一种可扩展性强、创建简便、易于移植和共享的插件设计方式[8-9]。矢量数据融合工具通过ArcMap Add-in开发方式进行实现,在Visual Studio 2010中新建项目,选择ArcMap Add-in模板建立工程,选择Add-in的Button组件和Tool组件作为激活按钮工具。由于矢量数据融合工具的内容较多,受篇幅限制,本文主要说明形状更新、悬挂点处理的实现方式。
形状更新的实现流程如图3所示:①在系统设置中分别设置数据源所在图层(SourceLayer)、融合数据所在图层(UpdateLayer)以及几何形状更新方式(UpdateType);②通过点击选择(Intersects)的方式分别选择数据源要素(SourceFeature)和融合数据要素(UpdateFeature),并对融合数据要素的几何形状进行修改;③判断UpdateType,若为相等方式,则直接将数据源要素的几何图形赋值给融合数据要素(UpdateFeature.Shape = SourceFeature.Shape),若为整修方式,则将数据源要素的几何图形作为参数去修改融合数据要素的几何形状,对于线状要素,利用IPolyline接口的Reshape函数进行整修(Polyline.Reshape(SourceFeature.Shape as IPath)),对于面状要素,则需要将几何图形转换为一个个环(IRing),再利用IRing接口的Reshape函数进行整修,最终完成融合数据要素几何形状的修改。
图3 形状更新实现流程图
悬挂点处理的实现流程如图4所示:①在系统设置中分别设置检查结果图层(RstLayer)、处理图层(ProLayer)、处理参考图层(RefLayer)、处理距离(Dist)、是否捕捉端点或交点(bCatch),其中处理参考图层主要是为处理图层要素的延伸、修剪等提供位置参考,处理参考图层可与处理图层一致;②利用检查结果(Point),根据Dist和空间关系(Intersects),从ProLayer中找到处理要素(ProFeature)、从RefLayer中找到处理参考要素(RefFeatures),若RefFeatures个数为空,则进行提示,结束处理;③判断bCatch,若是则从RefFeatures中找出最近端点或计算交点,并对ProFeature的端点进行处理,若不是则进入延伸或修剪部分;④从RefFeatures中找出距离最近的RefFeature,判断其与ProFeature的空间关系,若不相交,则利用IConstructCurve接口的ConstructExtended函数进行延伸处理,反之则计算交点个数,交点个数等于1时,采用ITopologicalOperator2接口的Cut函数进行修剪处理,交点个数大于1时,则无法处理进行提示,结束处理;⑤对所有悬挂点检查结果进行逐个处理,完成悬挂点处理。
图4 悬挂点处理实现流程图
本文根据功能模块编写相应的代码,编译形成后缀名为esriAddIn的文件,完成矢量数据融合工具的开发。工具的部分界面如图5所示。
图5 矢量数据融合工具部分界面
将本文设计的矢量数据融合工具应用于天地图·陕西国省矢量数据融合工作中,效果如图6、7所示。实践结果表明,矢量数据融合工具能对要素进行几何形状修改、属性内容处理和空间关系检查与协调,在减少人工作业的同时保证了数据处理的准确性,提升了数据融合效率。
图6 悬挂点处理结果
图7 矢量数据融合结果
完善的工具是提高作业效率和质量的关键。本文针对ArcGIS软件功能不能满足天地图矢量数据融合工作要求的问题,在梳理出矢量数据融合工具需求的基础上,利用ArcGIS Add-in方式设计实现了一种矢量数据融合工具,并将其应用于天地图·陕西国省矢量数据融合工作中。实践结果表明,本文设计的工具能减少矢量数据融合工作中的人工重复作业,还能保证数据融合的质量,有效弥补了ArcGIS软件的不足之处,具有一定的参考价值。