黃金玉,姜月華,蘇晶文,張泰麗
(1. 南京地質調查中心,江蘇 南京 210016)
空間數據庫投影是地理信息研究的基礎操作之一。然而,在使用GIS軟件進行空間數據投影時,或多或少都存在操作上的困難,尤其是重復相同操作,無法實現一次操作、批量投影的功能??臻g數據庫投影系統(CSData)的開發目標就是簡化這些軟件繁瑣的操作步驟,并合理補充原有GIS軟件欠缺的相關功能。為此,空間數據庫投影系統(CSData)設計出操作數據和投影成果圖件雙可視化界面,實現了空間數據與投影圖件的雙重管理功能。整個投影過程只需用戶選擇操作目標,系統自動獲取各類參數、讀取空間數據以及存儲投影成果圖件。
系統基于MapGIS二次開發實現[1]。MapGIS二次開發庫主要提供API函數、MFC類庫、ActiveX 控件3種方式,CSData系統選擇基于MFC類庫開發,是由于MapGIS類庫提供了多個可重用基類,調用內部開發函數更靈活。原有的GIS空間數據投影過程是很復雜的人工交互操作,需要將人工設置轉換為系統自動獲取,補足相關功能,使投影更完善、靈活。
投影系統開發實現了3大功能:數據庫管理、數據庫投影以及GIS圖件管理。整體框架如圖1。

原始的GIS軟件沒有數據庫管理功能,而用戶可能需要對原始數據進行分類投影。為此,投影系統設計了數據庫查詢檢索功能,提供需查詢的數據項,進行查詢條件語句編寫,可實現各類條件查詢選項,如大于、小于、等于、并且、或者、不等于等。
用戶也可以根據需要,通過雙擊相應編輯數據框對投影數據進行編輯修改。在實現這個功能時,程序上采用了特殊處理,在列表中使用編輯控件,修改編輯控件隱藏,在用戶雙擊激活修改功能時,編輯控件獲得所處行列號,置于修改數據所處框內,完成編輯修改工作。
用戶選定需要投影的數據后, 即可以進行投影。系統設計了自動讀取投影參數的功能,無需人工輸入操作,大大簡化了原始GIS軟件的步驟。根據投影需求,系統將數據單位分為度、度分秒和公里網,每一個數據單位都有對應的操作菜單,數據庫中各項數據都會作為屬性自動賦予圖元,投影結果文件會即時顯示在窗口中。
系統設計了啟動界面,用戶選擇GIS文件后,GIS圖件即顯示在主窗口中。GIS圖件管理具有瀏覽、編輯修改、鷹眼等功能,對GIS工程內部文件也具有文件管理功能。
投影系統界面主要包括啟動界面、主功能菜單、快捷鍵、樹型目錄菜單、數據庫列表窗口、GIS圖件顯示窗口、文件管理窗口和狀態欄,如圖2。

1)啟動界面。用戶選擇需要投影的底圖,要求底圖具有標準的投影參數,用戶確定底圖裝入之后,系統啟動主操作窗口。
2)主功能菜單。包括點文件操作、文件屬性操作、系統參數設置、數據庫投影操作等,用戶點擊相應功能菜單完成各種操作。
3)樹型目錄菜單。顯示數據庫中各類表的名稱,方便用戶點擊完成數據庫鏈接工作。
4)數據庫列表窗口。此窗戶是結合樹型菜單和主功能菜單完成數據庫的顯示功能。當用戶選擇或者輸入需投影數據表名稱后,此窗口自動鏈接相應數據表并將全部數據顯示在列表窗口中。該窗戶也可用于修改數據和顯示檢索數據。
5)GIS圖件顯示窗口。當用戶在啟動界面中選擇了投影底圖后,所選工程文件就會顯示在此窗口中?;镜腉IS圖形操作如編輯、查詢、放大、縮小、復位等都可以實現,數據庫投影結果也會顯示在此工作區中。
6)文件管理窗口。打開的工程底圖中文件項目情況都在此窗戶顯示,文件名稱、存儲路徑、文件編輯狀態等都詳細說明,用戶可以改變工程文件的狀態。
7)狀態欄。狀態欄中可顯示兩組坐標單位,一組是投影參數單位值,一組是經緯度值,隨著鼠標的移動可以靈活顯示鼠標所在點位的兩組值。
CSData系統將原GIS軟件需要人工一步步輸入的過程優化為系統自動讀取,則需要對其投影原理和相關數據函數進行剖析。投影參數結構如下[2]:
typedef struct MAP_PARA struct
{
char type;//空間數據水平坐標系類型
char unit;//空間數據水平坐標單位,
double mapw;//空間數據圖幅理論寬,type坐標系,unit單位
double maph;//空間數據圖幅理論高,type坐標系,unit單位
char projType;//空間數據投影類型
char earthParam; //空間數據參考橢球體參數類型
double jd0; //空間數據數據左下角經度, 數據單位統一采用UNIT_DMS格式
double wd0; //空間數據數據左下角緯度, 數據單位統一采用UNIT_DMS格式
double djd;//空間數據數據經度跨度, 數據單位統一采用UNIT_DMS格式
double dwd; //空間數據數據緯度跨度, 數據單位統一采用UNIT_DMS格式
double rate;//空間數據數據水平比例尺倒數,無單位
double lon;//空間數據中央經線經度, 數據單位統一采用UNIT_DMS格式
double lon1; //空間數據雙經線1經度, 數據單位統一采用UNIT_DMS格式
double lon2; //空間數據雙經線2 經度, 數據單位統一采用UNIT_DMS格式
double lat;//空間數據投影原點緯度, 數據單位統一采用UNIT_DMS格式
double lat1; //空間數據雙緯線1緯度, 數據單位統一采用UNIT_DMS格式
double lat2;//空間數據雙緯線2 緯度, 數據單位統一采用UNIT_DMS格式
double dx;//空間數據圖紙坐標原點在投影坐標系中的X偏移值 ,type坐標系,unit單位
double dy;//空間數據圖紙坐標原點在投影坐標系中的Y偏移值,type坐標系,unit單位.
char levelType;//空間數據大地水準面類型
double h;//空間數據大地水準面與參考橢球面之間的高差, 單位為m
double H;//空間數據投影平面與大地水準面的高差, 單位為m
double vRate;//空間數據垂向比例尺倒數
char vUnit;//空間數據垂向數據單位
char TICtype;//TIC點理論坐標系類型
char TICunit;//TIC點理論坐標單位
char infoUnit;//圖形顯示參數單位
double infoRatex;//圖形顯示參數單位值相對于當前數據單位值的x比例系數, 初始值必須賦0或1
double infoRatey;//圖形顯示參數單位值相對于當前數據單位值的y比例系數, 初始值必須賦0或1
}MAP_PARA;
以上都是投影參數,如一一人工輸入會浪費大量時間。CSData系統設計了初始用戶界面用于選擇GIS工程文件,裝入投影底圖的工程文件后,工程自帶的標準投影參數就會被系統獲取,并將各數值后臺賦予上面投影結構中的對應參數,無需人工輸入。工程文件裝入使用到的接口函數是_PRJLoadAProject(Char *name,AREA_HINST aInst, Short fastOpen), 其 中 Char* name表示裝入的GIS工程對象;AREA_HINST aInst表示工作區實例,由_InitWorkArea函數創建;Short fastOpen表示參數默認為0。
通過對函數參數的分析,在啟動界面由用戶自行選擇需要的GIS圖件,系統讀取圖件所在路徑進行顯示。通過接口函數返回GIS工程對象后,通過循環和大量內部函數獲取參數值,為投影作準備。
現有的GIS軟件在設置完成投影參數后,只能完成一個空間數據投影。CSData將獲取的投影參數作為系統內部參數保存,而讀取數據是根據用戶選取的數據名稱鏈接到數據表獲取坐標數據,完成的空間投影結果文件也會自動根據數據表名稱保存。用戶選擇批量投影操作,進入批量投影選擇界面,系統將自動讀取的數據庫全部表名都顯示在選擇列表中,用戶選擇需要投影的全部數據表,系統會一次將所有數據表全部投影,所有投影結果文件都自動保存在對應的文件目錄下,投影結束后提示用戶查看。
CSData的核心就是最大程度地減少人工干預。CSData系統的整個投影操作只需要人工交互三步[5-7]:首先裝入需要投影的GIS底圖,而后選擇需要投影的數據對象,最后啟動投影程序,系統就會完成所有投影參數獲取和設置以及結果文件保存。CSData系統將專業性很強的操作都設計為自動完成,真正實現了“傻瓜式”投影系統。系統實現的批量投影功能,也同樣只需要人工干預三步,區別就是選擇的投影數據對象通過多選模式提供給用戶勾選。由于參加投影計算的參數都是通過內部函數直接獲取,系統通過復雜程序完成判定和賦值,可以充分避免人工錯誤操作產生的誤差和投影失敗的情況。
CSData系統已被應用到多個項目中,如地下水污染詳查項目、地質災害調查項目、長三角綜合研究項目、淮河流域調查項目等。圖3為地質災害詳查項目中,將空間數據通過CSData完成的投影結果。

[1]王敬恩,康義凱,景俊紅.MapGIS在地理信息數據處理中的應用[J].工程技術,2007(28):253-255
[2]中國地質大學(武漢)信息工程學院.MapGIS地理信息系統開發手冊[Z].武漢:華地圖形數據公司,1998
[3]中地軟件叢書編委會.MapGIS組件開發手冊[Z].武漢:中地信息工程有限公司,2002
[4]吳信才.地理信息系統原理、方法及應用[M].武漢:中國地質大學出版社,1998
[5]曹瑜,胡光道.地理信息系統在國內外應用現狀[J].計算機與現代化,1999,61(3):1-4
[6]施伯樂,顧寧,劉國華.數據庫處理基礎、設計與實現[M].北京:電子工業出版社,2001
[7]Lernechker R C,Archer T. VC++6 寶典[M]. 北京:電子工業出版社,2001
[8]舒飛躍, 閭國年, 陸婧, 等. 基于知識對象的土地管理空間數據庫模型設計與實現[J]. 地球信息科學學報,2010, 12(3):348-357
[9]楊忠德, 曹新平. 基于時空關聯的警用信息系統的設計與應用[J]. 地球信息科學學報, 2011, 13(4): 480-485