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