VBA在实现MapMatrix航测数据向CASS转换中的应用
2012-09-22黄太山
黄太山
(福建省国土测绘院,福建厦门 361012)
1 概述
随着计算机与遥感技术及其应用的发展,利用航空摄影测量方法进行大比例尺测图,在铁路、公路、电力等线路的选线测量、地质矿区建设测量、城市规划建设测量以及地籍测量中得到了广泛应用[1]。如何将航测地形图最有效地转换至常用地形测绘软件,为用户提供可读性强的数据,是测绘行业中的一个难题。本文通过以武汉航天远景测绘软件MapMatrix为例,通过研究其数据格式,利用Excel中简单的VBA编程,实现其数据有效的转换至南方测绘软件CASS格式。
2 VBA简介
VBA(Visual Basic for Application)是微软开发的、在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言[2]。VBA最大特点和最大优点是利用面向对象(oop)的ActiveXAutomation技术,使语言的引擎在技术上与开发环境分离。它的功能在很大程度上依赖于它的客户显露的Automation接口。同时,由于VBA是基于ActiveXAutomation技术,它可以使用任何Automation技术的应用程序共同工作[3]。
3 实现转换
3.1 转换方法
MapMatrix测制的图形文件格式为*.xml,为了能够更好地研究其数据组织的格式,以一个一般矩形房屋为基本单元列出其数据形式,从表1中可以看出MapMatrix中的各类几何要素是按照“<Feature>…</Feature>”的形式表示各要素的,每个要素的地物名称、坐标点分别以FID、VERTEXES标签进行识别,必须保留这两个关键标签。
MapMatrix 表1
熟悉南方CASS的读者都知道,CASS可以通过简码识别功能,调用*.dat文件实现地形图的自动展绘。格式如表2所示。
CASS 表2
表1中第三行中的一般房屋与表2中第一行的202分别代表两种软件下的地物名称和对应代码。表1中的<VERTEXES>…</VERTEXES>则对应表 2中后三个字段来表示坐标值。
因此,首要任务就是将表1形式的数据转换成表2成果,然后保存成*.dat文件,利用CASS的编码识别功能实现地形图的自动展绘。
3.2 VBA程序实现
用Excel打开MapMatrix的xml文件,出现图1打开方式选择提示窗,此处选择“作为XML表(T)”打开,打开后图形数据将按照各类标签进行分列,如图2所示。上文已经提到,FID、VERTEXES标签是转换数据的关键字段,其他不相关字段则可提前删除。由于篇幅限制,本文主要对主要代码段进行介绍,涉及自定义函数只做功能说明。
图1 打开文件提示窗界面
图2 转换前图形数据的排列
图3 转换后图形数据的排列
通过VBA的宏运行后,可发现原始数据已经被转换成如图3的格式,而自动生成的*.dat文件则为表2的形式,可直接在CASS中直接调用,从而实现自动转绘的功能。
表Shthcsj是XML文件打开后的地形数据表,Shtbmdyb是MapMatrxi的地物名称与CASS相应地物的编码对应表。通过宏的运行,一个完整的dat文件即被自动保存至相应的文件夹中。打开南方CASS成图软件,利用其编码识别功能调用该dat文件,自动转绘后的图形文件就基本保留了MapMatrix的地形地貌信息,最为有效的实现航测数据转换。
4 结论
通过对数据组成格式的研究和程序代码的编写,实现了航天远景航测软件MapMatrix向南方测绘软件CASS成图软件的有效转换,形成以下结论:
(1)各类测绘软件的地物编码不尽一致,通过编码对应表的制作,可以实现测绘软件之间的数据共享。
(2)为了保证航测数据最有效地转换至常用测绘软件中,利用程序转换和自动展绘后,必须对两个图件进行适当对照。
(3)转换后的图形数据必须进行一定的图形整饰,达到地形图美观的基本要求。
[1]袁书明,孙枫,刘光军等.重力图形匹配技术在水下导航中的应用[J].天津:中国惯性技术学报,2004,12(2):13~17
[2]伍云辉等编.Excel VBA办公应用开发详解[M].北京:电子工业出版社,2008
[3]赵志东.Excel VBA基础入门[M].北京:人民邮电出版社,2006
[4]张祖勋,张剑清.数字摄影测量学[M].武汉:武汉大学出版社,1997
[5]韩玲,李斌,顾俊凯等.航空与航天摄影技术[M].武汉:武汉大学出版社,2008
[6]陈永明.航空与航天摄影技术[M].北京:中国建筑工业出版社,2003