胡元亮,李智辉,李小华
(1.中山市榄建测绘工程有限公司,广东 中山 528415)
元数据是能够实现不同基础数据之间交换、管理和共享的数据,即数据的数据[1]。基础地理信息元数据的规范有不同的版本,本文参考的是《基础地理信息数据产品元数据》(CH/T 1007-2001),该行业标准规定了4D产品(数字栅格地图DRG、数字正射影像图DOM、数字高程模型DEM、数字线划图DLG)的元数据内容、结构和格式[2]。通过元数据,用户可以了解这些基础数据的内容、生产单位、周边环境等情况[3]。在实践中,元数据的生产还没有统一的技术流程,因此如何快速高质量地生产元数据就成为当今地理信息的一个研究话题。本文讨论了1∶500图幅接合表到DLG元数据生产的问题,主要步骤有提取图名并计算图号、计算不同元数据值和元数据生成,结果主要是采用VBA或VB.NET的开发方法来完成,这些方法稍作改变也可以适用于1∶1 000和1∶2 000的DLG元数据生产。因中小比例尺地形图分幅采用的是经差和纬差划分[4],它的分幅和编号方法与大比例尺不一致,所以这里主要阐述的是大比例尺DLG元数据的生产。
要实现DLG元数据的生产,首先应了解生产所需的数据来源及成果格式,这里元数据生产的来源是图幅接合表。
图幅接合表是标明某一地区或分幅图的各图幅相关位置关系的略图,一般由图名、图号和方格网组成[5]。在开发区1∶500数字化地形图测绘的过程中,地形图采用正方形分幅,大小是50 cm×50 cm,编号是在1∶2 000地形图编号的基础上附加一个子号(01~16)。1∶2 000图幅编号是以其图幅西南角的坐标整公里数作为它的图号,舍去X坐标首位数字,X坐标和Y坐标各以3位字符表示,格式为:XXXYYY[6]。1∶500图幅接合表如图1所示,“××别墅”是一个图名,对应的图号是“49651101”,其西南角的坐标为“×496750.000,511000.000”。
图1 1∶500图幅接合表示意图
元数据文件的数据标志为Metadata,文件名后缀为.MAT,是一个纯文本文件,分左右2边,左边是元数据项,右边是元数据值,2边都没有字节数限制,可以用记事本打开查看。每一图幅对应一个元数据文件,每一个DLG元数据都含有121个元数据项和元数据值,信息量有图幅的图名图号、生产日期、接边情况和数据源等,其中大部分元数据值是相同的,但图名图号、图廓角点坐标、接边图名称、接边情况等约20项是不相同的。
依上述图分幅方法进行理论计算,1 km2的1∶500地形图含有16幅图幅。在一些城市的基础测绘招投标中,十几km2的地形图测绘、入库及元数据制作是常见的,有的还达到几十上百km2,那么对应的元数据文件个数便有几百上千。
图幅接合表是在CASS软件中绘制的,里面图名和图号的属性不具备相连关系,若手工将几百个图名和图号对应写下来非常耗时,这里采取的办法是先在ArcGIS中提取图名文本注记并计算其坐标,然后在Excel表格中根据坐标与图号之间的关系把图名对应的图号计算出来。
在ArcGIS导入图名之前要对CASS中的图幅接合表进行整理,将图名图号的高度统一变小,使其位置完全落在图幅之中,删除其他文本注记。修改完后,使用ArcGIS软件导入文本注记并转换成为shp文件,添加X字段和Y字段,然后自动计算图名的X、Y坐标,替换图名中的空格符,排序后删除图号和多余字段,最后将图名文本注记的图名、X坐标、Y坐标3个字段导出为Excel表格文件。
图幅里面的坐标与图号存在一定的数学关系,因为ArcGIS的X、Y坐标是数学坐标,它与测量坐标方向不一样,所以图号的前3位表示Y坐标去除首位后的整公里数,第4~6位表示X坐标的整公里数,最后2位与X、Y坐标的后3位也存在一定关系(如表1所示)。
表1 图号后2位与坐标后3位的对应关系表
令Z为图号后2位,X为X3/250后取整,Y为Y3/250后取整,那么就有Z=X-4Y+13。在Excel表格中,可以将上述关系写成VBA函数TuFu(),代码如下:
Function TuFu(X As Long, Y As Long) As Long
Dim intX As Long, intY As Long, dX As Long, dY As Long, longY As Long
intX = Int(X / 1000)
dX = X - intX * 1000
longY = Y - Int(Y / 1000000) * 1000000
intY = Int(longY / 1000)
dY = longY - intY * 1000
TuFu = intY * 100000 + intX * 100 + 13 - Int(dY /250) * 4 + Int(dX / 250)
End Function
然后在表格中输入该函数就可以计算出图名对应的图号了。
根据上面的图名图号表将不相同的元数据值计算出来。必须计算的元数据值有:8个图廓角点坐标、8个接边图幅名称和4个接边状况。这些都可以使用Excel里面的VBA开发一次性完成。
1)8个图廓角点坐标的计算。8个图廓角点坐标指的是所在图幅西南、西北、东北、东南图廓角点的X、Y坐标。由图幅的分幅和编号规则可知,这些角点坐标都与图号存在一定的数学关系。具体表述为:角点坐标=公里数×1 000+图号后2位对应的附加数。角点X坐标的公里数为当地X坐标省略的首位再添加图号的前3位;角点Y坐标的公里数是图号的第4~6位;图号后2位对应的附加数,如表2所示。
表2 图号后2位对应图廓角点坐标的附加数
2)8个接边图幅名称的计算。8个接边图幅名称是指图幅接合表中8个方位的接边图幅名。先以本图幅所在图号算出接边图幅的图号,接边图号之间也存在一定规律的加减关系;然后在VBA环境中采用Excel里面的VLOOKUP函数,以图号去匹配图名,从而完成该步骤的工作。如果某一方位没有接边图,按标准将其接边图幅名称记录为“无”。
3) 4个接边状况的计算。4个接边状况指的是西边、北边、东边、南边的接边状况,如果有接边图幅,则元数据值为“已接”,若无则接边状况写“未接”。
至此,不同元数据值已计算完毕,这些元数据值再加上图名和图号共有22项,再把它们导入Access数据库,设定好22个字段名称和数据类型,为下一步的元数据生成做好数据准备。
元数据的生成采用VB.NET语言开发,先是根据区域地形图特征制作元数据模板,然后导入不同元数据值和模板并运行程序生成MAT格式的元数据文件。
1)元数据模板制作,也是采用Access数据库,添加2个字段:元数据项和元数据值。填好121个元数据项的内容,元数据值除了图名图号和其他不相同的保持空值外,剩余的统一填上,如比例尺分母为500、所采用的大地基准为1980西安坐标系等。
2)元数据生成,是把上面的2个Access数据库叠加后,一次性生成所有的元数据文件,程序运行界面如图2所示。具体操作是点击按钮“打开元数据属性值”把22个不同属性值的数据库添加到第1个表格中,点击按钮“打开元数据模板”把模板添加到第2个表格中,然后点击按钮“生成元数据”便可以把所有元数据成果输出到指定路径下。
图2 元数据生成程序界面
实践证明,通过以上的开发思路和程序运行,高效无误地将1∶500图幅接合表生成DLG元数据,避免了人工操作带来的错误,为某开发区的基础测绘项目和以后的相关工作提供了技术支持。虽然文中只是提到1∶500图幅接合表和DLG元数据标准,但其中的技术稍作改动便可适用于其他大比例尺和其他类型元数据的制作。本文有一些规律是笔者在工作过程中总结出来的,例如根据图名注记的坐标计算图号、图幅轮廓角点坐标的数据特征,这些规律在图幅研究、地形图坐标特征探索等方面具有一定的借鉴作用[7]。
[1]张晓清. 基于元数据管理的环境地理信息系统的开发研究[J].现代测绘,2011(1):55-57
[2]CH/T 1007-2001.基础地理信息数据产品元数据[S].
[3]李轶维,王武魁. GIS元数据标准综述[J].科技信息,2011(5):22-24
[4]GB/T13989-92.国家基本比例尺地形图分幅和编号[S].
[5]杜磊. 基于CASS 7.0图幅接合表中文注记自动添加的实现方法[J].城市勘测,2011(3):151-153
[6]胡晓娟. 基于AutoCAD的大比例尺数字地形图标准分幅裁剪方法研究[J].甘肃科技,2011(1):51-52
[7]赵双飞,秦建新,张青年.南海市土地利用数据库结构和分层方案设计[J].国土资源科技管理,2004(1):66-68