• 
    

    
    

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

      基于uDig的開源GIS態(tài)勢圖的設(shè)計研究

      2016-10-21 08:03:53闞旭夏戈明曹源
      科技創(chuàng)新與應(yīng)用 2016年5期
      關(guān)鍵詞:開源

      闞旭 夏戈明 曹源

      摘 ?要:通過對國內(nèi)外GIS平臺二次開發(fā)現(xiàn)狀的分析,指出目前GIS商業(yè)軟件開發(fā)在某些方面的不足之處與依靠現(xiàn)有平臺是否能夠彌補不足,進(jìn)而提出基于uDigSDK與uDigSRC的開源GIS二次開發(fā)的構(gòu)想,并展示初步實現(xiàn)的態(tài)勢圖功能并指出該方案與目前其他GIS平臺相比擁有的優(yōu)勢,最后探討了是否能在已完成工作的基礎(chǔ)上,結(jié)合當(dāng)前其他一些技術(shù)手段實現(xiàn)更為復(fù)雜的態(tài)勢圖需求,如3D渲染與二三維數(shù)據(jù)的交互(鷹眼功能),通過互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)的分發(fā),實現(xiàn)B\S模式等,對方案未來可行性進(jìn)行了分析。

      關(guān)鍵詞:開源;GIS開發(fā);uDig

      1 研究背景

      態(tài)勢圖作為一種情景展示、分析的平臺,在水文、地質(zhì)、社會、軍事等領(lǐng)域均有廣泛的應(yīng)用,一個優(yōu)秀的態(tài)勢圖展示系統(tǒng)可以向用戶提供多方面決策相關(guān)的地理信息。當(dāng)前國內(nèi)市場上ArcGis、MapGis、SuperMap等各種商業(yè)GIS平臺受到廣泛歡迎。上述商業(yè)軟件既可以向GIS使用者提供地圖服務(wù),同時通過向開發(fā)者提供API用于二次開發(fā)。這種開發(fā)模式提高了開發(fā)效率,節(jié)省了開發(fā)成本,但這些產(chǎn)品不適用于大量在GIS平臺方面擁有特殊定制要求的用戶,如特殊圖層疊合顯示、圖層屬性交互、3D實時效果展示、平臺安全性等。

      在Geo-informatics社區(qū)的推動下,開源GIS軟件近些年來的發(fā)展迅猛如Minnesota MapServer、Geo Server、PostGis、Grass Gis與uDig[9]。當(dāng)前國內(nèi)市場上基于開源GIS二次開發(fā)的研究大多集中在GrassGis平臺上。GrassGis是基于C開發(fā)的一款開源GIS工具,其強(qiáng)大的數(shù)學(xué)計算能力受到眾多研究機(jī)構(gòu)、政府管理部門的歡迎。但對于一般開發(fā)者而言,GrassGis太過專業(yè),更多計算功能需根據(jù)用戶需求進(jìn)行定制開發(fā)如分布式計算或空間圖形計算等;另一方面,GrassGis框架下可視化部分與平臺計算是個整體,只適用于單機(jī)C\S、少量數(shù)據(jù)的使用環(huán)境,在海量、實時數(shù)據(jù),多平臺接入的條件下需進(jìn)行大量修改且具體工作量未知。綜上所述,設(shè)計一種符合海量數(shù)據(jù)存取、分布式架構(gòu)、模塊化處理的開源GIS軟件是最終選擇uDig平臺的原因。

      uDig是基于eclipse RCP框架下的一款GIS開源項目,也是Web地理信息系統(tǒng)的一個核心組件,同時官方推出uDigSDK與uDigSDK分別用于在其平臺上的二次插件與源碼開發(fā),使用uDigSDK開發(fā)模式開發(fā)新的GIS功能模塊,雖邏輯清晰但無法提供靈活自定義邏輯的界面,使用uDigSRC直接修改uDig源代碼雖然可以獲得安全的靈活性,但會陷入大量的技術(shù)細(xì)節(jié)和無法理出清晰的開發(fā)思路[4],所以一般開發(fā)都會選擇兩種方式混合進(jìn)行。基于uDig的二次開發(fā)方法在Eclipse開發(fā)環(huán)境中的對應(yīng)位置,這種開發(fā)方式能夠滿足如“使用一種完全開放源碼的系列工具進(jìn)行開發(fā)”的要求,也能夠通過使用模型開發(fā)工具簡化它的調(diào)用規(guī)模。

      作為一款基于java語言開發(fā)的GIS平臺,該平臺首先擁有良好的可移植性以及系統(tǒng)兼容性,當(dāng)前市場上一些主流的繪圖、計算工具都向JAVA提供了API,開發(fā)人員可以在已有工作的基礎(chǔ)上進(jìn)行深入工作,降低了開發(fā)難度。

      2 實現(xiàn)平臺和環(huán)境

      uDigSDK開發(fā)方式通過編寫插件為GIS添加新的功能。在Eclipse上配置好uDig開發(fā)環(huán)境,即可獲得udig.product運行產(chǎn)品及uDig中定義的擴(kuò)展點,基于這些擴(kuò)展點或Eclipse中定義的擴(kuò)展點可對已有產(chǎn)品udig.product進(jìn)行擴(kuò)展,添加相應(yīng)功能。在配置好的uDig開發(fā)平臺上添加插件,擴(kuò)展org.eclipse.ui.actionSets擴(kuò)展點和net.refractions.udig.ui.operation擴(kuò)展點,可實現(xiàn)連接數(shù)據(jù)庫、拓?fù)浞治黾捌鋺?yīng)用等功能。

      采用uDigSDK+uDigSRC+Eclipse開發(fā)平臺能夠?qū)崿F(xiàn)二維地圖的展示、部分編輯、簡單地理信息測繪及目標(biāo)元素屬性的查看等功能,而目前上述框架下尚不能實現(xiàn)三維圖形方面的操作,需要第三方平臺提供三維建模的接口。然而一個完整的三維虛擬場景的開發(fā)工作量是十分巨大的,如果從原始代碼行開始,將涉及眾多有關(guān)3D圖形繪制方面的領(lǐng)域。本課題希望通過現(xiàn)有一些成熟技術(shù)實現(xiàn)快速開發(fā),因此有必要選取一種當(dāng)前市場應(yīng)用較為廣泛且技術(shù)成熟,擁有面向java語言的API的平臺,以便新的應(yīng)用能夠在已有開發(fā)包的基礎(chǔ)上進(jìn)行。

      VTK是一款開源的免費軟件系統(tǒng),主要用于三維計算機(jī)圖形學(xué)、圖像處理和可視化,它使用數(shù)據(jù)流方式把信息轉(zhuǎn)換成圖像數(shù)據(jù),在這種方式中包含了兩種基本類型的對象:數(shù)據(jù)對象和處理對象[3]。它提供面向java語言的接口。VTK本身具有強(qiáng)大的流和高速緩存的能力,支持?jǐn)?shù)據(jù)的并發(fā)執(zhí)行,處理海量數(shù)據(jù)時不必考慮內(nèi)存資源的限制;VTK既支持體繪制也保留著傳統(tǒng)的面繪制,在改善可視化效果的同時可充分利用現(xiàn)有的圖形庫和圖形硬件;此外,VTK也支持OpenGl/Matlab等建模平臺的庫函數(shù),在具體開發(fā)上大大簡化了工作難度。

      3 uDigSDK+uDigSRC+Eclipse下實現(xiàn)二維態(tài)勢圖

      二維態(tài)勢圖下需要向用戶提供兩種地圖信息:柵格地圖與矢量地圖。其中柵格地圖的來源可以是不同分辨率下的衛(wèi)星遙感圖,也可以是各種地理信息圖片。但上述兩類地圖的加載在uDigSDK插件開發(fā)下都有一個共同的前提,需向系統(tǒng)提供圖片的坐標(biāo)信息。如,一張4096X4096分辨率的.jepg格式的中國地圖圖片,在WGS84坐標(biāo)系下(經(jīng)緯度坐標(biāo)系),配置文件需在圖片在加載的時候向系統(tǒng)提供下列數(shù)據(jù):

      圖片左下角所在坐標(biāo)(x1,y1)

      圖片右上角所在坐標(biāo)(x2,y2)

      圖片的分辨率(vol1,vol2)

      根據(jù)以上數(shù)據(jù),設(shè)計計算公式(1)

      R1=(x2-x1)/vol1,R2=(y2-y1)/vol2,(1)

      默認(rèn)屏幕中心坐標(biāo)起點(0.000000,0.000000),最后再提取一次x1,y2的數(shù)值形成圖片的位置信息。以上計算過程由開發(fā)人員設(shè)計,用戶只需在地圖上提供圖片位置信息。

      這種柵格圖片的加載方式還有其他優(yōu)點,當(dāng)態(tài)勢圖中需要實現(xiàn)元素移動功能時,只需修改坐標(biāo)信息并刷新元素圖層即可。

      矢量地圖上的元素是由點、線、面元素組成的,這些元素的清晰度不會隨著地圖比例尺變化。加載矢量圖形可以讀取通用的矢量圖格式文件(如.shp),也可以通過加載空間數(shù)據(jù)庫(如POSTGIS)中的地圖數(shù)據(jù)表實現(xiàn)。以讀取POSTGIS數(shù)據(jù)庫為例:uDigSDK插件包中加載net.refractions.udig.catalog.postgis插件包,包中新增對數(shù)據(jù)庫驅(qū)動、數(shù)據(jù)庫名、用戶名、密碼的定義代碼即可。

      除上述兩種地圖信息加載外,開發(fā)人員也可以通過uDigSRC開發(fā)定義其他地圖工具如面積計算:定義當(dāng)前比例尺下每個pixel點代表面積S1(pix),定義比例尺(scale)轉(zhuǎn)換下pixel所代表面積變化公式S1(pix)=f(scale),在地圖上選取一個范圍,統(tǒng)計范圍內(nèi)像素點個數(shù)num,最終面積Area=S1(pix)*num。

      將上述代碼封裝完成后,新建插件工程,工程名定義為Custom.areaCaculation,將該插件工程加載到原態(tài)勢圖工程中去即可完成功能新增。

      4 3D態(tài)勢圖技術(shù)探討

      基于uDigSDK+uDigSRC框架下的二次開發(fā)尚不能解決3D視圖的技術(shù)問題,但可以通過其他已經(jīng)成熟的3D平臺提供給java的接口實現(xiàn)上述框架下的三維圖形功能。目前領(lǐng)域內(nèi)存在幾種可行平臺:Java3D、JOGL以及VTK。

      以技術(shù)探討成熟度來說,VTK無疑是首選3D平臺,它獨有的高速數(shù)據(jù)處理能力面對海量數(shù)據(jù)的3D態(tài)勢圖比其他3D平臺更有優(yōu)勢,它對其他3D平臺函數(shù)庫的支持實現(xiàn)了各平臺間功能上的互補。此外,三維建模中有一個難題:地形表面是一個在空間上連續(xù)的空間曲面,而建筑物等地物的地面理論上應(yīng)該是一個平面。建筑物地面和地形表面相交的部分在空間上是相互疊加的,若不對坐落于地形表面上的建筑物地面做任何處理就疊加在地形表面上,則二者之間必然產(chǎn)生集合縫隙[5]。相比市場上其他3D平臺,VTK率先解決了該邊界縫隙的問題,下面以VTK為例,介紹三維場景制作及二維三維態(tài)勢圖的交互式響應(yīng)。

      一個簡單的三維場景制作首先需定的以下幾個環(huán)境參數(shù):光源,光線投射方向,光色,光線范圍,物體表面形狀、顏色、面積、材質(zhì),背景顏色,攝像機(jī)位置,最后是空間坐標(biāo)系。若是想實現(xiàn)攝像機(jī)視角漫游及鼠標(biāo)、鍵盤控制,需新增其他事件監(jiān)聽代碼及空間位置信息。以上功能均可用java代碼實現(xiàn),開發(fā)人員只需在工程開始前導(dǎo)入相關(guān)jar包即可。

      從對數(shù)據(jù)的作用形式看,目前對人一圖和圖一模之間交互的研究集中在數(shù)據(jù)表現(xiàn)和數(shù)據(jù)操作兩個方面,前者包括各種專題制圖、復(fù)雜符號表達(dá)、地圖疊置、多色彩組織和視圖組織等表達(dá)技術(shù),后者包括聚集、排序、動畫、數(shù)據(jù)轉(zhuǎn)換和視圖連接等操作方法[2]。而本課題下二維與三維圖形的交互式響應(yīng)是指uDig下的二維態(tài)勢圖與VTK制作的3D場景能夠根據(jù)一種映射關(guān)系進(jìn)行數(shù)據(jù)交互。這種映射關(guān)系可以是坐標(biāo),也可以是瓦片圖的索引號。另外,為減少服務(wù)器加載3D地圖時資源的消耗,只在需要觀察3D態(tài)勢圖時才進(jìn)行3D渲染繪制。

      2D/3D互響應(yīng)模塊應(yīng)擁有以下功能:

      (1)用戶在3D漫游時,2D場景要實時顯示用戶的位置和視野方向;(2)用戶在2D/3D場景中改變觀察位置時,對應(yīng)3D/2D的觀察著位置也要改變;在2D/3D場景中查詢目標(biāo)屬性時,對應(yīng)3D/2D場景中的目標(biāo)需高亮或改變顏色;(3)應(yīng)用程序初始化時,不調(diào)入3D場景,單獨在2D地圖繪制面板上選擇一塊區(qū)域用于3D場景顯示。

      5 態(tài)勢圖的B\S架構(gòu)實現(xiàn)

      GrassGis、QGis、OpenJUMP、uDig等GIS均屬于開源桌面GIS項目,而當(dāng)前市場上GIS平臺的主要應(yīng)用紛紛建立在WEB架構(gòu)下。所以,為了能夠在互聯(lián)網(wǎng)平臺上發(fā)布該項目,需要一個發(fā)布平臺將上述桌面GIS工程加載到網(wǎng)站服務(wù)器中,并實現(xiàn)通過瀏覽器進(jìn)行瀏覽。

      uDig下的態(tài)勢圖在B\S平臺下的發(fā)布相較其他GIS軟件容易得多,GeoServer是OpenGIS Web服務(wù)器規(guī)范的J2EE實現(xiàn)。利用GeoServer可以方便地發(fā)布地圖數(shù)據(jù),允許用戶對特征數(shù)據(jù)進(jìn)行更新、刪除、插入操作,通過GeoServer可以比較容易地在用戶之間迅速共享空間地理信息。GeoServer為開發(fā)者提供了Web發(fā)布服務(wù)器上所需的基本組件,相比其他開源軟件具有:

      (1)基于serlet、STRUTS框架、支持高效的Spring框架開發(fā);

      (2)兼容WMS、WFS Feature;

      (3)支持PostGis、Shapefile、Oracle、DB2、MySQL等數(shù)據(jù)庫;

      (4)支持多種坐標(biāo)投影;

      (5)可以運行在任何基于J2EE/Servlet的容器之上;

      (6)嵌入MapBuilder支持Ajax的地圖客戶端;針對Web端顯示地圖數(shù)據(jù)還需在網(wǎng)站項目中新增mapbuilder.js方法,該方法是由MapBuilder平臺提供的。開發(fā)人員需從官網(wǎng)下載GeoServer平臺,在GIS服務(wù)器上安裝完成后加載uDig工程、導(dǎo)入MapBuilder相關(guān)文件。最后根據(jù)需求在Web項目中新增數(shù)個.xml文件用于網(wǎng)頁布局配置、功能模塊添加、瀏覽器下坐標(biāo)系定義等即可完成uDig工程在互聯(lián)網(wǎng)平臺上的發(fā)布。

      6 展望

      上述部分展示的功能實現(xiàn)只是GIS態(tài)勢圖中很小的一部分并對未來態(tài)勢圖中的功能模塊進(jìn)行了劃分,下一步的開發(fā)與測試還面對這以下問題:

      目前雖然實現(xiàn)了JAVA框架下的3D地形地貌的繪制,但存在著系統(tǒng)幀數(shù)低,圖形化計算速度較慢的問題,這是由于3D顯示方法(引擎)設(shè)計過于簡單,占用大量顯存造成的。這個問題上,可以參考OpenGL與DX的圖形加速算法;第二個問題在于2D/3D圖像之間的轉(zhuǎn)換,特別是坐標(biāo)轉(zhuǎn)換,隨著三維地圖數(shù)據(jù)的增加,系統(tǒng)需要一個統(tǒng)一的坐標(biāo)轉(zhuǎn)換算法,而不是針對每一個坐標(biāo)點設(shè)計與3D圖形投影坐標(biāo)的對應(yīng)關(guān)系;第三個要解決的問題是二維柵格圖的分片與無縫粘貼,這是系統(tǒng)在讀取顯示高清衛(wèi)星遙感圖的時候需要解決的,面對可能大至T字節(jié)的柵格圖時,圖形不分片,一般服務(wù)器或集群都無法短時間內(nèi)處理,而分片后又怎樣將數(shù)張圖片文件融合成一張新的圖片也是下一步工作需要研究的。

      參考文獻(xiàn)

      [1]黃健熙,郭利華,龍毅,等.二維地圖與三維虛擬場景的互響應(yīng)設(shè)計與實現(xiàn)[J].測繪信息與工程,2003,28(1).

      [2]樊明輝,陳崇成.基于地圖的交互式可視化技術(shù)[J].華南理工大學(xué)學(xué)報,2008,36(5).

      [3]G.Formetta,A.Antonello,S.Franceschi,O.David,R.Rigon,Hydrological.modeling with components:A GIS-based open-source framework.Environmental Modelling &Software,2014,55:190-200.

      [4]Yanming Chen,Jiechen Wang,Manchun Li,Jie Liu,Liang Cheng,Kang Yang,Dong Cai,3D Visualization of Electromagnetic Environment,978-1-61284-848-8/11 2011 IEEE.

      [5]Smita Sengupta,Kavita V V Ganeshan,N.LSarda,A2CWiC,Developing IITB Smart CampusGIS Grid,2010,9:16-17.

      猜你喜歡
      開源
      校園武術(shù)“學(xué)、練、賽”一體化實踐探索
      體育師友(2022年1期)2022-04-17 10:42:34
      傳播開源精神 共迎美好未來
      五毛錢能買多少頭牛
      2019開源杰出貢獻(xiàn)獎
      大家說:開源、人工智能及創(chuàng)新
      開源中國開源世界高峰論壇圓桌會議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
      基于ZigBee和Arduino開源平臺智能網(wǎng)關(guān)的設(shè)計與實現(xiàn)
      一種基于開源軟件的OD反推求解算法
      開源計算機(jī)輔助翻譯工具研究
      報道
      莱芜市| 沐川县| 卢湾区| 左权县| 容城县| 土默特左旗| 团风县| 宁都县| 许昌市| 南宫市| 海阳市| 织金县| 繁昌县| 青田县| 通榆县| 如东县| 凤山市| 惠水县| 吴忠市| 蕉岭县| 南川市| 龙门县| 丹阳市| 黎川县| 浏阳市| 石台县| 噶尔县| 蒙山县| 会昌县| 淮滨县| 瓮安县| 盐池县| 新宁县| 阳西县| 土默特右旗| 叶城县| 克山县| 滨州市| 秭归县| 元朗区| 安国市|