国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Civil 3D 的水深點(diǎn)轉(zhuǎn)換技術(shù)

2023-12-08 11:03:30
科技創(chuàng)新與應(yīng)用 2023年35期
關(guān)鍵詞:邊線水深圖層

肖 怡

(四川省交通勘察設(shè)計(jì)研究院有限公司,四川成都 610017)

在航道整治項(xiàng)目中,設(shè)計(jì)水深是設(shè)計(jì)人員經(jīng)常需要用到的數(shù)據(jù),這就要求測(cè)量人員根據(jù)設(shè)計(jì)水位將水下地形點(diǎn)換算成設(shè)計(jì)水深點(diǎn)[1]。由于江河等流域是存在上下游比降的,所以在處理水深點(diǎn)轉(zhuǎn)換時(shí)不能用單一水面高減去水下高程點(diǎn)來計(jì)算水深。目前,很多測(cè)量人員都是根據(jù)水位比降[2]分段做水深改正,在航道長度長,水位比降大時(shí),數(shù)據(jù)處理工作極其枯燥繁瑣且耗時(shí)。

AutoCAD Civil 3D 是由Autodesk 公司推出的一款的建筑信息模型(BIM)設(shè)計(jì)軟件。為用戶提供強(qiáng)大的測(cè)量、設(shè)計(jì)、分析與文檔處理解決方案。作為一款強(qiáng)大的平臺(tái)軟件,其提供的地形曲面數(shù)據(jù)處理功能對(duì)于一線測(cè)繪人員十分有用。對(duì)于有一定編程經(jīng)驗(yàn)的測(cè)繪人員來說,可以通過Civil 3D 提供的API,用C# 語言對(duì)其進(jìn)行二次開發(fā)。本文就介紹了Civil 3D 是如何用C# 二次開發(fā)解決設(shè)計(jì)水深點(diǎn)轉(zhuǎn)換工作。

1 程序設(shè)計(jì)思路

Civil 3D 曲面是由三角網(wǎng)構(gòu)成的,可以用于表達(dá)地形、道路、河流等地形特征。Civil 3D 能真實(shí)計(jì)算出挖填方的工程量,而且還可以進(jìn)行挖填平衡的自動(dòng)調(diào)整[3]。在Civil 3D 中,曲面的創(chuàng)建有多種方法,其中最常用的是根據(jù)等高線和圖形對(duì)象創(chuàng)建。創(chuàng)建好的曲面對(duì)象提供了曲面編輯、查詢及分析功能。其中,編輯功能允許用戶對(duì)曲面三角網(wǎng)或者點(diǎn)進(jìn)行添加、刪除、移動(dòng)等操作;查詢功能支持用戶查詢曲面上的數(shù)據(jù),如高點(diǎn)程、距離、面積等;分析功能支持對(duì)曲面進(jìn)行分析,如計(jì)算曲面面積、體積等。

在本程序中,主要是對(duì)曲面創(chuàng)建和任意高程點(diǎn)查詢的應(yīng)用。通過用調(diào)整后的設(shè)計(jì)水邊線創(chuàng)建水面曲面,然后對(duì)水下高程點(diǎn)進(jìn)行水面高程查詢,最后,利用水面高程與水底高程求差計(jì)算出真實(shí)水深。

1.1 水邊線高程點(diǎn)數(shù)據(jù)

水邊線高程點(diǎn)是指在根據(jù)水尺記錄數(shù)據(jù)和設(shè)計(jì)水位對(duì)水邊線進(jìn)行修正后,在水邊線上根據(jù)水位變化合理地插值出高程點(diǎn)[4],并用Cass 展繪到水邊線地形圖上。成圖效果如圖1 所示。

圖1 按設(shè)計(jì)水位修正后水邊線及水邊高程點(diǎn)

1.2 水下高程點(diǎn)或地形點(diǎn)數(shù)據(jù)

在測(cè)量內(nèi)業(yè)成圖階段,所有高程點(diǎn)的高程都是水準(zhǔn)高。通常,等深線的繪制是在等高線圖完成之后,用于繪制等深線的原始數(shù)據(jù)如圖2 所示。

圖2中,河道中的高程點(diǎn)不能直接用于繪制等深線,需要根據(jù)水邊線高程做水深計(jì)算。

為了方便計(jì)算,需要把河道中的高程點(diǎn)用Cass 的“高程點(diǎn)生成數(shù)據(jù)文件功能”導(dǎo)出為*.dat 文件,也可以把所有地形點(diǎn)全導(dǎo)出,后續(xù)在程序中做水下點(diǎn)篩選。

1.3 程序?qū)崿F(xiàn)流程

程序設(shè)計(jì)思路為:首先使用“SSJS(水深計(jì)算)”命令啟動(dòng)程序,交互選擇水邊高程點(diǎn),程序會(huì)自動(dòng)讀取高程點(diǎn)并構(gòu)建水面曲面;其次讀取水下高程點(diǎn)數(shù)據(jù),程序自動(dòng)用曲面內(nèi)插計(jì)算出高程點(diǎn)對(duì)應(yīng)水面高;最后通過內(nèi)部設(shè)定的水深閾值,去掉地面高程點(diǎn),即得到純凈的水深點(diǎn),然后將水深點(diǎn)輸出成.dat 文件。

程序運(yùn)行流程如圖3 所示。

圖3 程序運(yùn)行流程圖

成果文件為.dat 格式,測(cè)繪人員可直接用Cass 加載并進(jìn)行等深線的繪制。

2 關(guān)鍵技術(shù)研究與實(shí)現(xiàn)

2.1 水邊線高程點(diǎn)編輯

水邊線高程點(diǎn)內(nèi)插加密需要基于測(cè)量時(shí)的水尺水位高、實(shí)測(cè)水邊線和設(shè)計(jì)水位線,最后形成圖1 中的水邊高程點(diǎn),水邊高程點(diǎn)需要均勻分布以確保后續(xù)構(gòu)建的水面曲面足夠精確。

2.2 程序開發(fā)基礎(chǔ)

2.2.1 軟件基礎(chǔ)

Civil 3D 提供了3 種API,分別是.NET API、COM API 和C++[5],其中.NET 語言中的C#語言開發(fā)難度是相對(duì)較小的,而且有良好的開發(fā)支持。

2.2.2 開發(fā)環(huán)境配置

啟動(dòng)Visual Studio 2019,選擇“創(chuàng)建新項(xiàng)目”,選擇“類庫(.NET Framework)”,然后框架選擇“.NET Framework4.6”;添加accoremgd.dll、acdbmgd.dll、acmgd.dll、AecBaseMgd.dll 和AeccDbMgd.dll 程序集的引用,并將程序集的“復(fù)制本地”屬性改為“false”(圖4)。

圖4 引用程序集

2.3 曲面創(chuàng)建

為了便于數(shù)據(jù)管理,在新建水面曲面時(shí)應(yīng)該為其新建圖層,然后選擇高程點(diǎn)對(duì)象添加到曲面中。

2.3.1 新建圖層

1)獲取當(dāng)前文檔和數(shù)據(jù)庫,并創(chuàng)建事務(wù)。

2)獲取圖層表,判斷是否存在“0-Terrain”圖層,如果不存在,則新建“0-Terrain”圖層,并將其設(shè)置為當(dāng)前圖層,如果存在,則將“0-Terrain”圖層設(shè)置為當(dāng)前圖層。

2.3.2 創(chuàng)建空曲面

創(chuàng)建曲面是利用Autodesk.Civil.DatabaseServices中的TinSurface 類,首先用TinSurface 的Create 方法創(chuàng)建一個(gè)空曲面ID,然后強(qiáng)制轉(zhuǎn)換為三角網(wǎng)曲面對(duì)象。

2.3.3 拾取水邊高程點(diǎn)

水邊線高程點(diǎn)應(yīng)為Cass 軟件生成的高程點(diǎn)塊,提取高程點(diǎn)前需要定義一個(gè)過濾條件用于篩選高程點(diǎn)。

然后用Editor 類提供的方法提取高程點(diǎn)對(duì)象,創(chuàng)建對(duì)象ID 集合。

2.3.4 添加高程點(diǎn)到曲面

接用TinSurface 的DrawingObjectsDefinition 屬性的AddFromBlocks 方法將高程點(diǎn)添加到空曲面中。

2.4 水面高程提取

利用TinSurface 對(duì)象的FindElevationAtXY 方法可以查找指定坐標(biāo)處的高程值。

2.5 水深計(jì)算

2.5.1 讀取高程點(diǎn)文件

讀取高程點(diǎn)調(diào)用了系統(tǒng)File 類中的ReadAllLines方法,將讀取的行數(shù)據(jù)分別拆分存到指定變量。

2.5.2 計(jì)算點(diǎn)位設(shè)計(jì)水深

水深=水面高程-水下高程點(diǎn)水準(zhǔn)高程。

利用該計(jì)算關(guān)系,循環(huán)遍歷計(jì)算所有水下高程點(diǎn)對(duì)應(yīng)的設(shè)計(jì)水深。

2.5.3 導(dǎo)出水深點(diǎn)文件

調(diào)用系統(tǒng)提供的StreamWriter 方法即可完成水深文本文件輸出。

3 程序應(yīng)用實(shí)例——某項(xiàng)目A 河道水深圖

某項(xiàng)目平面圖如圖5 所示,項(xiàng)目全長約14.5 km,水邊高程點(diǎn)685 個(gè),共有5 754 個(gè)地形點(diǎn)(含水下高程點(diǎn)),高程點(diǎn)的格式為點(diǎn)名、編碼、東坐標(biāo)、北坐標(biāo)(圖6),經(jīng)測(cè)試轉(zhuǎn)換生成全部水下高程點(diǎn)用時(shí)約3.2 s(圖7)。

圖6 項(xiàng)目A 原始數(shù)據(jù)和成果數(shù)據(jù)示例

圖7 項(xiàng)目B 程序計(jì)算花費(fèi)時(shí)間

4 結(jié)束語

水下高程點(diǎn)轉(zhuǎn)設(shè)計(jì)水深是一項(xiàng)十分簡單的工作,但是如果不掌握科學(xué)的數(shù)據(jù)處理方法,簡單工作將會(huì)變成一項(xiàng)任務(wù)繁重的體力活。Civil 3D 是一款強(qiáng)大的土木設(shè)計(jì)類軟件,擁有完善的開發(fā)環(huán)境。C#是一門相對(duì)容易上手的編程語言,得益于編程軟件Visual Studio 的強(qiáng)大提示功能,可以幫助初級(jí)編程人員補(bǔ)全大量代碼。兩者的結(jié)合則催生出了各種功能強(qiáng)大的插件,基于這些插件,可以將廣大一線生產(chǎn)人員從大量重復(fù)繁瑣的工作中解放出來。

在使用過程中做過的最長的某項(xiàng)目長度超過78 km,總地形點(diǎn)超過10 萬個(gè)點(diǎn),在水邊高程點(diǎn)圖形文件和所有地形點(diǎn)文本文件準(zhǔn)備好的情況下,只用了不到10 s 的時(shí)間即可完成水深點(diǎn)文本文件的生成。如果用人工手動(dòng)分段計(jì)算的話,項(xiàng)目上下游高差54 m,即使按每20 cm 分段需要分250 段,假如每段高程點(diǎn)提取轉(zhuǎn)換需要2 min,則一個(gè)人所需花費(fèi)的時(shí)間預(yù)計(jì)超過8 h,而實(shí)際上,一個(gè)人手動(dòng)做這些數(shù)據(jù)轉(zhuǎn)換可能得花費(fèi)2~3 d 時(shí)間。

所以,基于Civil 3D 的開發(fā)的確能帶來巨大的生產(chǎn)效率的提升,從上述論述也可以看到,Civil 3D 的初級(jí)開發(fā)不難,如果能善用二次開發(fā),一定能為工作生產(chǎn)帶來巨大的經(jīng)濟(jì)效益。

猜你喜歡
邊線水深圖層
書法靜水深流
河北水利(2022年10期)2022-12-29 11:48:12
基于水深分段選擇因子的多光譜影像反演水深
海岸水邊線提取方法在GF-2衛(wèi)星影像中的適應(yīng)性研究
巧用混合圖層 制作抽象動(dòng)感森林
認(rèn)識(shí)足球(六)
突破矩形上邊線買入法(1)
圖層法在地理區(qū)域圖讀圖中的應(yīng)用
GPS RTK技術(shù)在水深測(cè)量中的應(yīng)用
淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
河南科技(2014年6期)2014-04-04 08:00:42
浸入式水深監(jiān)測(cè)儀器的設(shè)計(jì)
佛教| 盐城市| 靖安县| 松溪县| 玛纳斯县| 镇康县| 浮梁县| 昌吉市| 黑河市| 凭祥市| 湟源县| 大连市| 驻马店市| 赫章县| 若羌县| 古交市| 西乌珠穆沁旗| 衡阳县| 永州市| 东山县| 扎鲁特旗| 桃园市| 永德县| 平邑县| 邹平县| 左权县| 合阳县| 利川市| 莱阳市| 馆陶县| 大关县| 东阳市| 石景山区| 正安县| 宁晋县| 阜宁县| 民权县| 耒阳市| 武穴市| 雷山县| 茶陵县|