• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于海洋石油XGIS平臺(tái)組件式開發(fā)接口的研究與應(yīng)用

      2016-06-06 22:59王文興李為沖岳翔楊建欽
      電腦知識(shí)與技術(shù) 2016年6期
      關(guān)鍵詞:接口

      王文興++李為沖++岳翔++楊建欽

      摘要:近年來(lái),海洋石油建成了服務(wù)石油專業(yè)的公共GIS平臺(tái),并且在多個(gè)石油專業(yè)系統(tǒng)中獲得推廣使用。本文主要介紹了海洋石油第二代XGIS的主要架構(gòu)、組件式開發(fā)技術(shù)及系統(tǒng)中使用到的接口技術(shù)。設(shè)計(jì)并實(shí)現(xiàn)了GIS交互和繪制功能接口的開發(fā)工作。

      關(guān)鍵詞:GIS地理信息系統(tǒng);組件式開發(fā);接口;ActiveX;DLL技術(shù)

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)06-0246-02

      近幾年來(lái),組件式GIS發(fā)展為GIS的前沿技術(shù),并逐漸成為主流趨勢(shì)。目前,已經(jīng)商業(yè)化的組件式GIS平臺(tái)有MapObjects、ArcObjects、GeoMedia等[1]。GIS組件之間以及GIS組件與其他組件之間可以通過(guò)標(biāo)準(zhǔn)的通信接口實(shí)現(xiàn)交互,這種交互甚至可以跨計(jì)算機(jī)實(shí)現(xiàn)??傇旱腉IS平臺(tái)就是基于此架構(gòu)自主研發(fā)了組件式XGIS系統(tǒng)。

      1 GIS系統(tǒng)的基本框架結(jié)構(gòu)

      XGIS采用的是MVC(Model View Controller)系統(tǒng)設(shè)計(jì)模式在XGIS中體現(xiàn)為三個(gè)具體的層次組成:可視化組件組、功能組件組和數(shù)據(jù)訪問(wèn)組件組。對(duì)用戶來(lái)說(shuō),功能組件組是可以定制的[2]。

      1.1 XGIS系統(tǒng)組成

      圖1是XGIS的系統(tǒng)架構(gòu),包括客戶端和服務(wù)器端兩部分。客戶端能過(guò)瀏覽器對(duì)XGIS進(jìn)行訪問(wèn)。在服務(wù)器端,底層通過(guò)數(shù)據(jù)庫(kù)做數(shù)據(jù)支持,之上通過(guò)WebSvrLock和WebSvrBin(提供WebService服務(wù))來(lái)驗(yàn)證用戶相關(guān)信息和提供相應(yīng)的下載服務(wù)。

      圖1 XGIS整體架構(gòu)圖

      核心程序是XGIS.OCX主程序,負(fù)責(zé)整個(gè)GIS程序DLL組件的加載工作等。

      1.2主要技術(shù)

      為了減少網(wǎng)絡(luò)中的傳輸負(fù)載,采用了動(dòng)態(tài)加載技術(shù),軟件核心模塊采用ActiveX形式,使得在互聯(lián)網(wǎng)環(huán)境下實(shí)現(xiàn)單機(jī)和C/S應(yīng)用的功能成為可能。在ActiveX模塊內(nèi)部,充分利用各種網(wǎng)絡(luò)通訊協(xié)議(如FTP、HTTP等),與服務(wù)器端的Web Service服務(wù)程序一起,實(shí)現(xiàn)地震等數(shù)據(jù)的高速傳輸,利用c++語(yǔ)言的高效性實(shí)現(xiàn)圖形的繪制[3]。

      功能模塊采用了靜態(tài)連接庫(kù)(LIB)和動(dòng)態(tài)鏈接(DLL)相結(jié)合的方式,主要的功能使用LIB的方式,擴(kuò)展功能采用動(dòng)態(tài)鏈接(DLL)的方式,前臺(tái)模塊與后臺(tái)數(shù)據(jù)的交換采用大數(shù)據(jù)二進(jìn)制文件格式進(jìn)行傳輸,并且兼容了jason、xml等形式的數(shù)據(jù)的交換格式,便于與其他系統(tǒng)擴(kuò)展結(jié)合。

      2系統(tǒng)接口研究

      在XGIS系統(tǒng)中主要使用了四種接口方式。

      (1)SOAP服務(wù)掛接方式

      將SOAP服務(wù)引入到GIS中,以GIS為平臺(tái),以空間圖元為對(duì)象,幾乎可以遍歷整個(gè)的勘探、開發(fā)等數(shù)據(jù)庫(kù)系統(tǒng)。在GIS上的某個(gè)圖元下按下鼠標(biāo)右鍵,則系統(tǒng)在“彈出菜單”的頂部列出所有注冊(cè)的SOAP服務(wù)。

      (2)script腳本語(yǔ)言接口

      腳本語(yǔ)言是一種宿主語(yǔ)言,本GIS系統(tǒng)也內(nèi)嵌了一種自行開發(fā)的腳本語(yǔ)言,主要是讀取一些不規(guī)則的、駐留于數(shù)據(jù)庫(kù)之外的數(shù)據(jù)到GIS圖件上。

      (3)VC++的MIDL 接口

      基于MIDL語(yǔ)言對(duì)XGIS 二次開發(fā)接口進(jìn)行定義。通過(guò)此接口,可以在其他系統(tǒng)如網(wǎng)頁(yè)、C#的窗口程序中對(duì)GIS進(jìn)行調(diào)用和傳參。

      (4)DLL接口

      Dll接口方式是系統(tǒng)最常采用的方式,動(dòng)態(tài)調(diào)用方式的特點(diǎn)是完全由編程者用API函數(shù)加載和卸載DLL,程序員可以決定DLL文件何時(shí)加載或不加載,在運(yùn)行時(shí)決定加載哪個(gè)DLL文件。需要函數(shù)指針和WIN32 API函數(shù)LoadLibrary、GetProcAddress裝載。此種接口具有最大的靈活性和可擴(kuò)展性,同時(shí)對(duì)編程能力的要求也較高。

      3接口應(yīng)用案例

      本文編寫了交互輸入定位點(diǎn)和交互輸入選擇區(qū)域兩種功能組件,采用動(dòng)態(tài)調(diào)試的方式進(jìn)行靈活的加載與釋放,也就是第四種DLL接口的方式來(lái)進(jìn)行編程。下面的例子為交互輸入定位點(diǎn)的DLL對(duì)外接口函數(shù)為

      RETCODE __declspec(dllexport) InterLLXY(void *model, TFunPtr pInterface );

      此函數(shù)聲明負(fù)責(zé)告訴主程序調(diào)入此交互輸入點(diǎn)位點(diǎn)功能組件的函數(shù)入口,在函數(shù)中作相應(yīng)的聲明就可以調(diào)用此組件功能。

      以下為InterLLXY函數(shù)主要代碼展示:

      RETCODE __declspec(dllexport) InterLLXY(void *model, TFunPtr pInterface )

      { AFX_MANAGE_STATE(AfxGetStaticModuleState());

      //通過(guò)CXGISCtrl指針來(lái)獲得程序的相關(guān)對(duì)象

      ctrl = (CXGISCtrl *)model;

      /*中間省略一些運(yùn)算函數(shù)*/

      ctrl->pdrawview->isTrackPopupMenu=0;

      return 1;

      }//函數(shù)結(jié)束

      下面函數(shù)為銷毀函數(shù)的聲明:

      RETCODE __declspec(dllexport) DestroyInterLLXY(void *model );

      函數(shù)的實(shí)現(xiàn)如下所示:

      RETCODE __declspec(dllexport) DestroyInterLLXY(void *model )

      {AFX_MANAGE_STATE(AfxGetStaticModuleState());

      if (interllxy )

      {/*此處省略運(yùn)算代碼*/}

      return 1;

      }

      XGIS的運(yùn)行界面如圖2所示

      圖2 交互輸入定位點(diǎn)

      從圖2中可以看到,本文編寫并加載DLL組件(交互輸入定位點(diǎn))、通過(guò)點(diǎn)擊鼠標(biāo)右鍵把這兩個(gè)功能掛載到交互菜單下。在輸入相應(yīng)的點(diǎn)的坐標(biāo)后,會(huì)出現(xiàn)圖3顯示的界面,系統(tǒng)通過(guò)計(jì)算點(diǎn)的坐標(biāo)自動(dòng)定位點(diǎn),并通過(guò)相應(yīng)的五角形將其標(biāo)記出來(lái)。

      圖3 定位后顯示

      4結(jié)束語(yǔ)

      XGIS的組件式開發(fā),使得運(yùn)行與維護(hù)效率大大提高,多功能的接口調(diào)用方式使GIS在專業(yè)應(yīng)用方面更為方便,功能擴(kuò)展更強(qiáng)大。

      參考文獻(xiàn):

      [1] 朱大明,徐景中.基于組件式GIS的旅游景點(diǎn)查詢系統(tǒng)開發(fā)研究[J].昆明理工大學(xué)學(xué)報(bào):理工版, 2007, 32(5):1-4.

      [2] 張?jiān)骑w,張欽,楊建欽,等.基于空間對(duì)象的公共GIS模型及其在海洋石油信息化中的應(yīng)用[J].中國(guó)海上油氣,2009,21(3):211-214.

      [3] 張愛華.基于SuperMap Objects組件式開發(fā)的GIS空間網(wǎng)絡(luò)分析功能實(shí)現(xiàn)方法[J]. 科技信息, 2013(36).

      猜你喜歡
      接口
      某電站工程設(shè)計(jì)管理與施工、質(zhì)量控制接口關(guān)系研究
      含有二氧化鈦薄膜增強(qiáng)虛擬閥的微流控芯片用于二維凝膠電泳分離
      宜丰县| 望城县| 保山市| 桂林市| 上高县| 东安县| 潞城市| 五指山市| 荔波县| 河东区| 洞头县| 江津市| 讷河市| 奈曼旗| 射阳县| 祁连县| 三都| 沙河市| 乌兰察布市| 惠水县| 固镇县| 吉水县| 望城县| 华容县| 田林县| 贡觉县| 冕宁县| 同仁县| 新安县| 临安市| 辽宁省| 河东区| 桃江县| 山东省| 寿光市| 修文县| 信丰县| 岢岚县| 遂宁市| 黑龙江省| 肇州县|