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

基于ODM和Cesium的無人機傾斜攝影建模及可視化

2020-05-16 09:15:40左小清
軟件 2020年4期
關鍵詞:數據處理可視化數據庫

王 旭,左小清

(昆明理工大學 國土資源工程學院,云南省 昆明市 650093)

0 引言

ODM(OpenDroneMap)是一個基于 Linux平臺的用于處理空中無人機圖像的開源工具包,用于處理原始UAS(Unmanned Aerial Vehicle)圖像到點云、數字表面模型、紋理數字表面模型、正射成像、分類點云、數字高程模型等[1]數據,其成果數據包含真實地理坐標(依據源數據坐標系),且可通過提供飛行位置姿態以及GCP(Ground Control Point)提高精度。

Cesium是一個用于開發三維WebGIS客戶端的開源JavaScript開發包。采用 Cesium作為客戶端不存在瀏覽器依賴性,其源碼采用ES6語法進行模塊化,渲染采用OpenGL規范的shader文件進行渲染,支持對js源碼和shader進行更改。在GIS方面,其支持OGC標準的服務,支持多種通用三維數據,且提出了目前通用格式中唯一支持大量地理 3D數據流式傳輸和海量渲染的三維模型切片格式3DTiles。

兩者結合可以完成無人機傾斜數據的處理到可視化的整體流程。

1 系統總體框架

ODM(OpenDroneMap)和Cesium分別負責數據處理和可視化,但數據存儲、功能調度、服務發布等業務流程需要借助Java Spring、Docker、GDAL、PostGIS等技術,因此需要對系統的整體框架進行設計開發。

Cesium結合 ODM進行三維WebGIS開發的系統架構設計主要是依據系統的功能需求對軟件設計進行建模,側重于軟件用例實現和分層架構表達。從軟件業務設計、公共組件設計、軟件集成和部署等多個方面進行設計工作,完成基于架構的軟件概要設計。本研究中系統總體架構由如下四個層次構成,如圖1中所示。

圖1 無人機數據處理系統架構Fig.1 UAV data processing system architecture

(1)數據存儲:影像處理前后主要以文件形式存儲無人機的柵格數據及其他成果數據,以postgis存儲空間信息和對應文件路徑。文件式存儲方便操作源柵格進行科學計算,但對于柵格數據的信息在數據庫層運用極少。因此系統存儲主要包括兩部分,無人機數據存儲、無人機數據處理結果數據、三維模型轉換后的數據這類非結構數據在文件中存儲與組織。數據的元數據、用戶數據,系統日志信息存儲在Postgis數據庫中。緩存信息由redis數據庫處理。

(2)系統支撐:根據業務功能,提供數據的存儲與傳輸,包含sql處理、數據緩存、文件IO,主要由Jva Spring 的MyBatis做ORM。

(3)業務應用層:包含無人機數據處理,服務器監測、權限管理、靜態資源解析,主要模塊為封裝 ODM進行無人機數據處理。其中數據傳輸處理與轉換依據功能需求和業務層基于 JAVA spring框架設計并封裝restful風格接口。

(4)前端交互與可視化:采用 VUE框架結合Cesium將上層業務平臺中的各個業務模塊進行聚合進行前端搭建。Vue組件式開發登陸認證、上傳下載表單、獲取數據信息等界面,結合Cesium做三維前端可視化。

本文中無人機數據處理系統主要為 WebGIS系統和傳統C/S結構相比,要充分發揮Web應用的內在潛力,挖掘應用深度和擴大適應能力,需要采用先進的應用架構和以實用為根本準則,使得系統既能滿足業務需求,又能適應將來發展需要[2]。

2 基于ODM的無人機數據處理開發

本文無人機數據處理系統是以Web開發技術和三維 GIS技術為研究支撐,以上一節中軟件系統總體架構的基礎上,切分成多個微服務進行實現的。在主要業務服務中,通過http請求在服務之間進行通信。

2.1 影像數據處理服務

影像數據處理服務包含所有涉及無人機傾斜數據處理、轉換、提取元數據的功能聚合為一個服務,有著完整的的日志記錄和本地數據庫,其中負責傾斜數據處理的ODM、成果數據轉換的obtTo3D-tiles為微服務在框架中 service層進行微服務控制與調用,提取元數據的GDAL作為開發庫直接在service層中開發調用,主要UML框架如圖2所示。

ODM官方支持 linuix下docker的封裝,數據處理前后通過訪問數據存儲服務記錄元數據。當有新的計算請求時,訪問服務器和Docker容器監測服務來進行業務判斷,如果服務器壓力過大則進行消息和任務隊列。數據處理主要依靠docker-java創建Docker鏡像,推送命令到Docker內封裝的ODM計算模塊執行運算, 依靠docker-java管理整個Docker容器的生命周期。以此實現了后端進行無人機數據處理的功能并發布服務。

2.2 ODM數據處理和格式轉換

圖2 數據處理UMLFig.2 Data processing UML

通過docker pull opendronemap/opendronemap安裝在docker安裝ODM的鏡像,通過Maven在Java工程中引入Java-docker包,通過createContainer、startContainer等進行容器的控制,通過 Java的Process在docker具體容器中調用ODM命令進行數據處理,根據原始無人機數據目錄在Process中執行本地命令:

docker run -it --rm

-v $(pwd)/images:/code/images

-v $(pwd)/odm_orthophoto:/code/odm_orthophoto

-v $(pwd)/odm_texturing:/code/odm_texturing

opendronemap/opendronemap

指令的作用是通過 OpenDronMap 對 odm_test_1/images目錄下的圖像文件同時進行正射影像(odm_orthophoto)和紋理網面建模(odm_texturing)的圖像處理,opendronemap/opendronemap是指明需要調用的鏡像,這里是調用Repository為opendronemap/opendronemap的鏡像,可以用該鏡像的 tag(如果有設置的話)和鏡像ID替代。產生數據如圖3所示。

圖3 正射影像和傾斜模型Fig.3 Orthophoto and oblique photogrammetric model

執行過程中會返回處理狀態信息如圖4所示,通過 Process讀取信息并進行正則分析提取進度百分比,以服務方式發布json數據在前端展示進度。

圖4 數據處理狀態Fig.4 Data processing status

成果三維模型數據為.obj格式,為支持前端大數據量三維可視化需求,需要對數據進行三維切片。此功能通過部署單獨的 nodejs微服務集成obtTo3D-tiles開源工具做轉換。

3 數據組織管理

3.1 三維模型數據

目前三維數據主要以非結構化數據形式生產和應用,無人機數據處理主要涉及三維模型、點云等數據。涉及文件格式種類繁多,包括.pcd、.obj、.stl、.3Ds、3Dtiles等。

obj文件是一種標準的3D模型文件格式,很適合用于 3D軟件模型之間的互導[3]。obj文件包含.obj、.mtl和紋理圖片,其中.obj文件提供幾何信息,.mtl文件定義材質信息;

3D Tiles是一種三位瓦片技術,在gltf的基礎上加入了分層LOD的結構,是專門為大量地理3D數據流式傳輸和海量渲染而設計的一種格式,也開源WebGL框架Cesium的官方格式。其用于流式傳輸和渲染大量 3D地理空間內容,例如攝影測量,3D建筑,BIM/CAD,實例化特征和點云。它定義了分層數據結構和一組可交付內容的圖塊格式。在3D Tiles中,tileset是按空間數據結構(即tree)組織的一組tile。至少一個tileet JSON文件描述了tileet,其中該JSON文件包含tileet元數據和tile對象樹,其中每個對象都可以引用表1中的格式對應的可渲染內容。

表1 Tile引用格式Tab.1 Tile reference format

tile的內容除了以上的渲染內容,還包括特定格式的二進制塊,包含特征表和批處理表。上述的批量3D模型(b3Dm)和實例3D模型(i3Dm)是基于glTF構建的,點云格式不嵌入gltf中。tile如圖5所示以樹的結構來組織,其結合了層次LOD的概念,優化渲染空間數據。在樹結構中,每個 tile都有一個邊界包圍盒在空間中完全包圍該 tile和子節點的數據。其中,樹的組織結構可以是kd樹,四叉樹或者grid。

圖5 Tileset樹Fig.5 Tileset tree

3.2 數據存儲

數據存儲是指對空間數據邏輯模型描述的數據組織關系和編排方式,對地理信息系統中數據存儲、查詢檢索和應用分析等操作處理的效率有著至關重要的影響。本方案同時同一空間數據邏輯模型采用了多種空間數據結構[4],針對標準和協議的不同存在著不同的數據格式。其中正射影像、3DTiles等ODM的成果數據采用文件格式進行非結構化存儲,通過GDAL庫和其他技術提取的文件的元數據及矢量信息通過數據庫進行存儲,最后通過數據庫中存儲文件地址與非結構化文件系統進行關聯。

(1)非結構化數據存儲

通過 ODM進行無人機數據處理后,可獲得點云、數字表面模型、紋理數字表面模型、正射成像、分類點云、數字高程模型[1]。其與原始數據都以文件形式存儲,為支持Cesium.js的前端可視化,格式轉換后的 3DTiles等數據以文件格式存儲,具體轉換前后文件組織如圖6所示。數據庫里只存放地址、鏈接、元數據信息和用戶信息進行關聯。

圖6 用戶文件和轉換數據用戶文件組織Fig.6 User file organization and transform data user file organization

做非結構化數據存儲和數據處理時,需盡可能使用單獨的服務器,原因如下:多種格式數據內容,且需要數據處理時需要依據文件處理,沒必要放數據庫;數據處理和傳輸時占用帶寬和計算資源,如果數據庫和應用分離(即不再同一臺服務器),那么取得一個圖片需要從客戶端到應用端取數據,應用又需要從數據庫去取,這樣會占用大量的帶寬,同時這也會在數據庫服務器和應用服務器兩處 IO上形成瓶頸;如果圖片單獨放在服務器上,取圖片的時候,則只需要客戶端通過HTTP協議去圖片服務器上取,減少帶寬占用。并且,這里的IO瓶頸只存在圖片服務器上,會快很多。

(2)數據庫設計

數據庫內數據為用戶數據、部分osm的矢量數據和提取的無人機的元數據,其中元數據主要為柵格數據的地理元數據(空間坐標)。連接系統部分為Spring mybatis框架,在實際開發的時將其作為持久層框架簡化sql操作。

數據庫管理系統為Postgis,可以通過存儲的空間數據建立空間索引并集成部分空間運算,其優勢是既可以方便數據統計和監測,又可以在大量地理信息數據中快速查詢符合條件的非結構化數據文件地址,通過傳文件地址方便前端進行快速可視化,其具體組織如圖7。

圖7 數據庫設計Fig.7 Database design

需要動態展示和處理部分矢量數據,由于 shp格式數據處理和查詢較慢(一定條件下Postgis的表查詢不建立索引比shp格式的數據存儲快125倍,建立索引快338倍),因此按照osm格式在Postgis中建表,存儲矢量數據。圖8為具體表結構。

4 基于Cesium的前端可視化

數據處理后產生多種格式文件,其中正射影像和傾斜模型帶有地理信息,可以直接應用于GIS系統中。數據處理轉換后的 3DTiles發布為靜態數據,前端使用 Vue.js集成 Cecium進行三維數據展示。

Vue是目前流行的前端三大框架之一,其異步批處理方式更新 DOM加速運行。提供組件開發用于解耦,將可復用的組件組合入應用程序。緊湊且無依賴。具有表達式無需聲明依賴的可推導屬性(computed properties)。Cesium源碼使用ES6的模塊化方式開發,通過gulp進行構建和封裝,VueCli3版本后直接將Cesium打包后的文件直接放在public下,部署時直接復制到發布包的根目錄相應文件夾下,不進行后續的webpack處理。

在VueCli中由于組件間數據傳輸通過data直接綁定數據,部分場景下,例如Cesium加載大量數據渲染情況下,會導致框架本身對數據持續進行監測影響渲染效率,因此需要將含有大量數據變化的對象提升為全局對象,不在data中綁定。因此在引入Cesium時,在main.js中全局引用:

import Cesium from "cesium/Cesium";

import"../node_modules/cesium/Source/Widgets/

widgets.css";

//全局注冊變量

Vue.prototype.Cesium=Cesium;

//將viewer放到全局對象當中;

let viewer = new Cesium.Viewer('container');

window.earth = viewer;

通過 new Cesium.Cesium3DTileset({url: '3DTiles的json索引文件的url'})創建三維模型,viewer.scene.primitives.add函數添加進場景中,完成三維可視化。開發測試時使用nodejs環境提供的server運行,通過webpack技術進行打包優化。

圖8 數據表Fig.8 Data table

5 運行效果

處理后數據雖然自帶地理信息,但是由于系統本身未加載地形,所以需要設置模型貼地。直接調用函數進行設置,調整高度,height表示物體離地面的高度,偏移矩陣 modelMatrix可以由一個 translation來確定,通過調整height來獲得不同的modelMatrix,視角縮放到瓦片集的時候調用changeHeight函數,加載處理后的3DTiles效果如圖9所示。

圖9 Cesium加載3DTilesFig.9 Cesium load 3DTiles

6 結論

本文通過研究Web應用系統和三維GIS技術,結合三維GIS集成無人機數據處理的需求,對無人機數據處理和可視化系統進行研究與設計。本文提出的系統方案釆用當前前沿的三維WebGIS技術,該結構各部分組件之間配合良好,功能強大,主要數據處理部分ODM通過docker-java封裝,單獨與Java Spring框架結合劃分微服務,方便開發調用和擴展。基于Java Spring框架與開源WebGIS技術結合起來,在 Web應用系統通用功能方面釆用 Springboot+Mybatis+Vuejs的架構確保了平臺的安全性,完整性、可移植性和可擴展性。在GIS特有功能實現上采用PostGIS作為空間數據庫,GeoServer作為地圖應用服務器,采用 GeoWebCache為地圖緩存[5],以Cesium為客戶端。以Tomcat為Web服務器搭建完成了無人機數據處理系統。

系統所使用的開發庫均為開源軟件,降低了開發成本,也使將來系統升級和功能擴展有了保障。在下一步的學習過程中將后端數據處理通過k8s技術,重新拆分微服務并進行 Docker容器的封裝來集成大規模服務器集群下的容器擴展。

猜你喜歡
數據處理可視化數據庫
基于CiteSpace的足三里穴研究可視化分析
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 欧美啪啪精品| 国产欧美高清| 欧美一区二区三区香蕉视| 黄色片中文字幕| 欧美一道本| 免费无码AV片在线观看国产| 精品国产免费观看| 久久超级碰| 国产精品人人做人人爽人人添| 中文精品久久久久国产网址| 国产女人爽到高潮的免费视频 | 国产午夜小视频| 午夜视频免费试看| 亚洲成人精品在线| 亚洲国产精品日韩av专区| 国产黄色免费看| 99久久精彩视频| 亚洲丝袜中文字幕| 四虎亚洲精品| 欧类av怡春院| 中文字幕在线视频免费| 久久久久久久久18禁秘| 日韩亚洲高清一区二区| 91丝袜乱伦| 日韩亚洲高清一区二区| 亚洲精品福利网站| www.av男人.com| AV无码无在线观看免费| 国产精品播放| 成人中文字幕在线| 国产日本欧美亚洲精品视| 亚洲黄色激情网站| 国产日韩欧美一区二区三区在线| 国产成人在线无码免费视频| 国产乱子伦精品视频| 日韩精品久久无码中文字幕色欲| 国产欧美视频一区二区三区| 亚洲精品大秀视频| 亚洲成网777777国产精品| 幺女国产一级毛片| 久久伊人操| 国产无吗一区二区三区在线欢| 欧美亚洲中文精品三区| 狠狠色丁香婷婷综合| 国产网站一区二区三区| 色综合日本| 色综合天天视频在线观看| 女人18毛片久久| 日韩精品免费在线视频| 午夜一级做a爰片久久毛片| 午夜高清国产拍精品| 国产精品久久自在自线观看| 国产精品一区不卡| 国产精品女同一区三区五区| 精品伊人久久久香线蕉 | 国产精品毛片一区| 成人av专区精品无码国产| 青草国产在线视频| 毛片在线看网站| 无码人妻热线精品视频| 日韩av高清无码一区二区三区| jijzzizz老师出水喷水喷出| 色婷婷综合在线| 特级做a爰片毛片免费69| 亚洲精品成人片在线播放| 热伊人99re久久精品最新地| 国内精品久久久久久久久久影视| 天堂av综合网| 亚洲国产成熟视频在线多多| 国产精品13页| 欧美激情视频一区二区三区免费| 国产亚洲精品va在线| 一区二区三区国产精品视频| 男女性色大片免费网站| 中文字幕无码av专区久久| 九色91在线视频| 亚洲美女视频一区| 国产日韩欧美精品区性色| 欧美人与动牲交a欧美精品| 福利国产微拍广场一区视频在线| 国产日韩欧美视频| 国产在线精品99一区不卡|