- 相關推薦
實現桌面地理信息系統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介紹?現在常用的ArcView2.1以上英文版是直觀性較好的桌面地理信息系統。它集空間圖形、關系 數據庫、統計圖形、空間分析、網絡通訊、面向對象的程序設計于一體,圖形用戶界面直觀 。而且它有自己的開發工具即Avenue,用于制作特定的ArcView 應用程序。Avenue是一種WI NDOWS環境下的面向對象的程序設計語言,ArcView 的系統功能就是由它編程實現的。?任何一個由Avenue語言開發的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應用程序通訊方法?最通用的IPC(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 Setting?
Text BoxNametxtDDE?
Command ButtonCaptionSend Request?
NamecmdRequest?
Combo BoxNamecboDocType?
(3) 在Form1的說明部分增加下面代碼:?Const NONE=0, MANUAL=2?
Sub Startup()?
Dim t?
Const DDE_NO_APP=282?
'this will start ArcView if it isn't running?
On Error GoTo FireUp?
txtDDE.LinkMode=NONE'清除DDE鏈接?txtDDE.LinkTopic="ArcView|System"'建立對話?txtDDE.LinkMode=MANUAL'建立人工鏈接?Exit Sub?
FireUp:?
If Err=DDENOAPP Then?
ChDir "C:\ARCVIEW2\BIN"?t=Shell("arcview",1)?
t=DoEvents()?
Resume?
Else?
MsgBox "Unknown error."?
Stop?
End If?
End 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.L
inkExecute cmd?
End Sub?
(7) 在cmdRequestClick事件中增加下列代碼:?Sub cmdRequestClick ()?
'LinkItem是能夠返回值的Avenue script?txtDDE.LinkItem = "av.GetActiveDoc.GetName"?
txtDDE.LinkRequest?
End Sub?
(8) 存儲VB5工程并編譯成EXE 文件。?現在即可運行Visual 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月
【實現桌面地理信息系統ArcView和VB5應用程序之間的通訊】相關文章:
實現桌面地理信息系統ArcView和VB5應用程序之間的通訊08-06
應用程序指示圖標的實現方法研究08-06
用Borland C++3.1實現外設與Windows應用程序實時通信08-06
FoxPro for Windows 遠程撥號通訊功能的設計與實現08-06
IIC總線通訊接口器件的CPLD實現08-06