• 
    

    
    

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

      基于MATLAB實現(xiàn)航道地形可視化

      2019-04-20 02:16:52
      人民珠江 2019年4期
      關(guān)鍵詞:拋石航道實體

      (江西省港航設(shè)計院,江西南昌330038)

      MATLAB作為比較流行的三大商業(yè)數(shù)學(xué)軟件之一,開始階段主要用于矩陣運(yùn)算目的,逐步用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算等高級技術(shù)計算語言和交互式環(huán)境,如今高級版本還支持多種語言程序軟件如:C、C++、JAVA等,不僅如此MATLAB還可以進(jìn)行大量的數(shù)據(jù)處理畫圖表,簡單、方便、美觀;而AutoCAD主要是用于二維繪圖、工程施工繪圖以及基本三維制圖設(shè)計,尤其是在工程制圖方面應(yīng)用非常廣泛。

      AutoCAD作為可靠的制圖軟件,人們都嘗試去與其他交集軟件相對接,以達(dá)到擴(kuò)展某一軟件的特定功能,并取得一定的成效。劉天立[1]、曹蘭芳[2]、王潤云[3]等就通過C語言實現(xiàn)了與AutoCAD的對接;馬云飛[4]等人編程實現(xiàn)了AutoCAD到MapInfo的數(shù)據(jù)轉(zhuǎn)換;以及將已有的AutoCAD格式的數(shù)據(jù)轉(zhuǎn)換成GIS數(shù)據(jù)庫等案例數(shù)不勝數(shù)[5-6];唯獨在MATLAB與AutoCAD的對接沒有類似的研究。DXF文件是作為AutoCAD數(shù)據(jù)存儲的重要形式和數(shù)據(jù)傳遞的接口,其文件結(jié)構(gòu)研究也非常重要[7],李芳珍進(jìn)行DXF文件格式及其外部接口的研究[8],并通過Visual C++編程讀取DXF格式文件,實現(xiàn)DXF文件的外部對接,并且在AutoCAD與自行開發(fā)軟件之間數(shù)據(jù)創(chuàng)建了通道,實現(xiàn)數(shù)據(jù)資源輸入、輸出和共享。秦永[9]介紹MATLAB圖形數(shù)據(jù)轉(zhuǎn)換為DXF格式的研究方法;胡春霞[10]應(yīng)用VB和MATLAB實現(xiàn)三維數(shù)據(jù)可視化;王華強(qiáng)[11]、曹偉國[12]、劉文龍[13]等用MATLAB進(jìn)行過數(shù)據(jù)的可視化繪圖研究。但是AutoCAD與MATLAB的數(shù)據(jù)對接并且輸出可視化結(jié)果還沒有提到。目前航道方面王仙美[14]使用VB開發(fā)了水運(yùn)船閘及航道工程土方計算系統(tǒng)軟件,主要是土方計算和數(shù)據(jù)輸出;侯志強(qiáng)開發(fā)了航道工程剖面分析軟件,主要功能是航道斷面尺寸的分析;楊波[15]使用C++就航道疏浚開發(fā)了疏浚航跡剖面顯示軟件。

      本研究使用MATLAB語言實現(xiàn)拋石地形數(shù)據(jù)的三維可視化。通過軟件進(jìn)行數(shù)據(jù)分析計算施工過程中的拋石方量、面積以及輸出斷面等??梢詫崟r監(jiān)測航道拋石作業(yè)中拋石的質(zhì)量和精度來提高施工質(zhì)量、節(jié)約時間和經(jīng)濟(jì)成本。

      1 DXF文件格式結(jié)構(gòu)

      DXF是AutoCAD支持的格式之一,是與其他軟件之間進(jìn)行CAD數(shù)據(jù)交互的CAD數(shù)據(jù)格式文件,因此實現(xiàn)MATLAB與AutoCAD的交互DXF格式文件是研究的重點和突破口。兩者之間互通主要需先了解DXF文件的格式特點,再利用MATLAB語言讀寫和提取相關(guān)數(shù)據(jù),然后利用MATABL強(qiáng)大的功能進(jìn)行其他的數(shù)據(jù)分析,最后將圖形數(shù)據(jù)按照DXF格式輸出保存。DXF文件是以文檔的形式來描述圖形數(shù)據(jù),且以特定的數(shù)據(jù)格式來存儲數(shù)據(jù),故可以使用文本文檔方式查看。DXF文件主要由七大段組成,見圖1a;而圖1b則是部分實體圓、圓弧和線段儲存格式。其中分隔符0為開始行,下一行則是表示實體名稱如:LINE、ARC、CRCLE;AcDbEntity下面兩行“8”代表圖層組碼,第二行為圖層名稱;“10”“20”“30”分別是X、Y、Z軸的組碼,其后一行為對應(yīng)的X、Y、Z坐標(biāo)值;圓和圓弧而言“40”是半徑的組碼,“11”“21”“31”是線段終點坐標(biāo)X、Y、Z的組碼,“50”“51”是圓弧的始末角度組碼。組代碼和組值為一個組如:圓弧實體下“40”, 43.600 458 71,就為一個完整的組,通過組代碼可以容易識別組值的內(nèi)在含義。有些數(shù)字在不同的實體代表不同的含義,而有些是固定的含義。遇到更多形式的實體可以參考組碼含義(表1)或者閱讀AutoCAD使用手冊[16]中DXF相關(guān)文檔,這里就不詳細(xì)實例列舉。

      組代碼含義組代碼含義0標(biāo)志一個事物的開始38實體高度1一個文本,如字符串的值等39實體厚度2名字,如段、表、塊的名字40~48高度、寬度、距離3~4字符型數(shù)據(jù)的值,如線型說明49重復(fù)性的值5實體描述字50~58角度值6線型名62顏色好7字樣名66實體跟隨標(biāo)志8圖層名70~78整數(shù)值,如重復(fù)次數(shù)、標(biāo)志位、模式等9標(biāo)題變量名210X方向分量10~18X坐標(biāo)值220Y方向分量20~28Y坐標(biāo)值230Z方向分量30~37Z坐標(biāo)值999解釋行

      2 AutoCAD數(shù)據(jù)在MATLAB中的傳遞

      航道地形的可視化需要得到三維地形數(shù)據(jù),然后利用MTALAB編譯功能,將地形數(shù)據(jù)轉(zhuǎn)化為視覺以及進(jìn)一步的分析數(shù)據(jù)。首先是要能夠讀取數(shù)據(jù),MATLAB讀取地形數(shù)據(jù)方式較方便,且方法多樣、操作簡單。例如先在CAD地形圖中進(jìn)行屬性提取,選擇X、Y、Z坐標(biāo)選項,導(dǎo)出*xls或者*txt格式文件等。運(yùn)用MATLAB讀取數(shù)據(jù)文件,針對不同格式文件所用函數(shù)有所區(qū)別。

      a) {'xls' ,'xlsx'}文件使用“xlsread”讀取具體代碼如下:

      [num,~,~] = xlsread([pathname,filename]);(讀取某路徑下的文件)

      X=num(:,1);(讀取X坐標(biāo)數(shù)據(jù))

      Y=num(:,2);(讀取Y坐標(biāo)數(shù)據(jù))

      Z=num(:,3);(讀取Z坐標(biāo)數(shù)據(jù))

      b) {'txt','dat','csv'}文件使用“textscan”讀取具體代碼如下:

      fileID = fopen([pathname,filename]);(打開某路徑下的文件)

      Data = textscan(fileID,'%f,%f,%f','headerlines',1);(提取文件數(shù)據(jù))

      fclose(fileID);

      X=Data{1,1};(讀取X坐標(biāo)數(shù)據(jù))

      Y=Data{1,2};(讀取Y坐標(biāo)數(shù)據(jù))

      Z=Data{1,3};(讀取Z坐標(biāo)數(shù)據(jù))

      MATLAB中函數(shù)種類齊全,基本可以滿足需求,讀取XYZ數(shù)據(jù)后,先通過函數(shù)“delaunay”進(jìn)行非結(jié)構(gòu)化,目的是為下一步三維地形顯示進(jìn)行預(yù)處理。

      tri=delaunay(X, Y);(數(shù)據(jù)非結(jié)構(gòu)化)

      接下來通過高程來控制地形在三維視圖的顏色,這樣視覺效果顯的更加好:

      ColorZ=zeros(size(Z));(定義維度為Z的空矩陣)

      ColorZ(:)=min(Z);(獲取Z的最小值)

      最后使用“trimesh”函數(shù)將地形三維可視化,

      XYZ=trimesh(tri,X,Y,Z,ColorZ);(可視化)

      也可以使用“contour3”/“contour” 函數(shù)實現(xiàn)等值線圖、云圖等,使得地形的顯示多樣化:

      [C,h]=contour3(X,Y,Z,]);(等值線化)

      圖2中可以看到地形數(shù)據(jù)經(jīng)過MATLAB處理以后,可以實現(xiàn)地形3D查看,地形形態(tài)直接明了,也可以顯示為CAD中的等高線形式,等高線的高差還可以自己任意控制。

      3 MATLAB數(shù)據(jù)傳遞到DXF文件

      MATLAB數(shù)據(jù)傳遞到CAD中,必須將數(shù)據(jù)寫入特定的DXF文件中。寫成DXF文件有2種方法:①通過程序完整的一次性寫成DXF文件;②預(yù)先準(zhǔn)備空的DXF文件或者有特定內(nèi)容的DXF文件,再通過程序?qū)懭胄枰膱D形數(shù)據(jù)即可。顯然第二種方法要簡單、方便得多;第一種則針對性強(qiáng),一一對應(yīng)。本文只對第二種方法進(jìn)行闡述。

      Step1預(yù)先打開AutoCAD保存一個空的DXF或者自定義的DXF模板,首先使用“textread”函數(shù)讀取預(yù)設(shè)的DXF文件。

      A=textread('Drawing2004new.dxf','%s','delimiter','/n');(讀取DXF腳本)

      Step2然后利用“find”找到DXF文件中實體數(shù)據(jù)的位置,為插入實體數(shù)據(jù)做準(zhǔn)備。

      m=find(strcmp(A,'ENTITIES'));(找到腳本中數(shù)據(jù)插入點)

      Step3再使用自編的“Dxf_Polyline”函數(shù)(該函數(shù)只適用于自己的實例就不詳細(xì)說明)得到實體數(shù)據(jù)并寫入數(shù)據(jù)。

      dxf=Dxf_Polyline(XY,n,Ai);(獲取實體對象,XY數(shù)據(jù)存儲矩陣,n為實體個數(shù),Ai)

      Dxf_Polyline函數(shù)是通過輸入數(shù)據(jù)矩陣,實體個數(shù)以及Ai,達(dá)到按照DXF格式寫好的的數(shù)據(jù)矩陣。

      A_new=[A(1:m,1);name;dxf;A(m+1:end,1)];(將生成的實體對象串成一個結(jié)構(gòu))

      Step4最后新建一個DXF文件完整的寫入數(shù)據(jù)保存。

      fid=fopen([pathname,filename],'a');(保存文件路徑、文件名)

      for i=1:length(A_new)

      fprintf(fid,'%s/r/n',A_new{i,1});(寫入數(shù)據(jù))

      end

      fclose(fid);(關(guān)閉文件)

      4 數(shù)據(jù)的交互在航道拋石斷面監(jiān)測軟件中的應(yīng)用

      4.1 航道拋石斷面監(jiān)測軟件在航道工程的作用

      航道拋石施工斷面監(jiān)測軟件就是通過MATLAB語言編譯成的,其主要功能是可同時導(dǎo)入原始地形、拋石過程地形和設(shè)計地形,然后根據(jù)采集的拋石地形實時的監(jiān)測拋石質(zhì)量和控制拋石精度,可以方便快捷的完成拋石工程[17]。航道工程施工的基本過程見圖3,軟件監(jiān)測主要是從兩方面來反映:①通過設(shè)計拋石體積,計算應(yīng)拋石的區(qū)域?qū)崟r已拋石量;②通過把拋石區(qū)域沿壩軸線截取許多拋石斷面,通過設(shè)計、原始、已拋石的橫截面曲線來反映,可以計算出未拋石的橫截面面積,從而得知各個斷面的拋石情況。通過應(yīng)用上文提到的MATLAB與AutoCAD交互的技術(shù)路線和思路,將地形進(jìn)行可視化,然后也可以通過監(jiān)測軟件輸出或批量輸出拋石斷面圖(DXF格式文件),方便現(xiàn)場施工,加快施工進(jìn)度和提高施工質(zhì)量。在MATLAB編譯的軟件中還可通過其他函數(shù)進(jìn)行放大縮小、三維旋轉(zhuǎn)、數(shù)據(jù)游標(biāo)、等值線化、面積計算、體積計算等一系列操作,彌補(bǔ)在CAD中所不能實現(xiàn)的功能。航道拋石施工斷面監(jiān)測軟件的功能基本能滿足水下拋石工程的需求,將水下不容易觀測的東西通過軟件實現(xiàn)可視化。

      4.2 三維可視化

      通過航道原始地形和拋石地形的加載可以進(jìn)行三維對比(圖4),也可以選擇以散點形式顯示。深藍(lán)色區(qū)域為拋石后的新的地形,通過左方的差值顯示,可以顯示新舊地形的等值線圖。

      4.3 設(shè)計斷面的加載

      在4.2的基礎(chǔ)上還可以加載設(shè)計的整治建筑。通過定義的設(shè)計軸線和斷面參數(shù)將設(shè)計形體放置于地形當(dāng)中(圖5)。斷面參數(shù)可以調(diào)用數(shù)據(jù)庫文件,亦可通過參數(shù)設(shè)置界面臨時設(shè)置并且可以保存,以便下次使用。通過加載的軸線,可以劃分多個斷面,同時在右上角的小圖框中可以查看顯示拋石地形、原始地形的斷面線與設(shè)計斷面的相差情況。設(shè)計方案顯示見圖6。

      4.4 拋石工程量計算

      進(jìn)入右上角的獨立界面后,可以查看具體信息包括設(shè)計斷面面積、當(dāng)前已完成面積。點擊信息查看按鈕后可以查看斷面另一點的信息,包括距離軸線多遠(yuǎn)、已拋高度、未拋高度等。返回主界面,在菜單欄中點擊拋石方量計算,可以計算總的工程量,可以通過分層厚度來提高計算精度(圖7)。

      4.5 施工結(jié)果分析

      為了滿足施工的需要,CAD出圖是最好的選擇,可以方便攜帶至施工現(xiàn)場。通過前面的思路,編寫的程序在拋石監(jiān)測軟件中成功實現(xiàn)了數(shù)據(jù)在DXF文件中的傳遞,CAD出圖效果見圖8。圖中可以看到從MATLAB中輸出了設(shè)計、原始、拋石的地形線,在有護(hù)腳的拋石工程中同樣可以顯示,以及斷面名稱、距離壩軸線的橫距和對應(yīng)的高度,一目了然。

      5 結(jié)論

      通過MATLAB軟件平臺實現(xiàn)了對地形數(shù)據(jù)進(jìn)行可視化處理并且可以進(jìn)行更多的數(shù)據(jù)分析,更好地進(jìn)行施工指導(dǎo)。本文主要可以得到以下結(jié)論:①通過MATLAB平臺,結(jié)合自有函數(shù)和自編函數(shù)在一定程度上實現(xiàn)了航道工程地形數(shù)據(jù)的三維可視化和進(jìn)行進(jìn)一步的數(shù)據(jù)分析;②充分闡述了AutoCAD的DXF文件結(jié)構(gòu),可以更好地實現(xiàn)數(shù)據(jù)在應(yīng)用軟件中的輸入與輸出,并建議在輸出DXF文件時,預(yù)先設(shè)置好DXF文件腳本可以減少寫入DXF文件的復(fù)雜性,加快計算;③集三維可視化、剖面顯示、方量計算等多功能與一體的軟件,能更好地滿足航道工程施工需求。當(dāng)然程序還需要適當(dāng)?shù)貎?yōu)化提高操作的流暢性以及完善軟件的功能,滿足實際施工需求。

      猜你喜歡
      拋石航道實體
      兩種新型拋石護(hù)岸工藝在深水區(qū)應(yīng)用效果對比*
      前海自貿(mào)區(qū):金融服務(wù)實體
      中國外匯(2019年18期)2019-11-25 01:41:54
      沉箱拋石基床整平施工技術(shù)
      實體的可感部分與實體——兼論亞里士多德分析實體的兩種模式
      兩會進(jìn)行時:緊扣實體經(jīng)濟(jì)“釘釘子”
      振興實體經(jīng)濟(jì)地方如何“釘釘子”
      新航道
      留學(xué)(2017年5期)2017-03-29 03:03:54
      我國首條40萬噸級航道正式開建
      水道港口(2014年1期)2014-04-27 14:14:38
      拋石堤壩穩(wěn)定性試驗
      我國首條40萬噸超大型航道將迎來開工建設(shè)
      水道港口(2013年3期)2013-04-27 14:14:28
      邻水| 宁德市| 鸡东县| 汶川县| 达日县| 静海县| 宁明县| 石家庄市| 永和县| 额尔古纳市| 麟游县| 晴隆县| 富宁县| 洪泽县| 佛坪县| 五大连池市| 凤山县| 柞水县| 安新县| 年辖:市辖区| 太仓市| 广平县| 河池市| 乐昌市| 道孚县| 麦盖提县| 南昌市| 湘潭县| 韶关市| 个旧市| 江永县| 天津市| 台湾省| 临沧市| 溧阳市| 榆社县| 浦江县| 日喀则市| 太原市| 宣化县| 荆门市|