實現桌面地理信息系統ArcView和VB5應用程式之間的通訊

摘要 本文簡要介紹桌面地理信息系統的概念,通過分析 桌面地理信息系統ArcView和VB5應用程式之間的通訊關係,結合實例,論述了ArcView 和VB 5相互通訊在開發桌面地理信息系統中的套用價值。ス丶詞 桌面地理信息系統、ArcView和VB5、應用程式通訊お1. 桌面地理信息系統簡介サ乩硇畔⑾低呈且恢痔囟ǖ目占湫畔⑾低常它是採用現代化的方法來採集、存儲、分 析、管理、顯示、模擬與地理空間分布有關數據的空間信息系統。它是現代地球科學、信息 學、環境科學、測繪遙感學、計算機科學、管理科學、套用數學以及各種套用學科有機結合 的集成產物。自60年代加拿大測量學家R.T.Tomlinson 首先提出地理信息系統這一術語以來 ,在大型機、小型機、工作站和微機平台上,相繼出現了GIS的套用平台。如美國ESRI的產 品,已遍布上述四種硬體平台。由於80年代PC技術的迅速發展,以及近幾年來PC硬體價格的 急劇下跌和其性能日益提高,使得桌面地理信息系統(DeskTop GIS)得到了迅速的發展。 其中在國內用得較多的有美國ESRI公司的ArcView。2. ARCVIEW介紹ハ衷誄S玫腁rcView2.1以上英文版是直觀性較好的桌面地理信息系統。它集空間圖形、關係 資料庫、統計圖形、空間分析、網路通訊、面向對象的程式設計於一體,圖形用戶界面直觀 。而且它有自己的開發工具即Avenue,用於製作特定的ArcView 應用程式。Avenue是一種WI NDOWS環境下的面向對象的程式設計語言,ArcView 的系統功能就是由它編程實現的。ト魏我桓鮎葾venue語言開發的Windows應用程式都有一個對應的Project,Project由一些Doc ument和Script組成,而Document又由Document Window 和Document GUI 組成,所以Avenue 應用程式的模型如圖1所示。圖1中Document是人機交流的唯一途徑,根據其功能又可分為 V iew, Table, Chart, Layout和 Script Editor五種,Document GUI 是對應於某一Document 的圖形用戶界面,由 Menu bar,Button bar 和Tool bar組成,分別用來對應不同的功能。圖1Avenue應用程式模型ノ頤竊誥嚀蹇發桌面地理信息系統ArcView 時,發現現有的ArcVie w 系統功能並不能完全滿足要求,必須對ArcView 系統重新改造,增加新的功能。由於ArcV iew 的開發語言是Avenue,它的開發效率低,所以在實際開發中既要充分利用ArcView 自身 強大的地圖管理功能,又要利用高級語言(如VB5)在快速開發套用方面的長處,兩者相互 結合,將取得良好效果。3. ArcView和VB5應用程式通訊方法プ鍆ㄓ玫腎PC(interprocess communication,IPC)方法是DDE、OLE和對動態聯接庫的外部 函式調用、檔案訪問以及WINDOWS剪貼簿。上述方法都能使不同的WINDOWS應用程式之間彼此 通信。其中DDE方法原先是作為一種基於訊息的協定在WINDOWS(3.x之前)中實現的,用來在 不同的WINDOWS應用程式之間交換信息。隨著WINDOWS3.0的發布,DDE在實際的應用程式開發 中得到大量套用,這是通過使DDE服務能夠利用應用程式編程接口(API)調用DDE管理庫來 完成的。ArcView是通過DDE和DLL方法實現與外部應用程式通信。本文通過一個實例來詳細 介紹DDE功能的使用。在實際套用中,ArcView既可作Clint,又可作Server,來實現套用程 序之間的通訊,包括傳送或接受數據,執行請求,返回分析結果。通過使用DDE方法,可以 克服ArcView本身開發語言的落後性,達到充分發揮ArcView自身強大的地圖管理功能,又創 造出符合時代特色的桌面地理信息系統。實踐證明,採用ArcView和VB5應用程式通訊進行系 統開發是一種有效的桌面地理信息系統開發方法。4. 實例分析ピ詒糾中,VB5 應用程式向ArcView 發出Avenue 請求以建立新的文檔如views 和layouts, 而且應用程式詢問ArcView 以得到當前激活的文檔。此時VB5 應用程式是目標,而ArcView 是源。ト綣已安裝VB5 和ArcView,按照下面步驟建立應用程式:(1) 啟動VB5,建立預設窗體Form1。(2) 在Form1上根據下列屬性建立控制項,然後放大窗體以便整齊地排列控制項。ObjectProperty SettingText BoxNametxtDDECommand ButtonCaptionSend RequestNamecmdRequestCombo BoxNamecboDocType(3) 在Form1的說明部分增加下面代碼:Const NONE=0, MANUAL=2Sub Startup()Dim tConst DDE_NO_APP=282'this will start ArcView if it isn't runningOn Error GoTo FireUptxtDDE.LinkMode=NONE'清除DDE連結txtDDE.LinkTopic="ArcView|System"'建立對話txtDDE.LinkMode=MANUAL'建立人工連結Exit SubFireUp:If Err=DDENOAPP ThenChDir "C:\ARCVIEW2\BIN"t=Shell("arcview",1)t=DoEvents()ResumeElseMsgBox "Unknown error."StopEnd IfEnd Sub(4) 在FormLoad 事件中增加下列代碼:Sub FormLoad()cboDocType.text=""cboDocType.AddItem "View"cboDocType.AddItem "Layout"cboDocType.AddItem "SEd"Startup'調startup 程式End Sub(5) 在FormUnload 事件中增加下列代碼:Sub FormUnload (Cancel As Integer)txtDDE.LinkMode = NONE'關閉DDE 對話End Sub(6) 在cboDocTypeClick事件中增加下列代碼:Sub cboDocTypeClick()cmd="av.GetProject.AddDoc("&cboDocType&".make) av.GetProject.GetActive.Get(0).Ge tWin.Open"txtDDE.LinkExecute cmdEnd Sub(7) 在cmdRequestClick事件中增加下列代碼:Sub cmdRequestClick ()'LinkItem是能夠返回值的Avenue scripttxtDDE.LinkItem = "av.GetActiveDoc.GetName"txtDDE.LinkRequestEnd Sub(8) 存儲VB5工程並編譯成EXE 檔案。ハ衷詡純稍誦蠽isual Basic應用程式。如果ArcView 沒有運行,應用程式就 會激活它。從dropdown combo box 選擇一個文檔名以便在ArcView中建立一個文檔。要訪問 當前激活的文檔就敲擊Send Request button,在文本框裡將會顯示文檔名。本例所有的DDE 通訊都是通過文本框實現的。在VB5中, 任何text box, picture box和label在對話中都可 作為目標,同時任何窗體可看作源。ヒ隕鮮道的運行環境為:Visual Basic 4.0以上,ArcView2.1以上,Windows3.1以上。げ慰嘉南1、邊馥苓主編,《地理信息系統原理和方法》,北京:測繪出版社,1996 年8月。2、郭達志、盛業華等編著,《地理信息系統基礎與套用》,煤炭工業出版社,1997 年5月。3、(美國) Mike McKelvy & Ronald Martinsen 著,《Visual Basic 5開發使用手 冊》,機械工業出版社,1998年4月。