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

MicroStation三維模型導(dǎo)出ArcGIS SLPK格式探討

2020-02-08 08:41:47金波
智能制造 2020年8期
關(guān)鍵詞:模型

金波

摘要:Bentley公司基于MicroStation平臺的系列軟件能進行多專業(yè)、多行業(yè)三維建模,但其模型不能直接的導(dǎo)出到ArcGIS平臺中使用。SceneLayer Package(SLPK)是ArcGIS支持的基于OGC I3S規(guī)范的國際三維標(biāo)準(zhǔn)格式,通過研究SLPK格式和MicroStation三維模型,基于MicroStation進行MDL二次開發(fā),實現(xiàn)了在MicroStation中三維模型直接導(dǎo)出成SLPK格式,以便在GIS平臺中更好的應(yīng)用和展示BIM模型。

關(guān)鍵詞:MicroStation;SLPK;ArcGIS Pro;MDL二次開發(fā);BIM+GIS

1 引言

MicroStation是一款工程領(lǐng)域常用的二維、三維一體化計算機輔助設(shè)計軟件,Bentley公司基于MicroStation研發(fā)了一系列軟件用于土木、工廠、建筑和地理信息行業(yè),可用于創(chuàng)建各個專業(yè)和行業(yè)的三維模型,并附加屬性信息,提供了一套廣泛應(yīng)用的BIM解決方案。另外MicroStation提供了SDK,用于用戶二次開發(fā)以實現(xiàn)更多的功能。

為了更好地將BIM三維模型與GIS結(jié)合起來,ESRI公司發(fā)起了I3S規(guī)范;該規(guī)范被開放地理空間聯(lián)盟(OGC)采納為新的國際三維標(biāo)準(zhǔn)。基于I3S規(guī)范ESRI提出了三維數(shù)據(jù)格式SLPK(場景圖層包)。SLPK格式能夠在ESRI公司的ArcGIS Pro以及ArcGIS online中使用,發(fā)布為服務(wù)后可用ArcGIS API for JavaScript調(diào)用應(yīng)用于Web。

MicroStation三維模型目前不支持直接導(dǎo)出SLPK格式供ArcGIS使用,通過研究SLPK格式和MicroStation模型,基于MicroStation MDL二次開發(fā),實現(xiàn)了在 MicroStation中將模型直接導(dǎo)出為SLPK格式;同時為了更方便地在GIS系統(tǒng)中使用SLPK,在導(dǎo)出時添加了坐標(biāo)系轉(zhuǎn)換的功能,可以將模型導(dǎo)出為經(jīng)緯度坐標(biāo)或者Web墨卡托坐標(biāo)等。其轉(zhuǎn)換流程如圖1所示。

2 MicroStation三維模型簡介

在MicroStation中,元素種類很多,主要分為線、面和體幾類。三維模型通常屬于體,極少數(shù)屬于網(wǎng)格面。三維模型常見的元素種類見表1。

針對不同類型的三維模型,需要進行不同類型的處理。在程序中,首先需要判斷三維模型的類型,主要用到的函數(shù)包括mdlElement_getType()、mdlTFElmdscr_ getApplicationType()和mdlKISolid_isSolidElement()等。

mdlElement_getType()可用于判斷三維模型是否是網(wǎng)格或?qū)嶓w。

mdlKISolid_isSolidElement()可用于判斷三維模型是否是實體或智能實體。

mdlTFElmdscr_getApplicationType()可用于判斷三維模型是否屬于建筑模型單元或者復(fù)合單元。

3 模型面三角形化

三維模型幾何信息由若干個面組成,MicroStation中三維模型可能包含曲面、含圓弧的面或者多邊形面,但是在SLPK格式中,三維模型目前只支持三角形面,因此需要將MicroStation中三維模型進行三角形化,這樣就能滿足SLPK的要求。針對不同類型的三維模型需要進行不同的處理。

(1)網(wǎng)格三角形化:網(wǎng)格可能全部由三角形面組成,也可能包含四邊形面或多邊形面,可以使用mdlMesh_ copyTriangulated()函數(shù)將網(wǎng)格復(fù)制并三角形化,得到的新網(wǎng)格中只包含三角形面。接著使用mdlMesh_ getPolyfaceArrays()函數(shù)即可獲得網(wǎng)格各個三角形面的頂點坐標(biāo)。圖2中左邊為原始網(wǎng)格,右邊為三角形化的網(wǎng)格。

(2)單元、實體和智能實體三角形化:單元、實體和智能實體都只包含單個的體,首先使用mdlKISolid_ elementToBody2()函數(shù)將元素轉(zhuǎn)換成內(nèi)部KISolid,再使用mdlKISolid_facetBody()函數(shù)進行三角形化。將含曲線和圓弧的面轉(zhuǎn)換成三角形面會有精度丟失,主要依據(jù)弦公差和角度公差兩個參數(shù)來保證精度。圖3中展示的是轉(zhuǎn)換前后的變化。

(3)復(fù)合單元:復(fù)合單元由多個單元或智能實體組成,應(yīng)使用mdlKISolid_elementToBodyList()來將元素轉(zhuǎn)換成多個KISolid,對于每個KISolid使用單元、實體和智能實體的方法來進行三角形化,最后把三角形化的面合并起來存儲即可。圖4中左邊的窗戶包含6個部分,右邊是三角形化之后的效果。

在完成三角形化的同時,也獲得了模型在當(dāng)前坐標(biāo)系的頂點坐標(biāo)。

4 坐標(biāo)轉(zhuǎn)換、法線計算

SLPK的主要使用場合是Web,WebGIS系統(tǒng)常用的坐標(biāo)系是網(wǎng)絡(luò)墨卡托坐標(biāo)系(EPSG:3 857)和WGS84經(jīng)緯度坐標(biāo)系(EPSG:4 326),而MicroStation建模結(jié)合地形模型總裝后的坐標(biāo)系通常為Beijing54、Xian80或CGCS2000的三度分帶投影坐標(biāo)系,因此在模型輸出成SLPK格式時提供坐標(biāo)系轉(zhuǎn)換功能很有必要。

基于GDAL和Proj.4開源庫,根據(jù)源坐標(biāo)系和目標(biāo)坐標(biāo)系的EPSG代碼,實現(xiàn)對坐標(biāo)進行批量轉(zhuǎn)換。

當(dāng)不涉及到網(wǎng)絡(luò)墨卡托坐標(biāo)系時,主要代碼如下:bool coordTranform(int count,int srcEpsg,int destEpsg,double* px,double* py)

當(dāng)輸入坐標(biāo)系和輸出坐標(biāo)系橢球不一樣時,通常坐標(biāo)轉(zhuǎn)換需要七參數(shù)或四參數(shù)等才能精確轉(zhuǎn)換,否則轉(zhuǎn)換結(jié)果平面誤差可達數(shù)十米甚至上百米。但在實際試驗中發(fā)現(xiàn),proj.4和GDAL中已內(nèi)置了相關(guān)轉(zhuǎn)換參數(shù),不同橢球的坐標(biāo)轉(zhuǎn)換后的結(jié)果精度較高,與網(wǎng)絡(luò)地圖套和較好,故可直接使用。假如出現(xiàn)了偏差較大的情況,只需對模型進行相應(yīng)的移動即可。

除了頂點坐標(biāo)外,三維模型的顯示和渲染還需要每個面的法線向量,法線的計算方式為向量叉乘。如一個三角形面三個頂點依次分別為P1、P2和P3,則這個面的法線為,一般還需要進行歸一化使法線向量的模為1。在計算法線時需要注意,經(jīng)緯度坐標(biāo)不能直接拿來進行法線的計算,如果輸出坐標(biāo)系是WGS84經(jīng)緯度,則應(yīng)先計算法線,再進行坐標(biāo)轉(zhuǎn)換。

5 模型屬性提取

BIM模型除了幾何信息之外屬性信息也非常重要,基于MicroStation的建筑建模相關(guān)軟件的SDK中提供了一些提取屬性信息的方法。

首先設(shè)計了相應(yīng)數(shù)據(jù)結(jié)構(gòu)來存儲屬性,如下:

(1)面積:模型的表面積,類型為雙精度浮點數(shù),直接使用mdlMeasure_AreaProperties()函數(shù)獲得。

(2)體積:模型的體積,類型為雙精度浮點數(shù),直接使用mdlMeasure_volumeProperties()函數(shù)獲得。

(3)位置:模型的中心坐標(biāo),因為有三個浮點數(shù)(X,Y,Z),簡化使用字符串來存儲,從MicroStation元素的元素頭中range變量中能獲取模型坐標(biāo)值的最大值和最小值,取其平均數(shù)即為近似的模型中心坐標(biāo)。

(4)圖層:模型所在的圖層名稱,使用mdlElement_ getProperties()函數(shù)可獲得圖層ID,再使用mdlLevel_ getName()函數(shù)即可獲得圖層名稱,類型為字符串。

(5)顏色:模型頂點顏色,類型為字符串,在MicroStation中一個元素只能有一種顏色,使用mdlElement_getSymbology()函數(shù)獲取顏色索引號,如果獲得的索引號是“按層”,則需要根據(jù)圖層ID獲得顏色索引號,即使用mdlLevel_getElementColor()函數(shù)。得到顏色索引號后,通過調(diào)色板來查詢索引號對應(yīng)的顏色RGB值,用到的函數(shù)是mdlColorPal_getColorDescr()和mdlColorDescr_ getRgb(),最后將RGB值轉(zhuǎn)成字符串。

(6)類別和樣式:類別和樣式是MicroStation建筑模型最重要的屬性之一,類型為字符串,涵蓋模型材料、圖樣、工程量、渲染特性、切圖和結(jié)構(gòu)分析等一系列屬性的定義,知道了樣式名稱,即可在庫中查詢到該樣式的這些屬性,如磚外墻的類別為“Wall_Ext”,樣式為“Brick wall”。使用mdlTFPartRef_getPart()函數(shù)獲得樣式,再使用mdlTFPartRef_getPartName()函數(shù)和mdlTFPartRef_ getPartFamilyName()函數(shù)即可分別獲得樣式和類別。

(7)材質(zhì):建筑模型的材質(zhì)定義了模型的紋理和貼圖信息,從樣式定義中能獲取到材質(zhì)信息的定義,如“Concrete_3”表示貼圖為混凝土。

除了這些屬性,還能夠根據(jù)不同專業(yè)和行業(yè)來獲取所需的屬性,但是具體需要配置各專業(yè)的工作環(huán)境和約定相應(yīng)的標(biāo)準(zhǔn),目前還未深入研究。

6 輸出SLPK

完成了上述處理后,即可開始創(chuàng)建SLPK格式的場景圖層包了。

(1)格式簡介:SLPK文件是由一系列JSON文件和二進制文件按照嚴(yán)格的文件組織再打包成ZIP格式的壓縮包,其主要文件夾結(jié)構(gòu)如圖5所示。

根目錄下有metaData.json、3DSceneLayer.json兩個文件和nodes文件夾;nodes文件夾中存儲有各個節(jié)點文件夾;root文件夾下存儲的是根節(jié)點信息,只有一個文件3dNodeIndexDocument.json;其他每個節(jié)點文件夾下可存儲模型的一個部分,每部分的屬性可以不同,包括3dNodeIndexDocument.json文件和若干個子文件夾(attributes,features,geometries和shared文件夾);attirbutes文件夾下存儲的是各個屬性的值;features文件夾下有0.json文件;geometries文件夾下存儲的是0.bin文件,以二進制格式存儲頂點坐標(biāo)、法線坐標(biāo)、紋理坐標(biāo)和頂點顏色值;shared文件夾中存儲的是sharedResource.json,主要存儲紋理貼圖信息;如果存在紋理貼圖,還會有textures文件夾,里面存儲的是dds或者jpeg格式的紋理圖片。每個節(jié)點的3dNodeIndexDocument.json文件中會存有父節(jié)點的信息和子節(jié)點的信息,所有節(jié)點之間的關(guān)系是一種樹狀關(guān)系,這對于大數(shù)據(jù)量的模型有利于實現(xiàn)LOD。

(2)創(chuàng)建JSON文件:JSON文件是JavaScript Object Notation的縮寫,是一種用來存儲和表示數(shù)據(jù)的文本格式,使用cJson庫能夠很方便地進行JSON文件的讀寫。對于SLPK包內(nèi)的所有json格式的文件,都可以用cJson庫進行創(chuàng)建,各個文件具體內(nèi)容參見OGC SLPK官方文檔。metaData.json文件的創(chuàng)建代碼如下:

在0.bin中依次存儲的是頂點數(shù)組、法線數(shù)組、紋理坐標(biāo)數(shù)據(jù)和顏色數(shù)組,寫入文件可使用ofstream,ofstream::write()函數(shù)能夠快速批量將數(shù)組寫入到文件中。

屬性值也可存儲在名為0.bin的二進制文件中,對于不同屬性類型的屬性值,寫入方法有所差別,其代碼如下:

要注意將字符串轉(zhuǎn)成UTF-8編碼,否則漢字顯示為亂碼。

(4)文件壓縮:完成創(chuàng)建所有文件后,需要將除了metaData.json外的所有文件先壓縮成gz格式,在程序中使用ShellExecute()函數(shù)調(diào)用開源的壓縮軟件7z.exe,給定參數(shù)“a <文件名>.gz <文件名>”即可完成壓縮,壓縮的同時刪除掉原文件;接著使用ShellExecute()調(diào)用7z.exe,給定參數(shù)“a <模型文件夾><模型名>.zip -ir!<模型文件夾>*.* -mx0”,即可將所有文件打包成zip格式;最后將zip文件名稱中后綴名“.zip”修改成“.slpk”即完成的場景圖層包的創(chuàng)建。

7 運行結(jié)果

在MicroStation中運行MDL程序,界面如圖6所示。

選中要導(dǎo)出的一個或者多個模型(多個模型時,每個模型會導(dǎo)出成場景圖層包的一個節(jié)點),設(shè)置相應(yīng)路徑、名稱和坐標(biāo)系等參數(shù),在視圖中單擊左鍵即開始導(dǎo)出。導(dǎo)出完成后,在ArcGIS online中,直接即可將SLPK文件上傳并發(fā)布成Scene Layer。圖7、圖8分別是大壩原始三維模型和在網(wǎng)頁中展示的效果。圖9、圖10是房屋原始三維模型和在網(wǎng)頁中展示的效果。

圖11為在網(wǎng)頁中可以查詢模型每一個部分的屬性。

使用ArcGIS API for JS調(diào)用SLPK場景圖層的示例代碼如下:

8 結(jié)語

通過研發(fā)和實踐,解決了MicroStation三維建筑模型直接導(dǎo)出成SLPK場景圖層包的問題,為BIM模型和GIS系統(tǒng)的應(yīng)用結(jié)合打下了一些基礎(chǔ)。

參考文獻:

[1]OGC Indexd 3d Scene Layer(I3S) and Scene Layer Package Format Specification.

[2]彭殿軍.從MicroStation三維模型到二維圖紙的生成流程[J].有色冶金設(shè)計與研究,2016(05):106-107,110.

[3]張燕,唐相楨.MicroStation圖形數(shù)據(jù)到ArcGIS數(shù)據(jù)轉(zhuǎn)換方法的研究[J].城市勘測,2015(1):26-29.

[4]喬新,王海銀,胡振彪.MicroStation調(diào)用WebGIS地圖服務(wù)的開發(fā)與應(yīng)用[J].現(xiàn)代測繪,2011(2):29-31.

猜你喜歡
模型
一半模型
一種去中心化的域名服務(wù)本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數(shù)模型及應(yīng)用
p150Glued在帕金森病模型中的表達及分布
函數(shù)模型及應(yīng)用
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 亚洲成aⅴ人片在线影院八| 久久久四虎成人永久免费网站| 亚洲精品欧美重口| 99久久亚洲综合精品TS| 色屁屁一区二区三区视频国产| 激情五月婷婷综合网| 亚洲第一综合天堂另类专| 欧美69视频在线| 91在线丝袜| 狠狠色综合网| 精品精品国产高清A毛片| 黄片一区二区三区| 国产香蕉在线视频| 欧美有码在线| 免费啪啪网址| 在线看片中文字幕| 精品国产Av电影无码久久久| 欧美人在线一区二区三区| 精品福利一区二区免费视频| 国产91av在线| 国产成人永久免费视频| 性激烈欧美三级在线播放| 黄色成年视频| 日本一区二区三区精品AⅤ| 尤物视频一区| 亚洲日韩高清在线亚洲专区| 免费人欧美成又黄又爽的视频| 国产网友愉拍精品| 日韩专区欧美| 午夜免费视频网站| 欧美日一级片| 亚洲人成网线在线播放va| 久久中文电影| 国产情侣一区二区三区| 中文字幕资源站| 91在线无码精品秘九色APP| 欧美日韩中文国产| 亚洲欧美一区二区三区图片| 在线观看欧美国产| 日韩av手机在线| 四虎永久免费地址| 国产成人艳妇AA视频在线| 熟女日韩精品2区| 无码'专区第一页| 三级毛片在线播放| 欧洲一区二区三区无码| 欧美精品二区| 网久久综合| 免费欧美一级| 亚洲天堂精品在线观看| 日韩一级毛一欧美一国产| 亚洲成人手机在线| 国产高潮流白浆视频| 亚洲五月激情网| 波多野结衣第一页| 亚洲无码视频图片| 国产在线视频二区| 71pao成人国产永久免费视频 | 日韩a在线观看免费观看| 免费无遮挡AV| 91在线无码精品秘九色APP | 欧美a级完整在线观看| 2024av在线无码中文最新| 99国产精品免费观看视频| 久久公开视频| 国产剧情无码视频在线观看| 亚洲综合在线网| 中文字幕av无码不卡免费| www.亚洲一区| 免费jizz在线播放| 草逼视频国产| 999福利激情视频| 四虎国产精品永久一区| 国产av无码日韩av无码网站 | 欧美区一区| 狠狠色噜噜狠狠狠狠奇米777| 97国内精品久久久久不卡| 久久中文字幕av不卡一区二区| 久久久久无码国产精品不卡 | 亚洲成人www| 99久久精品无码专区免费| 色婷婷成人|