日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

地理信息系統(tǒng)的嵌入式開發(fā)技術(shù)研究

出處:電子技術(shù)應(yīng)用 發(fā)布于:2011-09-05 09:38:58

  地理信息系統(tǒng)(GIS)是近年來興起的一門新興技術(shù),它能夠直觀有效地利用和表達地理信息數(shù)據(jù),滿足了信息綜合管理和數(shù)據(jù)服務(wù)可視化的需要,在地質(zhì)勘測、交通管理、遙控遙測等領(lǐng)域被廣泛應(yīng)用。應(yīng)用型地理信息的開始通常主要有三種方法:⑴獨立開發(fā);⑵單獨二次開發(fā);⑶組件式GIS開發(fā)。隨著計算機技術(shù)的發(fā)展,組件式GIS成為當代GIS的重要發(fā)展方向。如果設(shè)計開發(fā)GIS系統(tǒng)時采用嵌入式技術(shù),既能夠發(fā)揮通用編輯工具的強大程序開發(fā)能力,又能充分利用現(xiàn)有GIS系統(tǒng)的豐富功能,從而給開發(fā)工作帶來極大的方便。

  1 嵌入式開發(fā)技術(shù)簡介

  嵌入式開發(fā)技術(shù)是指以在應(yīng)用程序中嵌入由其他程序所提供的數(shù)據(jù)或?qū)ο蟮姆绞絹慝@得特定功能的程序設(shè)計方法。  嵌入式是當前發(fā)展快、應(yīng)用廣、有發(fā)展前景的信息技術(shù)應(yīng)用領(lǐng)域之一。它具有以下特點:

  ◆ 它是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟,硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、體積、功耗等要求的專用計算機系統(tǒng)。

  ◆ 嵌入式系統(tǒng)與計算機系統(tǒng)有著明顯的區(qū)別。

  ◆ 它由嵌入式處理器,嵌入式軟件,嵌入式應(yīng)用軟件組成。

  ◆ 隨著微電子技術(shù)與計算機技術(shù)的發(fā)展微控制芯片的功能越來越強大,而嵌入式設(shè)備也逐漸出現(xiàn)在人們的日常生活中。

     本文將以目前流行的MapInfo地理信息系統(tǒng)和Visual Basic 5.0程序設(shè)計語言為例,系統(tǒng)地介紹利用嵌入式技術(shù)開發(fā)GIS應(yīng)用軟件的方法。

  MapInfo是一個功能強大的通用地理信息和空間數(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ù)交換三種。

  2 OLE自動化技術(shù)

  OLE自動化技術(shù)是在微軟公司的對象鏈接和嵌入(OLE)技術(shù)和組件對象模型技術(shù)(COM)基礎(chǔ)上發(fā)展起來的一種程序設(shè)計標準,它允許一個程序模塊控制其他程序模塊的執(zhí)行。換句話說,支持自動化的程序模塊的行為是可以通過編程來控制的,這種控制通過應(yīng)用程序?qū)ψ詣踊С殖绦蛩峁┑膶ο蟮脑L問來完成。OLE自動化實質(zhì)上是兩個不同的應(yīng)用程序之間以客房機/服務(wù)器方式進行的動態(tài)信息交換過程,作為服務(wù)器一方的應(yīng)用程序提供一組具有特定方法和屬性的對象模型,客房程序則使用標準的通信接口對其進行訪問和控制。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表達式的字符串傳遞給MapInfo系統(tǒng)并返回其值:RunMenuCommand方法通知MapInfo系統(tǒng)執(zhí)行指定的菜單功能項。如果需要使用MapInfo的地圖顯示功能,可以把其他圖窗口嵌入到指定的窗體或圖形控件中。例如,下面的代碼可以使MapInfo的地圖窗口顯示在應(yīng)用程序窗體2的Picture控件中:

  MapInfo.Do"Set Application Window"& Form2. Picture 1.hwnd

  MapInfo.Do"Set Next Docment Parent"& Form2. Picture1.hwnd &"Style 1"

  在地圖窗口嵌入后,應(yīng)用程序還可以象對待正常窗口一樣對其進行放大、縮小和移動操作。同樣的方法也可以用來嵌入MapInfo系統(tǒng)所能提供的其他,如圖例窗口、布局窗口、信息窗口和數(shù)據(jù)瀏覽窗口等。

  在進行一些比較復雜的地理信息操作時,僅僅使用Do方法一條條地發(fā)送MapBasic指令顯示是不方便的,應(yī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稱作對象集合是因為它代表了當前所有在MapInfo系統(tǒng)中運行的MapBasic程序。與Application對象的使用方法相同,我們首先要創(chuàng)建MBApplications對象,然后再訪問其屬性和方法。如果要訪問一個具體的MapBasic程序?qū)ο螅梢栽诩蠈ο蠛蠹由闲蛱杹碇付āO旅娴拇a通過訪問MBApplication對象集合把當前正在運行的所有MapBasic程序名稱返回給數(shù)組Mbfilename():

  Dim MbApplist As Object

  Set MbApplist=MapInfo.MBApplications

  i=1

  Do While i <=MbApplist.Count

  Mbfilename(i)=MbApplist(i)。Name

  i=i+1

  Loop

  MBApplications對象集合的屬性是只讀的,其值不能由應(yīng)用程序改變。如果要對某一MapBaisc程序?qū)ο筮M行控制,必須使用其Do方法。MapBasic程序?qū)o方法的響應(yīng)是通過執(zhí)行RemoteMsgHandler()過程來完成的。在Do方法被調(diào)用的,MapInfo會自動執(zhí)行指定程序的RemoteMsgHandler()過程,這時可以用CommandInfo()函數(shù)來獲得Do方法的調(diào)用參數(shù),加以判斷后再轉(zhuǎn)到相應(yīng)的執(zhí)行代碼。類似的,要從MapBasic程序中返回數(shù)據(jù)可以使用其Eval方法,而程序返回什么值由其RemoteQueryHandler()函數(shù)中的代碼決定。對于在MapBasic程序中使用的公共變量,應(yīng)用程序也可以通過MBGlobals對象集合來直接訪問。比如要將序號為1的MapBasic程序中的公共變量global 1的值加1,可以使用下面的代碼:

  Dim globinfo As Object,Oldval As Integer

  Set globinfo=Mapinfo.MBApplications(1)。MBGlobals

  Oldval=globinfo("global 1")。Value

  globinfo("global 1")。Value-Oldval+1

  通過OLE自動化技術(shù),應(yīng)用程序可以使用MapInfo系統(tǒng)幾乎所有的功能。不過,由于采用了客戶機/服務(wù)器的運行模式,在OLE自動化方式下應(yīng)用程序總是處于主動的地位,而MapInfo系統(tǒng)只能作為被動的服務(wù)提供方。這樣在實際應(yīng)用中,一些需要由MapInfo主動提供信息的情況就變得很難處理了。因此僅使用OLE自動化技術(shù)還不能完全滿足應(yīng)用需要,必須用其他方法來補充其功能。采用下面要介紹的CallBack(回應(yīng))方法可以很好地解決這一問題。

  3 回應(yīng)方法

  為完成某些功能,有時我們要允許用戶對以自動化方式嵌入應(yīng)用程序中的MapInfo系統(tǒng)進行直接操作。

  在MapInfo系統(tǒng)中,回應(yīng)方法通過使用OLE技術(shù)實現(xiàn)。引發(fā)回應(yīng)信息的事件主要有三類:地圖窗口狀態(tài)的改變、特定功能控制(菜單、按鈕、工具條)的選擇以及在繪圖對象選擇等特定狀態(tài)下地圖窗口內(nèi)的用戶輸入事件。要在應(yīng)用程序中使用回應(yīng)方法,首先要創(chuàng)建一個專門負責回應(yīng)信息接收和處理的OLE對象類(class),然后在其中定義不同的方法以處理不同類型的回應(yīng)信息。以獲取地圖窗口狀態(tài)變化的回應(yīng)信息為例,首先在VB工程中添加一個自定義類MIResponder,并在其中添加如下過程:

  Public Sub WindowContertsChanged (RyVal CommandInfoStr As Integer)

  然后創(chuàng)建接收CallBack信息的OLE類對象theResponder:

  Set theResponder=New MIResponder

  MapInfo.SetCallback theResponder

  則當某一地圖窗口狀態(tài)因用戶操作而改變時,theResponder對象的WindowContertsChanged方法就會因MapInfo系統(tǒng)的調(diào)用而自動執(zhí)行。此時的CommandInfoStr參數(shù)就是MapInfo傳來的一個整數(shù)值即通知窗口狀態(tài)改變的回應(yīng)信息,代表發(fā)生變化的地圖窗口的標識號,而WindowChanged方法中的代碼就可以利用這個參數(shù)從MapInfo中獲取詳細的信息并作出處理。

  在絕大多數(shù)情況下,使用OLE自動化技術(shù)和回應(yīng)方法已經(jīng)可以實現(xiàn)MapInfo系統(tǒng)與應(yīng)用程序的完美集成。在OLE自動化方式下,作為服務(wù)器程序的MapInfo系統(tǒng)只能被動接受應(yīng)用程序的操控,即使用回應(yīng)方式也只是做到了主動通知,真正的數(shù)據(jù)交換還是必須由應(yīng)用程序控制完成。為了讓MapBasic程序在自動化方式下取得數(shù)據(jù)交換的主動權(quán),可以采用標準的進程間通信方式:運態(tài)數(shù)據(jù)交換(DDE)技術(shù)。

  4 動態(tài)數(shù)據(jù)交換技術(shù)

  DDE是Windows環(huán)境下不同應(yīng)用程序之間通過主動鏈接完成數(shù)據(jù)交換的協(xié)議標準,它可以讓兩個應(yīng)用程序通過一條即時建立的數(shù)據(jù)通道進行動態(tài)實時的信息傳遞。MapInfo系統(tǒng)和使用VB開發(fā)的應(yīng)用程序都支持DDE功能,并且定義了一套會話主題供其他程序使用。

  要實現(xiàn)DDE會話,應(yīng)用程序首先要向Windows操作系統(tǒng)申請建立數(shù)據(jù)通道,并提供會話對象的名稱和主題作為參數(shù)。操作系統(tǒng)隨后將這一請求轉(zhuǎn)發(fā)合擁有該名稱和主題的應(yīng)用程序。在得到響應(yīng)后就在內(nèi)存中建立一個數(shù)據(jù)交換通道,并把標識返回給會話雙方。數(shù)據(jù)通道建立后,會話雙方就可以互相傳遞數(shù)據(jù)項完成信息交換。只要服務(wù)器程序支持,在一個數(shù)據(jù)通道內(nèi)可以傳遞多個數(shù)據(jù)項。在數(shù)據(jù)交換完成后,客戶程序應(yīng)當主動提出內(nèi)存資源。以MapBasic程序向VB應(yīng)用程序申請數(shù)據(jù)交換服務(wù)的DDE會話為例,建立數(shù)據(jù)交換通道的程序代碼如下:

  Dim channelID As Integer

  ChannelID=DDEInitiate("vbappname","form 1")

  其中vbappname是VB應(yīng)用程序的名稱,form1是其擁有的一個支持DDE功能的窗體。由于VB對DDE的支持是以控件為單位,因此其提供的DDE會話數(shù)據(jù)項就是擁有所請求數(shù)據(jù)的控件,而該控制所在的窗體就是會話主題。一旦與窗體建立了DDE數(shù)據(jù)通道,就可以與該窗體中所有支持DDE功能的控件進行數(shù)據(jù)交換。在MapBasic程序中,如果要從數(shù)據(jù)項獲取數(shù)據(jù)可以使用函數(shù)DDERequest$(),發(fā)送數(shù)據(jù)則使用DDEPoke語句。例如,下面的代碼將讀取VB文本控件Text1的值,隨后返回一個新的字符串值:

  Dim Oldtext As string,Newtext as string

  Oldtext=DDERequest$(ChannelID,"text1")

  Newtext=Oldtext &"newstring"

  DDEPoke ChannelID,"text1",Newtext

  數(shù)據(jù)交換結(jié)束后,可以用DDETerminate語句來終止對話:

  DDETerminate ChannelID

  對于同時有多個DDE會話的情況,也可以用DDETerminateAll來關(guān)閉所有的會話。

    本文以MapInfo系統(tǒng)和VB5.0為例,詳細介紹了三種主要的嵌入式集成設(shè)計技術(shù):OLE自動化、回應(yīng)方法和動態(tài)數(shù)據(jù)交換。這些方法已經(jīng)被應(yīng)用在智能交通調(diào)度系統(tǒng)、車輛監(jiān)控系統(tǒng)、油田綜合信息管理系統(tǒng)等多項GIS工程項目中,實踐證明效果良好。

  5 嵌入式GIS的應(yīng)用

  嵌入式GIS開發(fā)在測繪、智能交通(ITS)、海事、國防、公安等領(lǐng)域都有無限廣闊的應(yīng)用前景,可廣泛應(yīng)用于軍事、野外測繪、醫(yī)療、汽車導航等領(lǐng)域;個人汽車導航和PDA(或手機)定位服務(wù)(LBS)的出現(xiàn)與發(fā)展更是將嵌入式地理信息技術(shù)深入到每個人的日常生活。目前主要的應(yīng)用領(lǐng)域有:

  (1)智能交通(交通信息管理系統(tǒng)、車輛導航系統(tǒng)等大量嵌入式GIS軟件在交通部門的應(yīng)用將大大提高交通系統(tǒng)的智能化程度);

  (2)野外數(shù)據(jù)采集和各種普查(公路普查、環(huán)保普查等);

  (3)軍事國防領(lǐng)域(步兵裝備、裝甲、坦克、情報收集等);

  (4)智能汽車(集通信、信息、導航、地圖、娛樂和各類安全電子系統(tǒng)于一體的智能汽車將是未來汽車的發(fā)展方向);

  (5)個人用戶(結(jié)合手機和個人PDA的應(yīng)用,將提供實時的地圖信息和出行參考,大大提高人們的生活質(zhì)量)。

  隨著定位手段的多樣性(美國GPS 、俄羅斯的GLONASS、歐盟的Galileo、中國的"北斗"、基站)、通信網(wǎng)路的廣泛性(GPRS、CDMA、CDPD等無線公網(wǎng))、用戶終端的廣泛性(手機、PDA)以及巨大市場潛力的無限性(以我國兩億手機用戶一個月5元的地理信息服務(wù),一年將是120億的市場),我們可以看到嵌入式GIS的前景廣闊,由于嵌入式GIS市場巨大,因此競爭非常激烈,國外的GIS巨頭紛紛投入巨資開發(fā)自己的嵌入式GIS產(chǎn)品,國內(nèi)也有近十家企業(yè)進行相關(guān)產(chǎn)品開發(fā)工作。


  
關(guān)鍵詞:嵌入式

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!