任晓东 陆建伟 唐晓春
中图分类号:TV文献标识码: A
1 引言
按照全国水利普查的要求,结合苏州水利现代化、信息化实际和发展的需求,进一步摸清苏州水利家底,全面查清苏州河流湖泊和水利工程的基本情况,提高水利普查成果应用水平,在国普方案及省级拓展方案的基础上,苏州市开展了拓展河流基本情况普查工作,得到了大量河流的基本数据,如何对普查数据的经纬度、走向等基础信息进行校核,是一项繁杂及重复的劳动。解决的方法是采用VB编程技术批量生成普查河流的KML文件,然后在Google Earth中打开,通过图上显示的地点标记,直观地检查普查数据的合理性。
Google Earth是一款Google公司开发的虚拟地球仪软件,来源于Keyhole公司自家原有的旗舰软件,于2005年正式向全球推出,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。借助Google Earth的普及,其原生数据格式KML也成为业界的一种标准格式。KML是原先的Keyhole客户端进行读写的文件格式,是一种XML描述语言,并且是文本格式。KMZ是Google Earth默认的输出文件格式,是一个经过ZIP格式压缩过的KML文件。一般情况下,双击KML/KMZ文件即可从Google Earth中打开地标文件。
2 KML基本格式
基本格式的KML文件是指可以直接由Google Earth创建的KML文件,它包括地点标记、叠层、路线和多边形。
地点标记(Placemark)是Google Earth中最常用的地理特征,它使用一个黄色的图钉在地球表面标记一个位置。一个简单的地点标记的KML代码如下所示:
xml version="1.0" encoding="UTF-8"?
它包括以下几个部分:
(1)XML头:xml version="1.0" encoding="UTF-8"?
(2)KML命名空间定义:
(3)地点标记对象,包括:
名称(name):用于对地点标记进行注记;
描述(description):对地点标记进行描述,“气球(ballon)”中的显示内容;
点(Point):指定地点标记的位置。
3 KML文件的生成
普查得到的数据文件为Excel电子表格格式,各镇分别存放在一个目录中,表的格式如图1所示。
图1
将河流名称、经纬度等基本信息逐个输入到Google Earth是一个费时费力的工作,同时也容易产生二次输入错误。通过分析KML文件格式可知,一个镇多条河流的头部信息是保持不变的,变的只是河流名称和经纬度。因此采用VB程序遍历各个镇下的Excel文件,由程序生成以河流名称加断面编号为地点标记,并包含各地点标记经纬度的KML文件,这样就便于检查普查数据有没有问题。遍历生成KML文件部分代码如图2,经纬度转换部分代码如图3。
图2
图3
默认情况下,VB生成的KML文件为GB2312编码,中文字符在Google Earth中不会被识别,将会显示乱码。因此,需要将VB保存时的默认的GB2312编码转成UTF-8编码。转换编码时采用ADODB.Stream,代码如图4。
图4
双击生成的KML文件,左边的位置栏为图5显示效果,具体的河流名称、走向就展现在图6所示图中。
图5
图6
4 结束语
本文采用VB编程的方法,将苏州市拓展河流普查基本数据Excel电子表格文件,批量生成符合Google Earth要求的KML文件,并在Google Earth显示出地点标记。实践证明,采用VB编程的方法,既提高的工作效率,又减少了人工录入数据产生的二次错误问题,同时通过检查Google Earth各河流的地点标记,也能直观发现普查数据有无问题,保证了普查数据的准确可靠。