實現桌面地理信息系統和VB5應用程序之間的通訊
2013-07-09 15:22:13 來源: 測繪論壇 作者:
摘要:本文簡要介紹桌面地理信息系統的概念,通過分析桌面地理信息系統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.LinkExecute 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、應用程序通訊
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.LinkExecute 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月。
聲明①:文章部分內容來源互聯網,如有侵權請聯系刪除,郵箱 cehui8@qq.com
聲明②:中測網登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述,文章內容僅供參考。
加群提示:我們創建了全國32個省份的地方測繪群,旨在打造本地測繪同行交流圈,有需要請聯系管理員測小量(微信 cexiaoliang)進群,一人最多只能進入一個省份群,中介人員勿擾