資料介紹
地理信息系統(GIS)是近年來興起的一門新興技術,由于它能夠直觀有效地利用和表達地理信息數據,滿足了信息綜合管理和數據服務可視化的需要,因此在地質勘測、城市規劃、交通管理、遙控遙測等許多領域獲得了普遍應用。目前國內流行的基礎GIS軟件主要有MapInfo、ARC/INFO、MGE等幾種。為支持應用系統的開發,多數通用GIS系統都提供了專用的開發工具和編程語言,但與通用的編程工具如Visual C++、Visual Basic等相比,其功能十分有限且不夠靈活。如果在設計應用GIS系統時采用嵌入式技術,則既能夠發揮通用編程工具的強大程序開發能力,又能充分利用現有GIS系統的豐富功能,從而給開發工作帶來極大的方便。
1 嵌入式開發技術簡介
所謂嵌入式開發技術是指以在應用程序中嵌入由其他程序所提供的數據或對象的方式來獲得特定功能的程序設計方法。由于這種嵌入是通過窗口嵌套技術和程序進程間的數據通信技術來實現的,可以使兩個不同的程序完全“無縫”地集成到一起,因此所開發出的應用程序與普通程序看起來并沒有什么區別。使用嵌入式技術的GIS應用程序與為其提供支持的GIS系統之間是一種并行的同時運行的關系,在功能上不受任何限制,可以象正常程序一樣使用操作系統所提供的一切資源。絕大多數的GIS系統和通用編程工具都對嵌入式開發提供支持。本文將以目前流行的MapInfo地理信息系統和Visual Basic 5.0程序設計語言為例,系統地介紹利用嵌入式技術開發GIS應用軟件的方法。
MapInfo是一個功能強大的通用地理信息和空間數據管理系統,能提供豐富的地理信息數據編輯轉換、分析處理、瀏覽顯示、查詢檢索等功能,是目前應用最為廣泛的GIS基礎平臺之一。為了支持二次開發,MapInfo提供了簡單易用的MapBasic語言,并在4.0以后的版本中全面支持嵌入式技術。在應用程序中嵌入MapInfo系統所使用的主要方法有OLE自動化、回應方法和動態數據交換三種。下面分別對這些方法作進一步的介紹。
2 OLE自動化技術
OLE自動化技術是在微軟公司的對象鏈接和嵌入(OLE)技術和組件對象模型技術(COM)基礎上發展起來的一種程序設計標準,它允許一個程序模塊控制其他程序模塊的執行。換句話說,支持自動化的程序模塊的行為是可以通過編程來控制的,這種控制通過應用程序對自動化支持程序所提供的對象的訪問來完成。OLE自動化實質上是兩個不同的應用程序之間以客戶機/服務器方式進行的動態信息交換過程,作為服務器一方的應用程序提供一組具有特定方法和屬性的對象模型,客戶程序則使用標準的通信接口對其進行訪問和控制。MapInfo所提供的OLE自動化對象模型如圖1所示。
從圖1可以看出,MapInfo提供的OLE自動化對象體系具有很明顯的層次結構。最高層是Application對象即MapInfo系統本身的運行實例,其下是MapBasic應用程序對象集合MBApplications及其公共變量對象集合MBGlobals。所有的對象和對象集合都有相應的方法和屬性,應用程序可以調用這些方法和屬性來實現特定的功能。以VB5.0為例,要想在程序中嵌入MapInfo對象,首先要聲明一個ActiveX對象變量并用其創建MapInfo運行實例,方法如下:
Public MapInfo As Object
Set MapInfo = CreateObject(″MapInfo.Application″)
上述代碼將使MapInfo系統啟動并自動在后臺運行。與獨立運行時相比,作為自動化對象的MapInfo系統沒有自己的啟動窗體和用戶界面(菜單、工具條等),其行為完全由調用它的應用程序控制。通過訪問Application對象的屬性和方法可以獲得MapInfo系統的絕大多數功能。常用的方法主要有三種:Do方法將一個代表MapBasic語句的字符串傳遞給MapInfo系統執行;Eval方法將一個代表MapBasic表達式的字符串傳遞給MapInfo系統并返回其值;RunMenuCommand方法通知MapInfo系統執行指定的菜單功能項。如果需要使用MapInfo的地圖顯示功能,可以把其地圖窗口嵌入到指定的窗體或圖形控件中。例如,下面的代碼可以使MapInfo的地圖窗口顯示在應用程序窗體2的Picture控件中:
MapInfo.Do ″Set Application Window″ & Form2.Picture1.hwnd
MapInfo.Do″Set Next Document Parent″ & Form2.Picture1.hwnd & ″Style 1″
在地圖窗口嵌入后,應用程序還可以象對待正常窗口一樣對其進行放大、縮小和移動操作。同樣的方法也可以用來嵌入MapInfo系統所能提供的其他窗口,如圖例窗口、布局窗口、信息窗口和數據瀏覽窗口等。
在進行一些比較復雜的地理信息操作時,僅僅使用Do方法一條條地發送MapBasic指令顯然是不方便的,應當采用編寫Mapbasic程序的方式處理,并把執行結果返回給應用程序。這樣能夠避免在應用程序和MapInfo系統之間過于頻繁的數據交換,從而節省了系統資源、提高了運行效率。調用MapBasic程序的代碼如下:
MapBasic.Do ″Run Application″ & Mbfilename
要實現對MapBasic程序的控制并從中獲取數據,可以使用MBApplications對象集合。把MBApplications稱作對象集合是因為它代表了當前所有在MapInfo系統中運行的MapBasic程序。與Application對象的使用方法相同,我們首先要創建MBApplications對象,然后再訪問其屬性和方法。如果要訪問一個具體的MapBasic程序對象,可以在集合對象后加上序號來指定。下面的代碼通過訪問MBApplication對象集合把當前正在運行的所有MapBasic程序名稱返回給數組Mbfilename
1 嵌入式開發技術簡介
所謂嵌入式開發技術是指以在應用程序中嵌入由其他程序所提供的數據或對象的方式來獲得特定功能的程序設計方法。由于這種嵌入是通過窗口嵌套技術和程序進程間的數據通信技術來實現的,可以使兩個不同的程序完全“無縫”地集成到一起,因此所開發出的應用程序與普通程序看起來并沒有什么區別。使用嵌入式技術的GIS應用程序與為其提供支持的GIS系統之間是一種并行的同時運行的關系,在功能上不受任何限制,可以象正常程序一樣使用操作系統所提供的一切資源。絕大多數的GIS系統和通用編程工具都對嵌入式開發提供支持。本文將以目前流行的MapInfo地理信息系統和Visual Basic 5.0程序設計語言為例,系統地介紹利用嵌入式技術開發GIS應用軟件的方法。
MapInfo是一個功能強大的通用地理信息和空間數據管理系統,能提供豐富的地理信息數據編輯轉換、分析處理、瀏覽顯示、查詢檢索等功能,是目前應用最為廣泛的GIS基礎平臺之一。為了支持二次開發,MapInfo提供了簡單易用的MapBasic語言,并在4.0以后的版本中全面支持嵌入式技術。在應用程序中嵌入MapInfo系統所使用的主要方法有OLE自動化、回應方法和動態數據交換三種。下面分別對這些方法作進一步的介紹。
2 OLE自動化技術
OLE自動化技術是在微軟公司的對象鏈接和嵌入(OLE)技術和組件對象模型技術(COM)基礎上發展起來的一種程序設計標準,它允許一個程序模塊控制其他程序模塊的執行。換句話說,支持自動化的程序模塊的行為是可以通過編程來控制的,這種控制通過應用程序對自動化支持程序所提供的對象的訪問來完成。OLE自動化實質上是兩個不同的應用程序之間以客戶機/服務器方式進行的動態信息交換過程,作為服務器一方的應用程序提供一組具有特定方法和屬性的對象模型,客戶程序則使用標準的通信接口對其進行訪問和控制。MapInfo所提供的OLE自動化對象模型如圖1所示。
從圖1可以看出,MapInfo提供的OLE自動化對象體系具有很明顯的層次結構。最高層是Application對象即MapInfo系統本身的運行實例,其下是MapBasic應用程序對象集合MBApplications及其公共變量對象集合MBGlobals。所有的對象和對象集合都有相應的方法和屬性,應用程序可以調用這些方法和屬性來實現特定的功能。以VB5.0為例,要想在程序中嵌入MapInfo對象,首先要聲明一個ActiveX對象變量并用其創建MapInfo運行實例,方法如下:
Public MapInfo As Object
Set MapInfo = CreateObject(″MapInfo.Application″)
上述代碼將使MapInfo系統啟動并自動在后臺運行。與獨立運行時相比,作為自動化對象的MapInfo系統沒有自己的啟動窗體和用戶界面(菜單、工具條等),其行為完全由調用它的應用程序控制。通過訪問Application對象的屬性和方法可以獲得MapInfo系統的絕大多數功能。常用的方法主要有三種:Do方法將一個代表MapBasic語句的字符串傳遞給MapInfo系統執行;Eval方法將一個代表MapBasic表達式的字符串傳遞給MapInfo系統并返回其值;RunMenuCommand方法通知MapInfo系統執行指定的菜單功能項。如果需要使用MapInfo的地圖顯示功能,可以把其地圖窗口嵌入到指定的窗體或圖形控件中。例如,下面的代碼可以使MapInfo的地圖窗口顯示在應用程序窗體2的Picture控件中:
MapInfo.Do ″Set Application Window″ & Form2.Picture1.hwnd
MapInfo.Do″Set Next Document Parent″ & Form2.Picture1.hwnd & ″Style 1″
在地圖窗口嵌入后,應用程序還可以象對待正常窗口一樣對其進行放大、縮小和移動操作。同樣的方法也可以用來嵌入MapInfo系統所能提供的其他窗口,如圖例窗口、布局窗口、信息窗口和數據瀏覽窗口等。
在進行一些比較復雜的地理信息操作時,僅僅使用Do方法一條條地發送MapBasic指令顯然是不方便的,應當采用編寫Mapbasic程序的方式處理,并把執行結果返回給應用程序。這樣能夠避免在應用程序和MapInfo系統之間過于頻繁的數據交換,從而節省了系統資源、提高了運行效率。調用MapBasic程序的代碼如下:
MapBasic.Do ″Run Application″ & Mbfilename
要實現對MapBasic程序的控制并從中獲取數據,可以使用MBApplications對象集合。把MBApplications稱作對象集合是因為它代表了當前所有在MapInfo系統中運行的MapBasic程序。與Application對象的使用方法相同,我們首先要創建MBApplications對象,然后再訪問其屬性和方法。如果要訪問一個具體的MapBasic程序對象,可以在集合對象后加上序號來指定。下面的代碼通過訪問MBApplication對象集合把當前正在運行的所有MapBasic程序名稱返回給數組Mbfilename
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 數字化地理信息系統Mapinfo指導手冊 0次下載
- 基于LBS的嵌入式地理信息系統引擎的開發
- 四色算法在MapObjects地理信息系統中有什么樣的應用 15次下載
- 基于地理信息系統的配電網管理系統 8次下載
- 森林防火地理信息系統設計與實現顏偉 0次下載
- 通信資源地理信息系統 23次下載
- 基于SuperMap的地理信息系統課程教學設計
- 基于J2ME的嵌入式GIS系統的研究與實現
- 電子政務地理信息系統綜合平臺研究
- 報刊業地理信息系統設計與實現
- COM與WEB技術在地理信息系統中的應用
- 基于自定義協議的網絡地理信息系統
- 江蘇油田地理信息系統的設計與實現
- 城市公交地理信息系統中的線路規劃模型
- 地理信息系統的幾個應用
- 嵌入式開發必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品 117次閱讀
- STM32嵌入式開發中的RTOS,你用過哪些? 2248次閱讀
- 地理信息系統在有線電視網絡中的應用研究 2512次閱讀
- 嵌入式開發的產品有哪些_嵌入式開發的流程 1.1w次閱讀
- 基于Mac上做嵌入式開發簡析 4001次閱讀
- 解析嵌入式開發中的一些硬件相關概念 945次閱讀
- 在Nios II平臺下搭建RTEMS嵌入式開發簡析 1589次閱讀
- 嵌入式開發好學嗎_嵌入式開發職業發展方向是什么 9207次閱讀
- 什么是嵌入式開發板_學嵌入式用什么開發板 7206次閱讀
- 嵌入式開發和單片機開發有什么區別和聯系 3.6w次閱讀
- 嵌入式C實現延時程序的不同變量的區別 幾種Linux嵌入式開發環境的簡單介紹 1673次閱讀
- 嵌入式開發工具有哪些_五款嵌入式開發工具推薦 4w次閱讀
- 學嵌入式開發入門_學嵌入式開發需要看哪些書籍 2.5w次閱讀
- 嵌入式開發環境的搭建 8548次閱讀
- 嵌入式開發就業前景分析_嵌入式領域的職業發展方向 1.8w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多