• 
    

    
    

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

      基于DXF文件的水利工程地形模型構(gòu)建方法研究

      2020-10-12 14:27:14劉尚蔚周鈺航魏群
      人民黃河 2020年4期

      劉尚蔚 周鈺航 魏群

      摘 要:數(shù)字地形模型(DTM)是水利水電工程三維數(shù)字模型的重要組成部分,應(yīng)用范圍非常廣泛。一般的建模軟件流程繁瑣,嚴(yán)重影響建模效率且存在地形表面失真,不能準(zhǔn)確地表現(xiàn)真實(shí)地形信息。本文通過(guò)分析DXF文件的數(shù)據(jù)結(jié)構(gòu),在Python環(huán)境下利用Python語(yǔ)言編寫(xiě)程序讀取和直接編寫(xiě)DXF文件,利用Delaunay算法生成三角網(wǎng)描述地形曲面拓?fù)潢P(guān)系,并將拓?fù)湫畔⒅苯訉?xiě)入DXF文件中,編寫(xiě)的DXF文件可在不同軟件中通過(guò)拉伸生成實(shí)體,既實(shí)現(xiàn)了三維數(shù)字地形模型的快速建模,又可滿足不同軟件之間的數(shù)據(jù)交換。此方法在某水利工程三維數(shù)字地形模型中成功應(yīng)用,對(duì)基于DXF文件的直接建模方法研究具有借鑒意義。

      關(guān)鍵詞:Python;DXF;不規(guī)則三角網(wǎng);三維地形實(shí)體模型

      中圖分類號(hào):TV39 ? 文獻(xiàn)標(biāo)志碼:A

      doi:10.3969/j.issn.1000-1379.2020.04.034

      Abstract:Digital Terrain Model (DTM) is an important part of the 3D digital model of water conservancy and hydropower engineering and its application range is very wide. The general modeling software process is cumbersome, seriously affecting the modeling efficiency and the terrain surface distortion cant strictly represent the real terrain information. By analyzing the data structure of DXF files, this paper used Python language to write programs and directly write DXF files in Python 3.7 environment. The Delaunay algorithm was used to generate triangulation to describe the terrain surface topological relationship and the topology information was directly written into the DXF file. The DXF file could be generated by stretching in different software, which could not only realize the rapid modeling of the 3D digital terrain model but also the data exchange between different software. This method had been successfully applied in the 3D digital terrain model of a water conservancy project and it could be used as a reference for the direct modeling method based on DXF file.

      Key words: Python; DXF; TIN; 3D terrain solid model

      隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,BIM技術(shù)已經(jīng)被廣泛應(yīng)用于土木工程、水利水電工程等多個(gè)領(lǐng)域,BIM技術(shù)的實(shí)質(zhì)是結(jié)構(gòu)工程的數(shù)字圖形與相關(guān)信息融合集成及動(dòng)態(tài)關(guān)聯(lián)[1-2]。水工BIM技術(shù)應(yīng)用中,地形模型作為描述工程施工總布置的基礎(chǔ),不僅為所有水工建筑物及施工提供活動(dòng)場(chǎng)所,方便設(shè)計(jì)方進(jìn)行合理規(guī)劃設(shè)計(jì),而且通過(guò)建立不同時(shí)期的曲面,如原始地形曲面、設(shè)計(jì)開(kāi)挖土方量的體積曲面,可以快速精確地計(jì)算出開(kāi)挖或者回填的土方量。可見(jiàn)快速高效地建立高質(zhì)量的地形模型在水工BIM技術(shù)應(yīng)用中具有重要意義。

      目前AutoCAD是全球用戶最多的圖形設(shè)計(jì)軟件之一,也是影響最大的圖形設(shè)計(jì)軟件[3]。為滿足不同軟件之間進(jìn)行圖形數(shù)據(jù)信息交換的需求,提高數(shù)據(jù)交換精度,Autodesk公司開(kāi)發(fā)了一種數(shù)據(jù)存儲(chǔ)格式即DXF,在DXF文件中數(shù)據(jù)信息按照嚴(yán)格的格式進(jìn)行排列,用戶可以通過(guò)對(duì)DXF的讀取和修改完成數(shù)據(jù)的篩選和處理,完成一些重復(fù)且繁瑣的建模工作?;贒XF的數(shù)字圖形建模方法與所選軟件平臺(tái)無(wú)關(guān),任何從三維軟件中得到的數(shù)據(jù)信息按照DXF文件的格式進(jìn)行排列即可生成新的DXF文件,完成數(shù)據(jù)交換[2]。

      DXF文件具有結(jié)構(gòu)嚴(yán)密、易于讀取等特點(diǎn),成為國(guó)際上較為通用的圖形交換文件之一[4]。目前國(guó)內(nèi)外學(xué)者也通過(guò)編寫(xiě)接口程序使用不同的算法對(duì)DXF文件進(jìn)行操作從而應(yīng)用在不同的領(lǐng)域中,盧曉春等[4]基于DXF文件開(kāi)發(fā)有限元后處理系統(tǒng),滿足了個(gè)性化的后處理顯示功能;姚冕等[5]提出基于DXF格式的優(yōu)化數(shù)控代碼自動(dòng)生成方法,實(shí)現(xiàn)了讀取DXF文件過(guò)程自動(dòng)生成數(shù)控加工代碼,解決了傳統(tǒng)讀取算法中讀取結(jié)果無(wú)序,不適合實(shí)際加工的難題;Atia[6]通過(guò)算法實(shí)現(xiàn)對(duì)DXF文件中重復(fù)對(duì)象的消除和分類,解決了數(shù)據(jù)交換中因?qū)ο笮畔⒅貜?fù)而導(dǎo)致模型無(wú)法重構(gòu)的問(wèn)題。筆者結(jié)合Python面向?qū)ο蟮膬?yōu)勢(shì)與DXF豐富的擴(kuò)展性和數(shù)據(jù)可控性,研究基于DXF文件的三維地形實(shí)體模型的創(chuàng)建方法。

      1 DXF文件數(shù)據(jù)獲取及創(chuàng)建

      1.1 DXF文件的結(jié)構(gòu)

      DXF文件是一種開(kāi)放的矢量數(shù)據(jù)格式,由標(biāo)題段(HEADER)、類段(CLASSBS)、表段(TABLES)、塊段(BLOCK)、實(shí)體段(ENTITIES)、對(duì)象段(OBJECTS)和文件結(jié)束段(EOF of FILE)構(gòu)成,具體含義見(jiàn)表1。每段又由許多“組”逐行排列構(gòu)成,每組占兩行,第一行為組的代碼,表示本組的數(shù)據(jù)類型,含義由AutoCAD開(kāi)發(fā)公司定義,第二行為組值,是數(shù)據(jù)變量的值,二者結(jié)合起來(lái)相當(dāng)于數(shù)據(jù)的含義和值[7]。如組碼“0”和組值“SECTION”代表新段的開(kāi)始。

      在實(shí)際應(yīng)用中,圖形的可視化數(shù)據(jù)信息主要存儲(chǔ)在實(shí)體段(ENTITIES),如點(diǎn)、線、面、文字等。對(duì)上述圖元、圖層、線型、坐標(biāo)等信息的提取,只需遍歷ENTITIRS段,設(shè)置關(guān)鍵詞即可讀取每個(gè)圖元的幾何數(shù)據(jù)信息。

      1.2 數(shù)據(jù)獲取與處理

      獲取DXF文件數(shù)據(jù)的核心是準(zhǔn)確獲取存放于ENTIITES段中的點(diǎn)、線、面等圖形屬性的幾何信息,通過(guò)對(duì)獲取的數(shù)據(jù)進(jìn)行處理完成模型檢查分析或者導(dǎo)出其他格式文本對(duì)數(shù)據(jù)進(jìn)行利用。在DXF文件中,每個(gè)圖形對(duì)象的坐標(biāo)數(shù)據(jù)信息與其單獨(dú)的句柄(handle)相匹配,通過(guò)嚴(yán)格的組碼及其值的排列來(lái)表述。由于傳統(tǒng)意義上的面向過(guò)程的算法獲取和處理DXF中的幾何信息比較繁瑣且獲取的點(diǎn)的信息易與幾何對(duì)象不匹配,因此筆者利用面向?qū)ο蟮腜ython語(yǔ)言來(lái)獲取和處理DXF文件中的數(shù)據(jù)信息。

      面向?qū)ο蟮幕舅惴ㄔ硎牵簩NTITIES段中所有的圖形對(duì)象信息儲(chǔ)存在modelspace函數(shù)中,通過(guò)判斷對(duì)象類型來(lái)查詢具體屬性信息。每一個(gè)對(duì)象的數(shù)據(jù)庫(kù)中包含了幾何關(guān)系、坐標(biāo)、圖層等圖形信息,通過(guò)相應(yīng)的查詢函數(shù)即可獲取數(shù)據(jù)信息。將獲得的數(shù)據(jù)以列表或者元組的形式儲(chǔ)存,每一個(gè)基礎(chǔ)列表或元組中依次存放X、Y、Z坐標(biāo)信息,方便使用Scipy和Numpy模塊對(duì)點(diǎn)的數(shù)據(jù)進(jìn)行科學(xué)計(jì)算處理。程序中結(jié)合ezdxf庫(kù)編寫(xiě)算法實(shí)現(xiàn)面向?qū)ο蟮臄?shù)據(jù)獲取。以“LINE”為例,面向?qū)ο蠛兔嫦蜻^(guò)程的數(shù)據(jù)獲取流程見(jiàn)圖1和圖2。

      1.3 創(chuàng)建DXF文件

      DXF文件目前可以被大多數(shù)計(jì)算機(jī)輔助設(shè)計(jì)軟件所識(shí)別,利用數(shù)據(jù)直接編寫(xiě)DXF文件實(shí)現(xiàn)不同軟件之間的圖形數(shù)據(jù)交換,會(huì)帶來(lái)事半功倍的效果。但是由于DXF組碼及其值排列嚴(yán)格,且不同組碼及其值代表的含義也都不同,因此利用其他編程語(yǔ)言實(shí)現(xiàn)這一過(guò)程比較復(fù)雜。

      基于Python調(diào)用ezdxf模塊創(chuàng)建新的DXF文件,簡(jiǎn)化逐行填寫(xiě)組碼及其值的過(guò)程,重點(diǎn)放在確定DXF文件中不同的對(duì)象,如“LINE”“3Dface”“Mesh”等。圖層信息、線型信息、顏色信息等作為屬性添加到已確定的對(duì)象中。創(chuàng)建新的DXF文件的一般流程如下:①首先調(diào)用“ezdxf.new(‘版本名稱)”函數(shù)定義新建的DXF文件的版本類型;②調(diào)用“modelspace()”函數(shù)創(chuàng)建儲(chǔ)存圖形數(shù)據(jù)的模型空間;③調(diào)用“l(fā)ayer.new(‘圖層名稱,dxfattributs={‘具體線型和屬性等名稱})”函數(shù)定義相應(yīng)的圖層信息;④調(diào)用“add_對(duì)象名稱()”函數(shù)添加對(duì)象信息;⑤調(diào)用dwg.saves(‘名稱.dxf)函數(shù)命名并保存創(chuàng)建的DXF文件。

      2 工程實(shí)例

      某國(guó)家重點(diǎn)水利工程地形條件復(fù)雜,挖填土方量大,精確完整的數(shù)字地形可為其提供精確的挖填土方量的計(jì)算和三維虛擬展示。

      2.1 地形圖形數(shù)據(jù)處理

      建立三維地形圖首先對(duì)AutoCAD圖紙中的原始數(shù)據(jù)進(jìn)行檢查分析,為避免地形BIM模型與實(shí)際偏差過(guò)大,對(duì)等高線進(jìn)行仔細(xì)檢查并進(jìn)行修改,調(diào)整處理后的等高線如圖3所示。將處理過(guò)的圖紙轉(zhuǎn)存為DXF格式,在DXF文件中,等高線的對(duì)象類型一般是多段線(POLYLINE),可以在Python中調(diào)用ezdxf的query函數(shù)尋找對(duì)象“POLYLINE”,并把其頂點(diǎn)坐標(biāo)信息作為不規(guī)則三角網(wǎng)(TIN)的原始數(shù)據(jù)。

      將處理過(guò)的AutoCAD圖紙轉(zhuǎn)存為DXF格式,通過(guò)上述程序讀取DXF文件快速獲取坐標(biāo)數(shù)據(jù)信息,并創(chuàng)建相應(yīng)的列表進(jìn)行儲(chǔ)存或直接存儲(chǔ)為CSV文件。部分包含了離散點(diǎn)信息的CSV文件如圖4所示。

      2.2 地形曲面模型的生成

      讀取DXF文件提取的原始等高線中的幾何離散點(diǎn),通過(guò)Delaunay三角網(wǎng)格描述其拓?fù)潢P(guān)系。Delaunay三角剖分法具有最接近、唯一性、最規(guī)則及最優(yōu)性等優(yōu)點(diǎn)[8],在計(jì)算機(jī)圖形學(xué)中得到廣泛應(yīng)用,實(shí)現(xiàn)Delaunay的算法有很多,在本工程中,基于Python強(qiáng)大的科學(xué)計(jì)算能力,采用思路簡(jiǎn)單易于編程實(shí)現(xiàn)的逐點(diǎn)插入Lawson算法,如圖5所示,其基本數(shù)學(xué)原理為:

      (1)假設(shè)集合V是二維實(shí)數(shù)域上的離散點(diǎn)集,繪制三角形△ABC把所有集合V包圍起來(lái);

      (2)向三角形中插入集合V中的離散點(diǎn)Pi(i=0,1,2,3,…),使該點(diǎn)與包含它的三角形的3個(gè)頂點(diǎn)相連形成3個(gè)新的三角形;

      (3)逐個(gè)對(duì)生成的三角形進(jìn)行空外接圓檢測(cè),同時(shí)用Lawson設(shè)計(jì)的局部最優(yōu)化過(guò)程LOP進(jìn)行優(yōu)化,即通過(guò)交換對(duì)角線的方法來(lái)保證所形成的三角網(wǎng)為Delaunay三角網(wǎng)。

      在Python的Scipy庫(kù)中提供了面向?qū)ο蟮膕patial.Delaunay()接口函數(shù)來(lái)進(jìn)行Delaunay三角構(gòu)網(wǎng),實(shí)現(xiàn)自動(dòng)繪制不規(guī)則三角網(wǎng)。遍歷生成的三角網(wǎng)獲取拓?fù)湫畔?,將Z軸數(shù)據(jù)依次加入三角網(wǎng)中形成三維曲面。利用Delunay算法生成不規(guī)則三角網(wǎng)格的過(guò)程中容易在凹形等高線處生成平三角形,即Z軸坐標(biāo)相等的三角形,造成與實(shí)際地形不符。改進(jìn)算法為遍歷Delaunay三角形,找到凹形等高線處的平三角形和與之相鄰的非平三角形,在非平三角形中插入補(bǔ)充特征點(diǎn)完成平三角形優(yōu)化[9]。將最終生成的拓?fù)湫畔⒄砗笾苯訉?xiě)入新的DXF文件,在DXF文件中通過(guò)對(duì)象“3Dface”來(lái)描述不規(guī)則三角網(wǎng)面,實(shí)現(xiàn)地形曲面自動(dòng)繪制,與此同時(shí)調(diào)用matplotlib模塊實(shí)現(xiàn)可視化展示。生成的DXF文件可在AutoCAD中或者Ansys workbench的SpaceClaim前處理軟件中打開(kāi)。Matplotlib可視化展示結(jié)果如圖6所示,生成的地形曲面如圖7所示。

      2.3 生成三維實(shí)體

      在AutoCAD軟件中,打開(kāi)創(chuàng)建的包含地形曲面的DXF文件,通過(guò)拉伸、合并創(chuàng)建三維地形實(shí)體。具體步驟如下:

      (1)建立拉伸路徑。由于地形曲面的投影平面與大地深度方向垂直,因此假設(shè)地形曲面的投影平面為XY平面,大地深度方向?yàn)閆軸方向。沿著地形曲面的正投影方向繪制拉伸路徑,通過(guò)拉伸命令,將曲面轉(zhuǎn)換為實(shí)體,路徑深度根據(jù)工程模擬深度確定。

      (2)合并實(shí)體。由于地形曲面由獨(dú)立的不規(guī)則三角網(wǎng)表面構(gòu)成,因此拉伸生成的實(shí)體為獨(dú)立的三維柱狀實(shí)體,通過(guò)合并命令,完成多個(gè)獨(dú)立柱狀實(shí)體的布爾運(yùn)算,生成一個(gè)完整的三維實(shí)體地形。合并后的三維地形實(shí)體模型如圖8所示。

      3 結(jié) 語(yǔ)

      利用Python語(yǔ)言直接對(duì)DXF文件進(jìn)行操作,基于面向?qū)ο蟮睦砟?,?jiǎn)化獲取數(shù)據(jù)和編寫(xiě)DXF的過(guò)程,利用等高線數(shù)據(jù)對(duì)數(shù)字地形模型自動(dòng)建模,在BIM技術(shù)的應(yīng)用中,極大地提高了建模效率和建模質(zhì)量。基于Python的DXF操作方法具有優(yōu)秀的擴(kuò)展性,除了基于DXF文件直接創(chuàng)建三維地形曲面完成實(shí)體建模外,還可將計(jì)算機(jī)視覺(jué)處理學(xué)和計(jì)算機(jī)圖形學(xué)結(jié)合,通過(guò)邊緣檢測(cè)從圖片中獲取邊界數(shù)據(jù)信息,經(jīng)過(guò)處理分類,采用本文程序?qū)懭氩?chuàng)建DXF文件,實(shí)現(xiàn)二維平面圖向三維模型的轉(zhuǎn)換。

      參考文獻(xiàn):

      [1] 趙繼偉,魏群,張國(guó)新.水利工程信息模型的構(gòu)建及其應(yīng)用[J].水利水電技術(shù),2016,47(4):29-33.

      [2] 魏群,尹偉波,劉尚蔚.BIM技術(shù)中的數(shù)字圖形信息融合集成系統(tǒng)研究進(jìn)展[C]//2014年中國(guó)建筑金屬結(jié)構(gòu)協(xié)會(huì)鋼結(jié)構(gòu)分會(huì)年會(huì)和建筑鋼結(jié)構(gòu)專家委員會(huì)學(xué)術(shù)年會(huì)論文集.北京:中國(guó)建筑工業(yè)出版社,2014:118-127.

      [3] 張愛(ài)梅,鞏奇,趙艷霞,等.AutoCAD 2007計(jì)算機(jī)繪圖實(shí)用教程[M].北京:高等教育出版社,2007:2-4.

      [4] 盧曉春,童富果,田斌.基于AutoCAD平臺(tái)的有限元后處理系統(tǒng)開(kāi)發(fā)[J].人民長(zhǎng)江,2014,45(5):34-37.

      [5] 姚冕,唐厚君.基于DXF格式的優(yōu)化數(shù)控代碼自動(dòng)生成方法[J].測(cè)控技術(shù),2014,33(11):81-84.

      [6] ATIA M R A. Classification and Elimination of Overlapped Entities in DXF Files[J]. Ain Shams Engineering Journal, 2014(5):851-860.

      [7] 劉勝華,徐衛(wèi)兵.AutoCAD DXF文件格式與二次開(kāi)發(fā)[J].科技資訊,2017,15(10):15-17.

      [8] 王大志.一種快速實(shí)現(xiàn)地形圖三維實(shí)體建模方法[J].圖學(xué)學(xué)報(bào),2017,38(1):23-27.

      [9] 劉慶元,易柳城,劉莉.一種以等高線為特征線的不規(guī)則三角網(wǎng)的生成方法[J].礦山測(cè)量,2012(3):13-15.

      【責(zé)任編輯 張 帥】

      阜新市| 麻城市| 延寿县| 黑山县| 文登市| 璧山县| 蕉岭县| 神农架林区| 沾益县| 连南| 克什克腾旗| 保山市| 叶城县| 福州市| 武安市| 出国| 图片| 德令哈市| 龙南县| 正定县| 乌兰县| 新巴尔虎右旗| 新巴尔虎左旗| 浠水县| 石门县| 顺义区| 高台县| 砚山县| 洞头县| 漳浦县| 石门县| 巴塘县| 西乌珠穆沁旗| 广宁县| 永康市| 平陆县| 黄梅县| SHOW| 特克斯县| 南部县| 武平县|