• 
    

    
    

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

      DotSpatial開源GIS軟件擴(kuò)展研究

      2013-01-22 11:44:28華東師范大學(xué)地理信息系統(tǒng)教育部重點(diǎn)實(shí)驗(yàn)室吳健平
      電子世界 2013年19期
      關(guān)鍵詞:類庫數(shù)據(jù)格式開發(fā)者

      華東師范大學(xué)地理信息系統(tǒng)教育部重點(diǎn)實(shí)驗(yàn)室 張 弟 吳健平

      1.引言

      近年來GIS開源軟件發(fā)展很快,DotSpatial是眾多GIS開源軟件中功能比較全面、擴(kuò)展性比較好的一款,它提供空間數(shù)據(jù)的處理、分析、投影等功能。目前已有很多其他開源GIS軟件使用DotSpatial提供的功能,但是DotSpatial存在著與其它開源軟件相同的不足之處,比如官方開發(fā)文檔及幫助資料少,對GIS數(shù)據(jù)格式的支持不夠全面等。而傳統(tǒng)的GIS商業(yè)軟件雖然開發(fā)文檔齊全,支持多種GIS數(shù)據(jù)格式,但是授權(quán)昂貴,并且安裝占用大量的磁盤空間。由于商業(yè)因素,商業(yè)GIS軟件源代碼和關(guān)鍵算法受到嚴(yán)格保護(hù),不利于學(xué)術(shù)研究。因此研究和完善開源GIS軟件在學(xué)術(shù)和商業(yè)方面都有著重要意義,而DotSpatial是一個(gè)比較新的開源類庫,目前對其研究的文章還很少。綜合上述因素,本文介紹了DotSpatial的架構(gòu),深入研究了其提供的擴(kuò)展機(jī)制,最后利用官方提供的模版擴(kuò)展實(shí)現(xiàn)了DotSpatial對NetCDF數(shù)據(jù)的讀取與渲染。這種擴(kuò)展方法具有一定的通用性,可以用來實(shí)現(xiàn)讓DotSpatial支持更多種類的GIS數(shù)據(jù)。

      2.DotSpatial軟件介紹

      2.1 DotSpatial構(gòu)成

      DotSpatial是一套基于.Net Framework 4.0平臺開發(fā)的開源GIS類庫,整套類庫是使用C#語言編寫完成,以GNU LGPL授權(quán)(GNU Library General Public License)形式開放源代碼,目前整個(gè)項(xiàng)目由幾十個(gè)開發(fā)者共同維護(hù),并且不斷地有新的開發(fā)人員參其中。DotSpatial官方網(wǎng)址為http://dotspatial.codeplex.com,網(wǎng)站主要包括源代碼、類庫、說明文檔、討論區(qū)、主要開發(fā)者、授權(quán)文檔等幾個(gè)部分。

      DotSpatial的類庫可供其他程序直接調(diào)用,Mapwindow 6、Hydrodesktop、Mad、Area of Review、Marine Life等開源GIS軟件使用了DotSpatial的類庫提供的功能。為了讓開發(fā)者迅速熟悉這套類庫,官網(wǎng)提供了一個(gè)已經(jīng)編譯好的簡易示例程序。該程序支持Shapefile文件,實(shí)現(xiàn)了縮放、平移等常見GIS操作,并且支持?jǐn)U展。

      2.2 DotSpatial整個(gè)類庫實(shí)現(xiàn)的功能

      目前DotSpatial整個(gè)類庫實(shí)現(xiàn)的功能包括:

      ①顯示地圖;②支持Shapefile,Bgd,以及其它常用的柵格數(shù)據(jù)和遙感影像數(shù)據(jù);③渲染符號和標(biāo)簽;④支持動(dòng)態(tài)投影和投影變換,WGS84為默認(rèn)投影方式;⑤支持屬性數(shù)據(jù)的編輯和顯示;⑥支持空間分析,包括疊加分析、緩沖區(qū)分析、差值分析、空間統(tǒng)計(jì)等。⑦支持GPS格式數(shù)據(jù)。

      DotSpatial很好的實(shí)現(xiàn)了功能模塊化設(shè)計(jì)思想,方便開發(fā)者靈活定制程序。Dot-Spatial架構(gòu)在設(shè)計(jì)時(shí)主要考慮了兩個(gè)要素。首先是將用戶界面部分與業(yè)務(wù)邏輯部分分離,其次是將各個(gè)模塊編譯到不同的DLL中,提高代碼的利用率,并且做到無需加載整個(gè)類庫就可使用部分功能。

      3.DotSpatial擴(kuò)展機(jī)制

      DotSpatial提供了完善的擴(kuò)展機(jī)制,允許開發(fā)者對其功能進(jìn)行擴(kuò)展。DotSpatial啟動(dòng)時(shí)會(huì)對根目錄下的Application Extensions子目錄進(jìn)行掃描,該目錄下任何實(shí)現(xiàn)IExtension接口的DLL都會(huì)被加載到主程序中,加載完成后就可以使用DLL中的擴(kuò)展功能。IExtension主要包含Activate和Deactivate和方法。DotSpatial啟動(dòng)時(shí)調(diào)用Activate方法,完成模版的初始化任務(wù)。方法Decative在卸載模版時(shí)被調(diào)用,實(shí)現(xiàn)卸載模版及資源清理功能。

      為了方便開發(fā)人員進(jìn)行擴(kuò)展,DotSpatial提供了一個(gè)可以安裝的插件模版(template),下載地址為:http://visualstudiogallery.msdn.microsoft.com/92919cee-a2b0-43c6-8993-aeac965bc4b5,安裝模版后,用Visual Studio新建項(xiàng)目時(shí)可以選擇該模版,并在此基礎(chǔ)上進(jìn)行擴(kuò)展開發(fā)。

      模版提供了實(shí)現(xiàn)IExtension所需的基礎(chǔ)代碼,其中包含一個(gè)Extension基類和一個(gè)MyPlugin子類。Extension類實(shí)現(xiàn)了IExtension接口中的Activate和Deactivate方法,Plugin子類繼承Extension父類,并且還有一個(gè)ButtonClick方法,可以。模版加載后會(huì)在DotSpatial的Extensions菜單中生成對應(yīng)的菜單項(xiàng),點(diǎn)擊菜單會(huì)執(zhí)行ButtonClick方法,主要的擴(kuò)展功能可以在該方法中實(shí)現(xiàn)或由該方法調(diào)用其它方法實(shí)現(xiàn)。

      4.DotSpatial擴(kuò)展實(shí)例

      4.1 NetCDF簡介

      NetCDF(Network Common Data Form)網(wǎng)絡(luò)通用數(shù)據(jù)格式是由UCAR(University Corporation for Atmospheric Research)針對于科學(xué)數(shù)據(jù)的特點(diǎn)專門進(jìn)行開發(fā)的一種開放的編碼標(biāo)準(zhǔn)。由于其開放性、自描述性、平臺獨(dú)立性、高可用性等特點(diǎn),目前已廣泛應(yīng)用于氣象學(xué)、水文學(xué)、海洋學(xué)以及地理信息系統(tǒng)等諸多領(lǐng)域。已經(jīng)有很多文章在NetCDF的實(shí)際應(yīng)用方面做了深入研究,但是在擴(kuò)展GIS軟件實(shí)現(xiàn)支持NetCDF數(shù)據(jù)渲染方面的研究還不是很多。DotSpatial本身不支持NetCDF數(shù)據(jù),我們通過前面介紹的模版編程實(shí)現(xiàn)DotSpatial渲染NetCDF數(shù)據(jù)。DotSpatial原生支持ESRI的Bgd柵格數(shù)據(jù),因此可以通過在內(nèi)存中將NetCDF數(shù)據(jù)轉(zhuǎn)換為Bgd的方式實(shí)現(xiàn)NetCDF數(shù)據(jù)的渲染。

      NetCDF文件包含維(dimensions)、變量(variables)和屬性(attributes)三種描述類型,每種類型都會(huì)被分配一個(gè)名字和一個(gè)ID,這些類型共同描述了一個(gè)數(shù)據(jù)集。NetCDF庫可以同時(shí)訪問多個(gè)數(shù)據(jù)集,用ID來識別不同數(shù)據(jù)集。維表示變量維度信息,變量存儲(chǔ)實(shí)際數(shù)據(jù),屬性表示變量或數(shù)據(jù)集本身的輔助信息,根據(jù)作用域可分為適用于整個(gè)文件的全局屬性和適用于特定變量的局部屬性,全局屬性則描述了數(shù)據(jù)集的基本屬性以及數(shù)據(jù)集的來源。NetCDF可在某一維進(jìn)行追加,無需重新定義數(shù)據(jù)格式并復(fù)制原有數(shù)據(jù),圖1是一個(gè)NetCDF在Time維的增長示例,圖2所示為轉(zhuǎn)換NetCDF格式。

      圖1 NetCDF維增長比例

      圖2 轉(zhuǎn)換NetCDF格式

      4.2 NetCDF庫

      UCAR提供了一系列操作NetCDF文件的庫,通過這些庫可以讀寫NetCDF文件數(shù)據(jù)或元數(shù)據(jù)信息。核心庫由C語言編寫,在此基礎(chǔ)上提供了C、C++、Java、Python、Perl等多種主流編程語言的API,但是還不支持C#,可以通過C#封裝NetCDF核心C庫函數(shù)的方式間接讀取NetCDF數(shù)據(jù)。

      4.3 實(shí)現(xiàn)DotSpatial對NetCDF數(shù)據(jù)的讀取與渲染

      DotSpatial本身支持ESRI的Bgd柵格數(shù)據(jù),通過實(shí)現(xiàn)IExtension接口,在內(nèi)存中將NetCDF數(shù)據(jù)轉(zhuǎn)換為Bgd格式,DotSpatial可以顯示轉(zhuǎn)換后的數(shù)據(jù),轉(zhuǎn)換過程如圖2所示,最終的渲染效果和其它支持NetCDF數(shù)據(jù)的軟件是一致的,這說明前面的擴(kuò)展方式是可行的。

      5.總結(jié)

      本文介紹了開源GIS軟件DotSpatial及其擴(kuò)展機(jī)制,利用其官方提供的模版實(shí)現(xiàn)了DotSpatial對NetCDF數(shù)據(jù)的讀取與渲染,可以充分的利用DotSpatial已有的平移、縮放等功能對NetCDF數(shù)據(jù)進(jìn)行常見GIS操作。這種擴(kuò)展方法具有一定的通用性,可以很好的擴(kuò)展DotSpatial原有功能,用來實(shí)現(xiàn)支持多種GIS數(shù)據(jù)格式。

      [1]Li J,Liao W,Choudhary A,et al.Parallel NetCDF:A high-performance scientif ic I/O interface[C].2003 ACM/IEEE Conference.IEEE,2003:39-39.

      [2]孫建偉,孫昭晨,陳軒,等.NetCDF格式數(shù)據(jù)的創(chuàng)建及應(yīng)用[J].交通標(biāo)準(zhǔn)化,2010(226):31-34.

      猜你喜歡
      類庫數(shù)據(jù)格式開發(fā)者
      用Java編寫客戶機(jī)/服務(wù)器端應(yīng)用程序
      Python在數(shù)據(jù)可視化中的應(yīng)用
      在智能交通系統(tǒng)中PLC數(shù)據(jù)格式轉(zhuǎn)換方法的研究
      電子測試(2018年1期)2018-04-18 11:52:49
      數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革方案和應(yīng)用效果
      軟件工程(2017年12期)2018-01-29 17:35:55
      數(shù)據(jù)結(jié)構(gòu)可視化類庫的設(shè)計(jì)與實(shí)現(xiàn)
      16%游戲開發(fā)者看好VR
      CHIP新電腦(2016年3期)2016-03-10 13:06:42
      iOS開發(fā)者調(diào)查
      電腦迷(2015年8期)2015-05-30 12:27:10
      iOS開發(fā)者調(diào)查
      電腦迷(2015年4期)2015-05-30 05:24:09
      論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
      DWG與SHP數(shù)據(jù)格式互轉(zhuǎn)換方法研究——以龍巖規(guī)劃測繪數(shù)據(jù)為例
      阆中市| 合阳县| 长子县| 南涧| 新干县| 贵南县| 阳春市| 永清县| 崇礼县| 乐昌市| 湄潭县| 平原县| 太原市| 靖边县| 砀山县| 彰化县| 屯留县| 精河县| 奇台县| 平阳县| 南阳市| 鸡泽县| 祁门县| 南京市| 平顺县| 南宁市| 乐昌市| 新龙县| 柳江县| 东明县| 丰县| 平乐县| 收藏| 红河县| 隆子县| 兰考县| 海兴县| 宜丰县| 永清县| 扬州市| 奉节县|