李杰,郝会民,李慧
(石家庄市勘察测绘设计研究院,河北石家庄 050019)
分幅数字地形图元数据的高效提取
李杰∗,郝会民,李慧
(石家庄市勘察测绘设计研究院,河北石家庄 050019)
元数据是“关于数据的数据”,在数字地形图测绘活动中,分幅数字地形图是最重要的成果形式之一,其图外要素包含着重要的地形图元数据信息。在AutoCAD环境下,如何从分幅数字地形图中快速、灵活、高效地提取出元数据信息是本文讨论的主要内容。
AutoCAD;分幅数字地形图;元数据;选择集
在数字地形图测绘当中,图形数据成果一般以地形块图和分幅图的形式提供,其中最常用且最重要的是分幅地形图,标准的图幅规格一般有40 cm×50 cm和50 cm×50 cm两种。数字地形图图外要素一般包含有:图名和图号、接图表、密级、测绘单位、测图时间、坐标系统及高程基准、基本等高距、图式标准、比例尺、测量人员以及图幅最小包围盒,这构成了分幅数字地形图的基本元数据信息。
分幅数字地形图元数据信息的存储表现形式主要有两种,一种是“图块+属性”的方式,即通过创建带有属性项的图廓图块,来实现元数据信息的管理,在插入图廓块文件时,可以设置与块关联的属性值;另一种方式是以AutoCAD实体的形式表示,即以多义线、线段、文字的形式表现。两种方式各有优缺点,可以根据自己的需要选择其中的一种方式来存储元数据信息,本文着重探讨采用第二种方式时元数据的提取问题。
实现地形图元数据的高效提取主要从两个方面考虑:一是开发途径(工具),二是算法。
2.1 开发途径(工具)
AutoCAD提供了强大的二次开发功能,AutoLISP、VLISP、ADS、ObjectARX、VBA等均可以进行二次开发,通过VBA或VB(或VB.NET)结合AutoCAD类型库的方式进行二次开发应当说是达到快速、简单、高效开发效果的主要途径之一。VBA和VB(或VB.NET)的主要区别在于,VBA与AutoCAD在同一操作空间运行,可为AutoCAD提供智能化的快速编程环境,运行速度更快,但其编程功能及界面的美观程度方面要逊色很多,本文以VB 6.0开发为例进行阐述。
2.2 算法
算法应有广泛的适用性,不能局限于某一种固定的数据格式,算法除了可以处理符合国标图式的数据外,还应考虑到各地、各单位数据格式多样的情况,笔者采用图形模板的方式来解决这一问题。
提取分幅地形图中元数据的目的是为了建立元数据库,在建库之前应已进行了充分的系统需求性分析与调查,并完成数据库库体设计。为了下文表述方便,现假定某元数据库中某数据表的字段属性设置如表1所示。
数据库表举例 表1
3.1 编程环境设置
利用VB 6.0新建一个标准工程,添加相应版本AutoCAD类型库的引用,定义AutoCAD工程变量,使用CreateObject、GetObject函数建立连接,具体程序编码内容在相应的出版物中有详细介绍,此处不再过多赘述。具体关键代码如下:
3.2 算法的实现
首先,制作图形模板,打开任意一幅分幅数字地形图,删除所有图内要素,只留下图外要素内容,以特定的文件名另存为一个图形文件。其次,根据元数据库字段名称在AutoCAD图形文件中添加对应的图层名称,并在该图层中绘制一个适中的矩形框,确保所有图幅相应的AutoCAD文字信息被完全包含在该矩形框内(这一点非常容易做到),编程读取出矩形框与分幅图外图廓重心的相对位置信息,记录到一个文本文件中(同时保存矩形所在的图层名即元数据字段名称)。最后,批量自动打开需要提取元数据的图形文件,逐一提取元数据信息。提取方法是这样的:打开图形后,求解出该分幅图外图廓的重心坐标,根据上一步形成的文本文件中存储的矩形框位置信息,创建AutoCAD多边形选择集,将选择集中的文字信息按坐标位置排序,即可获取相应的元数据信息。举例描述如下:
(1)图形模板的制作
图1 原始数字地形图(局部)
图2 分幅地形图元数据图形模板文件(局部)
实际制作图2中的矩形框时,必须做到矩形宽度足够大,例图中限于纸张宽度并未画到足够大。
(2)元数据矩形框位置信息的提取
这一步完全在图形模板文件中进行。首先确定外图廓的重心坐标。有两种方法可以确定:一是根据外图廓的图层、颜色、线宽等信息构建选择集,调用实体的GetBoundingBox方法获取其最小包围盒,根据对角线坐标平均数求出重心坐标;二是根据AutoCAD系统变量求出当前图形的左下角和右上角坐标,坐标平均数进行求整处理后亦可以求出所需的重心坐标(使用此方法时,请注意图形文件中不宜有不属于本图幅的要素,否则会使图形范围与图幅范围差别过大,从而导致重心坐标错误)。
其次根据图层信息创建选择集,逐一获取元数据矩形框,调用实体的GetBoundingBox方法求得其外围最小包围盒,将最小包围盒坐标与重心坐标的X、Y值的差值写入文本文件。文件内容为:
图名,-40.0,225.5,40.0,231.8
图号,-21.4,217.5,21.4,222.5……
(3)分幅地形图元数据的提取
由程序批量打开分幅地形图,打开后首先按照(2)中的方法,确定当前图幅外图廓的重心,自动打开元数据矩形框位置文本文件,创建只选择文本数据的多边形选择集,根据选择集中各要素在X、Y方向上的空间序列关系,判断该文字信息是横向排列还是竖向排列,从而提取出符合语义的元数据信息,写入相应的数据库中。
(4)算法的优点
算法具有足够的灵活性。程序不依赖于固定的数据,在不调整程序代码的前提下,通过灵活地调整图形模板文件,即可顺利实现元数据的提取。该算法简单,编程实现非常快捷。
本文主要讲述利用图形模板技术方案实现分幅数字地形图元数据快速、灵活、高效的提取,经笔者在VB.net+AutoCAD模式下实践验证,本文提出的算法可行,已应用于我院数字地形图元数据库建设之中。
Efficient Method of Metadata Extraction from Framing Digital Topographic Maps Based on AutoCAD
Li Jie,Hao HuiMin,Li Hui
(Shijiazhuang Institute of Surveying,Mapping&Geotechnical Investigation,Shijiazhuang 050019,China)
Metadata is“data about data”.In surveying and mapping activities of the digital topographic maps,the framing digital topographic map is one of the most important result forms,which contains important metadata information in the outside map elements.How to extract metadata information fast,flexibly and efficiently in the AutoCAD environment is the main content of this paper.
AutoCAD;Framing Digital Topographic Map;Metadata;SelectionSet
1672-8262(2011)01-100-02
P209
B
2010—03—12
李杰(1974—),男,工程师,主要从事技术管理及软件开发工作。