摘要:随着信息技术的发展,地理信息的存储介质发生了很大变化,数字地形图作为计算机可识别存储介质上的有序集合,仍沿用最初的分幅方式。这种基于分幅、相互分离的数字地形图存在以下弊端:与无分割的实际地理空间实体不一致,无法适应地理信息的完整性
需求;不便于数据库的分布式管理;地形图的叠幅使得信息重复获取与存储,产生裂隙和数据冗余,致使资源空间在使用上浪费,基于ArcGISEngine9.2(相对于以前版本,功能大大得到扩展)的图幅自动化接边,可以实现数字地形图无缝拼接,解决了存在的弊端。
关键词:AreGlS Engine;图幅接边;算法分析
1自动接边中的关键问题
1.1地物匹配及地貌特征线的匹配地物查找的内容应为与接边相交的地物,为保证查找及拼接的准确性,查找是以图层为单位依据空间属性进行的,不同图层中的地物不进行接边,只有相同图层中的同类要素地物才进行匹配。地貌特征线也需要在同一图层中时才可进行匹配。
1.2属性的变化经过接边处理后,地物地貌的属性必然会发生变化,面积、长度等是自动相加的,保留累加值,原先两个面积删除,为更好地表现这些变化,可考虑增加属性字
段,将接边前后发生改变的属性进行标注,从而反映出这种变化。其他的属性保留一个即可,因为属性是一样的,只是因为图幅不能拼接的原因,出现了2个相同的属性。
1.3误差的处理由于数字化本身存在误差,从而使得本该拼接在一起的地物及地貌特征线拼接出现偏差。当相邻图幅在接边处的对应要素间距离小于0.3mm时,可不考虑误差影响,直接进行接边;当距离在0.3~0.6mm时,2要素各自移动1/2距离;当距离大于0.6mm时,则按一般制图原则接边,作记录。
2ArcGISEngine9.2介绍
2.1简要介绍[4-6]ESRI的ArcGISEngine是一个用于建立自定义独立地理信息系统(GIS)应用程序的平台,支持多种应用程序接口(ApplicationProgramInterfaces,APIs),拥有许多高级GIS功能,而且构建在工业标准基础之上。ArcGISEngine是开发人员用于建立自定义应用程序的嵌入式GIS组件的一个完整类库。开发人员可以使用ArcGlSEngine将GIS功能嵌入到现有的应用程序中。ArcGISEngine包括2个产品:Engine开发包,是组件、APIs和工具的集合。是创建自定义的GIS和制图应用的工具包。Engine运行时,是为了运行自定义的Engine应用的可分发的ArcObjcts。
2.2新增功能可以说,ESRI公司的ArcGIS9.2系列产品相对9.1来说变化是很大的.无论对开发人员还是用户来说,这次变化使得应用都更加方便合理,更人性化.这里简要
介绍Engine9.2版本新增的一些功能。ArcGISEngine9.2加入了许多新的功能并且增强了其他功能,增加了许多新的类Classes,界面Interfaces和方法Meth-ods,增加扩展,ArcGIS追踪分析模块,ArcGIS逻辑示意图生成扩展模块,ArcGIS数据互操作扩展模块,支持开发语言MicrosoftVisualStudio2005.NET。
2.3支持文件格式一GDB(fileGeodatabase和Access数据)
一Servers(SDE,IMS.Servers,.Arcweb)
一文件格式(Coverage,’VPF,CAD)
一已知扩展名的栅格数据
此外在编辑工具及功能方面改进比较大,该文正是基于ArcGISEngine9.2的相关组件、类库提供的功能进行了接边算
法的分析和实现。
3算法分析
3.1前提条件
(1)相邻图幅的待拼接部分应无重叠、残余元素遗留等现象。
(2)拟合并的所有基础地理信息要素分类分好,按照基
础地理信息要素分类与代码GBTl3923-2006标准分类存储到FileGDB文件中。
(3)属性数据是搜索同名要素的依据,必须要正确而完备,以保证逻辑链接和拼接后空间查询结果的准确性,图幅之间的间隙在容差范围内。
(4)几何数据要满足一定的精度要求.如连续的等深线线划不间断或自相交等。
3.2算法描述基础地理信息要素分类与代码中图幅边框本身就是一个要素,因此使用基于图幅边框的缓冲区对要求更新的面边界进行缓冲,这样就使得单个边的算法在速度及
效率上都得到很大优化。图幅内保护诸多要素,哪些要素是要合并的,必须作一
系列分析,确定要合并后才调用相关函数进行合并操作。程序中把最简单的限制条件放在整个限制规则范围的最外层。即“当前要素OID(主键,具有唯一性)必须小于比较要素OID"放在最外层,要素间的比较按照取出次序严格按照OID值递增的规则进行比较,这样只比较图l中的1-2、1-3、l-4、2-3、2-4要素,而不会再比较2-l、2-2要素,因此减少了
很多不必要的要素合并条件判断,使大部分不满足合并规则的要素较早排除次外层的限制规则:判断当前要素和比较要素是否在接合线两侧.如果2要素在接边线同侧,说明无合并可能。限制规则3:判断当前要素和比较要素是否在合适的距离范围内.如当前2要素的Extent是上下相离关系,说明该2要素不具备合并可能性。限制规则4:判断属性特征是否相同或是否满足要求。满足合并要求,将当前要素合并,并清除原要素。
3.3代码实现
3.3.1合并要素判断模块。
Publicvoidfindfeaturecanun(arraylistOID—listarray,ipolyline
ppolyline,ppolyline,ifeaturelayerpfeaturelayer,iniverticalhori-
zontal)
{
for(intinowfea=O;
inowfea<=ifeatureselectedcount-1;inowfea++)
{
OIDl=OID_listarray[inowfea];
Pfeaturenow=pfc.getfeature(OIDl);
For(inticomparefea=inowfea;
icomparefea<=ifeatureselectedcount;icompardea++)
{
if(icomparefea<=inowfea)
//判断条件l:是否OID严格按小比大规则
{
continue;//ExitFor
}
Else{
//判断条件2:是否在接合线两侧?
If(iverticalhorizontal==o)//接边线竖向的情况