999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

插件式GIS應用框架的設計與實現(xiàn)

2011-09-27 10:43:34陳紅華李滿春李飛雪
地理空間信息 2011年2期
關鍵詞:程序設計

陳紅華,李滿春,李飛雪

(1.南京林業(yè)大學土木工程學院,江蘇南京 210037;2.南京大學地理與海洋科學學院,江蘇南京 210093)

插件式GIS應用框架的設計與實現(xiàn)

陳紅華1,李滿春2,李飛雪2

(1.南京林業(yè)大學土木工程學院,江蘇南京 210037;2.南京大學地理與海洋科學學院,江蘇南京 210093)

應用框架已經成為軟件開發(fā)中一種非常實用的編程規(guī)范和設計架構。采用了C#插件式應用開發(fā),并利用ArcGIS Engine提供的一套完備的嵌入式GIS組件庫和工具庫,完成了插件式GIS應用框架的核心即框架宿主程序及各功能插件的設計與實現(xiàn),以及插件式GIS應用框架平臺的設計與實現(xiàn);采用了動態(tài)插件加載配置的開發(fā)技術優(yōu)勢,通過可視化的構件協(xié)同建模,快速構建GIS應用,實現(xiàn)了GIS應用集成,開發(fā)的平臺適用于任何與GIS應用(ESRI平臺)有關的應用集成和作為GIS應用開發(fā)的基礎開發(fā)平臺。

插件式技術;ArcGISEngine;GIS應用框架

經歷30多年的發(fā)展,GIS正在形成完整的技術系統(tǒng)并建立其理論體系,形成了多層次和不同尺度的應用格局。跟隨計算機等日趨成熟的主流技術,越來越多的軟件產品開始采用應用框架思想進行軟件結構設計。應用框架已經是一個被廣泛使用的術語,它成為軟件開發(fā)中一種非常實用且常用的編程規(guī)范和設計架構。在商業(yè)的GIS應用項目開發(fā)中,GIS應用框架的使用也是非常普遍的,為了提高工作效率和產品的可靠性、降低項目開發(fā)成本,許多GIS二次開發(fā)商都會組織其核心程序員開發(fā)一個GIS應用框架,將一些通用的核心功能進行封裝,這些框架使用的技術和策略可能各不相同,但其目的都是一樣的:降低重復編碼的工作量,提高編程效率,給項目人員的開發(fā)工作提供一個良好的平臺和工作流程。擁有一個可擴展的GIS應用框架,意味著應用項目開發(fā)人員接到一個新項目任務后不必從頭開始搭建一個系統(tǒng),他們只需要按照一種工作模式對其GIS應用框架進行繼承和擴展開發(fā),并盡量利用以前開發(fā)的成果,就可以在短時間內構建出一個無論在UI層,還是在邏輯層都一致的功能組件平臺,而這些平臺的組件還具有天然的可重用性。

1 插件式GIS應用框架開發(fā)技術

1.1 插件式開發(fā)技術概述

插件技術是在軟件的設計和開發(fā)過程中,將整個應用程序劃分為宿主程序和插件對象兩部分,宿主程序能夠調用插件對象,插件對象能夠在宿主程序上實現(xiàn)自己的邏輯,而兩者的交互基于一種公共的通信契約。宿主程序可以獨立于插件對象存在,即使沒有任何插件對象,宿主程序的運行也不受影響,因此,我們可以在避免改變宿主程序的情況下通過增減插件或修改插件的方式來增加或調整功能。

對于許多專業(yè)軟件而言,使用插件式框架機制開發(fā)應用軟件是一種必然的選擇。任何一款專業(yè)軟件,無論項目研發(fā)人員在開發(fā)之前做過多么詳細的用戶調查和需求分析,都不可能滿足使用該軟件的每個行業(yè)、每個用戶的全部需求。為了延長軟件產品的生命周期,在避免修改軟件程序主體的情況下,如果能通過一種具有良好擴展性的方式讓軟件根據用戶實際需求實現(xiàn)“生長”,無疑具有極大的誘惑力。以GIS行業(yè)為例,由于不同部門管理和使用的GIS數(shù)據類型千差萬別,業(yè)務流程也復雜多變,都必須根據實際情況開發(fā)自己專門的GIS軟件,這也是GIS二次開發(fā)大行其道的主要原因,如果每個新應用項目都必須讓開發(fā)人員從頭構建,無疑是一種智力與經驗的浪費,同時浪費的還有寶貴的開發(fā)時間,而使用插件式GIS應用框架完全解決這些問題[1]。

1.2 ArcEngine的插件式技術

ArcGIS Engine是ESRI在ArcGIS 9版本才開始推出的新產品,它是一套完備的嵌入式GIS組件庫和工具庫,使用ArcGISEngine開發(fā)的GIS應用程序可以脫離ArcGISDesktop而運行,它是一個用于開發(fā)新的GIS應用程序的二次開發(fā)功能組件包,它完全支持插件式技術[2]。

ArcGISEngine組件庫中的組件在邏輯上可以分成5個部分:BaseServices、DataAccess、Map Presentation、DeveloperComponents和Extensions。BaseServices包含了ArcGISEngine中最核心的ArcObjects組件。DataAccess包含了訪問包含矢量或柵格數(shù)據的GeoDatabase所有的接口和類組件。Map Presentation包含了GIS應用程序用于數(shù)據顯示、數(shù)據符號化等組件[3]。Developer Components包含了進行快速開發(fā)所需要的全部可視化控件,如SymbologyControl、GlobeControl、MapControl、SceneControl、TOCControl、ToolbarControl等。Extensions包含了許多高級功能,如空間分析、網絡分析和數(shù)據互操作等。

ArcGISEngine9.3與Visual Studio.NET 2005緊密結合,它提供了多個 IDE插件與 Visual Studio.NET 2005緊密結合,它使開發(fā)人員基于VisualStudio.NET 2005編寫ArcGISEngine程序變得更加容易。

2 插件式GIS應用框架平臺的設計與實現(xiàn)

2.1 插件式框架宿主程序的設計

本平臺是插件化的易于擴展的系統(tǒng)。系統(tǒng)之所以插件化,主要依靠一些核心對象保證系統(tǒng)與插件間正常通信,本系統(tǒng)設計的類關系如圖1所示。

圖1 系統(tǒng)設計的框架核心類關系圖

框架FrameworkClass、應用程序類ApplicationClass、菜單管理類BarManagerClass中包含了彼此的接口,即通過一個對象實例,可以方便地獲取或設置另一個對象實例。這三組核心的接口與類,構成了平臺的核心。

2.2 框架插件的設計

插件式框架的另一重要組成部分是插件對象,插件也是應用框架的主角和功能擴展的執(zhí)行者,對用戶而言,這才是他們最關心的部分。插件式平臺包含的每一個功能--菜單欄、工具欄、右鍵菜單、命令行、快捷鍵,都是以插件的方式被平臺管理的。平臺本身是只是一個軀殼,而強大的GIS應用的真正提供者是插件。

2.2.1 插件的設計規(guī)范

在插件式應用框架中,宿主程序在編譯時并不知道它將要處理哪些插件對象,更沒有辦法靜態(tài)地將插件類型通過using關鍵字引入,這些都是只在運行時才能獲得的信息,在這種新情況下,我們無法使用靜態(tài)方法和new關鍵字來產生一個類型的對象,而是需要使用其他方法在運行時動態(tài)加載程序集并獲得程序集中的相關類型信息,這就要求我們的插件必須遵守統(tǒng)一的規(guī)范,即接口規(guī)范、代碼規(guī)范和配置規(guī)范。

接口規(guī)范:提供給插件的接口都在組件中Desktop. Framework中,所有插件都必須實現(xiàn)接口ICommand或ITool,通常情況下,插件都派生自ESRI提供的Base-Command和BaseTool,按鈕類型的插件必須實現(xiàn)接口IBarButtonItem,編輯框類型的插件必須實現(xiàn)接口IBarEditItem,靜態(tài)文本類型的插件必須實現(xiàn)接口IBarStaticItem,支持地圖右鍵菜單的插件必須實現(xiàn)接口 IToolContextMenu,支持TOC右鍵菜單的插件必須實現(xiàn)接口IControlContextMenu,支持快捷鍵的插件必須實現(xiàn)接口IShortCut。

代碼規(guī)范:將IHookHelper類型改為IHookHelperEx類型,將HookHelperClass類型改為HookHelperExClass類型,其屬性Hook事實上保存的是當前應用程序對象IApplication的引用;設置m_caption字段或覆寫Caption屬性,可以改變插件顯示在界面上的標題;設置 m_ toolTip字段或覆寫ToolTip屬性,可以改變插件在界面上的提示信息;覆寫Enabled屬性,根據當前hookHelper對象的狀態(tài)來設定功能的可用性,直接導致功能相對應的按鈕在界面上是否可用。

配置規(guī)范:在平臺中,插件是基于XML配置文件的。每個桌面主程序都有一個插件配置文件:MapUI.xm l--Map的插件配置文件;LayoutUI.xm l--Layout的插件配置文件;CatalogUI.xm l--Catalog的插件配置文件。這些配置文件都遵循相同的配置規(guī)范,如圖2所示。

圖2 插件配置文件的配置規(guī)范

在根節(jié)點“界面元素”的子節(jié)點中,有“菜單欄”節(jié)點和若干“工具欄”節(jié)點。“菜單欄”節(jié)點配置的是應用程序主菜單上的插件,幾個“工具欄”節(jié)點配置的是應用程序的各個工具欄上的插件。“菜單欄”和“工具欄”節(jié)點下包含“工具”子節(jié)點,這些“工具”節(jié)點下又包含了其他“工具”子節(jié)點,這是一個遞歸的樹形結構。

2.2.2 插件的動態(tài)加載和對象生成

在設計完成所有必要的插件接口和插件容器之后,我們利用.NET Framework中Assembly提供的信息實現(xiàn)插件的動態(tài)加載,即反射機制。在插件式應用框架啟動后,插件引擎將遍歷插件文件中的每個程序集,然后使用Assembly類加載每個程序集并分析程序集中包含的類型,只有識別了某個類型的確為合法的插件后,插件引擎才會根據類型信息產生一個實例對象并放置到插件容器中備用。

插件分為命令型插件和工具型插件。命令型插件:即開發(fā)的插件不存在與地圖控件交互,該插件必須實現(xiàn)ESRI.ArcGIS.SystemUI.ICommand接口,或者從BaseCommand類派生;工具型插件:即開發(fā)的插件存在與地圖控件交互,該插件必須實現(xiàn) ESRI.ArcGIS. SystemUI.ICommand接口和ESRI.ArcGIS.SystemUI. ITool接口,或者從BaseTool類派生。

本框架可以動態(tài)加載的插件包含 2種類型:一種是.net插件;另一種是com組件。因此可以使用多種開發(fā)工具開發(fā)插件,如C#、VB.NET、vb、vc等。開發(fā)的.net插件和com組件形式開發(fā)的命令類需要實現(xiàn)ICommand接口,而需要實現(xiàn)和地圖控件交互操作的工具則需要同時實現(xiàn)ICommand接口和ITool接口。

2.3 插件式應用框架平臺的功能實現(xiàn)

插件式應用框架平臺包括基礎框架、基礎工具和擴展工具3部分,主要功能有數(shù)據瀏覽、數(shù)據編輯、數(shù)據管理、版本管理、拓撲、查詢統(tǒng)計、空間分析、符號化符號編輯、專題圖、目錄樹、捕捉、構造點工具、Element工具、地圖工具等。插件式應用框架平臺的主界面如圖3所示。

3結語

軟件框架是為復用而設計的,在以框架為基礎的軟件開發(fā)過程中,應用軟件的開發(fā)實際上是對軟件框架的擴展和實例化[4]。全插件 GIS應用框架的目標是通過全插件體系結構,以及標準化的GIS接口,實現(xiàn)不同平臺GIS系統(tǒng)的統(tǒng)一開發(fā)模式以及模塊級的復用,簡化開發(fā)過程,提高開發(fā)效率[5]。本文介紹的插件式應用框架平臺就是在選擇ArcGISEngine組件庫進行二次開發(fā)的基礎上,采用插件式GIS應用框架,與具體業(yè)務流程沒有相關聯(lián)的,只是一個純粹的GIS數(shù)據顯示與功能支撐框架,一個瀏覽和編輯地理數(shù)據的軟件平臺,它是通過.NET 2.0Framework和ArcGISEngine9.2組件庫構建的一個插件式GIS應用框架。平臺采用可視化拖放構件進行組裝、采用動態(tài)插件加載配置的方式來完成GIS應用集成,從而大大簡化了應用集成的復雜性,大幅降低了企業(yè)GIS應用集成的開發(fā)門檻,有效提高了GIS應用系統(tǒng)的易用性和可操作性。盡管這種新型開發(fā)平臺的出現(xiàn)在一定程度上推動了我國 GIS軟件產業(yè)和應用事業(yè)的發(fā)展,然而要促進GIS真正的發(fā)展還需要長時間的努力,把原來過于專業(yè)化的開發(fā)方式變?yōu)樽尭嗟拈_發(fā)人員掌握的開發(fā)工具,使其成為一個比較大眾化的應用領域。

[1] 蔣波濤.插件式GIS應用框架的設計與實現(xiàn)[M].北京:電子工業(yè)出版社,2008

[2] 韓鵬,王泉,王鵬,等.地理信息系統(tǒng)開發(fā)--ArcEngine方法[M].武漢:武漢大學出版社,2008

[3] 張俊,吳建平.插件技術在ArcGIS Engine開發(fā)中的應用[J].測繪與空間地理信息,2009(3):128-130

[4] 王宇,李增智,薛文革,等.一種多框架軟件集成策略模型[J].小型微型計算機系統(tǒng),2004(05):843-846

[5] 董涌江.全插件GIS應用框架的設計與實現(xiàn)[J].北京測繪,2009(1):18-21

Design and Realization of Plug-in GIS Application Framework

by CHEN Honghua

Application framework has been a kind of very practical programming specification and design framework on the development of software.Through comparing the advantages and disadvantages of existing three kinds of plug-in exploitation methods,this article used the plug-in application development based on C#,utilized Arc GIS Engine to provide a set of complete embedded GIS component library and tool library,and completed the design and realization of the core of plug-in GIS frame,various functions and platform.The paper implemented GIS integration by utilizing the development advantages of dynamic plug-in loading configuration and the visualization component coordination modeling to construct GIS application fast.The platform is suitable for any GIS application integration and basic development platform related to GIS application(ESRI).

plug-in,ArcGIS Engine,GIS application framework (Page:26)

P208

B

1672-4623(2011)02-0026-03

2010-08-24

項目來源:國家自然科學基金資助項目(40901184);江西省數(shù)字國土重點實驗室開放基金資助項目(DLLJ200905)。

陳紅華,博士,主要從事GIS原理與應用、數(shù)據共享研究等。

猜你喜歡
程序設計
何為設計的守護之道?
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進
主站蜘蛛池模板: 国产成人免费| 亚洲无码免费黄色网址| 亚洲中文字幕无码mv| 五月丁香在线视频| 日本免费一级视频| 四虎国产精品永久在线网址| 亚洲水蜜桃久久综合网站| 三级毛片在线播放| 国产激情在线视频| 中国一级特黄视频| 日韩高清中文字幕| 99在线观看精品视频| 国产特一级毛片| 精品国产美女福到在线不卡f| 婷婷激情五月网| 午夜视频日本| 伊人成人在线视频| 美女无遮挡拍拍拍免费视频| 小说 亚洲 无码 精品| 福利在线不卡一区| 朝桐光一区二区| 国产高清无码第一十页在线观看| 日韩无码一二三区| 亚洲一区无码在线| 欧美国产日韩在线观看| 国产欧美日韩另类精彩视频| 色悠久久久| 99热免费在线| 99久久精品无码专区免费| 国产精品尹人在线观看| 久久 午夜福利 张柏芝| 国产人妖视频一区在线观看| 五月婷婷亚洲综合| 在线观看无码av免费不卡网站| 99精品一区二区免费视频| www.精品国产| 国产三级韩国三级理| 国产乱子伦精品视频| 精品一区二区三区中文字幕| 原味小视频在线www国产| 色欲不卡无码一区二区| 伊人成色综合网| 日韩经典精品无码一区二区| 欧美人在线一区二区三区| 99精品视频在线观看免费播放| 日韩欧美国产另类| 人人爱天天做夜夜爽| 一级爆乳无码av| a亚洲视频| 亚洲男人的天堂视频| 欧美成a人片在线观看| 国产精品亚欧美一区二区| 国产精品亚洲一区二区三区z| 久久久久免费精品国产| 国产传媒一区二区三区四区五区| 国产免费黄| 久久精品国产亚洲AV忘忧草18| 国产午夜一级毛片| 免费观看成人久久网免费观看| 特级毛片8级毛片免费观看| 亚洲色图在线观看| 久久无码av一区二区三区| 又黄又爽视频好爽视频| 中文字幕1区2区| 玖玖精品在线| 国产av一码二码三码无码| 国产精品偷伦视频免费观看国产 | 国产第二十一页| 欧美精品v| 一本视频精品中文字幕| 国产超碰一区二区三区| 久久亚洲黄色视频| a级毛片一区二区免费视频| 2020最新国产精品视频| 亚洲男女在线| 国产麻豆va精品视频| 色综合天天综合中文网| 免费看的一级毛片| 欧美天天干| 亚洲AV无码不卡无码| 亚洲成a人片| 四虎永久在线视频|