任曉東 陸建偉 唐曉春
中圖分類號: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各河流的地點標記,也能直觀發現普查數據有無問題,保證了普查數據的準確可靠。