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

?

基于.NET API的河道深泓線提取的CAD工具的開發(fā)和應用

2015-12-02 08:41:22李曦凌向明明
水電與抽水蓄能 2015年1期
關鍵詞:中心線波束繪制

李曦凌,向明明

(中國電建集團昆明勘測設計研究院有限公司,云南省昆明市 650001)

基于.NET API的河道深泓線提取的CAD工具的開發(fā)和應用

李曦凌,向明明

(中國電建集團昆明勘測設計研究院有限公司,云南省昆明市 650001)

在多波束測深系統(tǒng)應用于河道水下地形測量中,由于數(shù)據(jù)量巨大,手工提取深泓線成為了一項艱巨而繁瑣的任務。本文提出了在CAD2010平臺下,利用VB.NET語言,實現(xiàn)深泓線自動提取的方法。

多波束水下地形測量;深泓線提取;.NET API;CAD二次開發(fā)

0 引言

河床深泓線河底最低點的連線,是河流特性的基本參數(shù),它反映了河道的變化,對于河流、水庫的演變過程研究有著重要意義。在水下地形測量中,深泓線是一項重要的測量成果。目前對深泓線的繪制主要有人工和自動兩種方法,自動算法主要是閉合等深線端點法[1],這種方法適用于紙質地形圖矢量化后的深泓線提取,但是由于等高距、地形圖比例尺的限制及等深線本身的誤差,提取后的深泓線精度不高。

多波束測深系統(tǒng)能獲得一個條帶覆蓋區(qū)域內多個測量點的海底深度值,實現(xiàn)了從“點—線”測量到“線—面”測量的跨越。多波束系統(tǒng)能夠生產(chǎn)出高精度點云,在此基礎上繪制的深泓線精度高。但是,一條河的點云數(shù)據(jù)量十分龐大,就算將點云抽稀成按一定間距分布的高程點,人工繪制深泓線也是一件十分繁瑣的事。因此,通過編寫程序實現(xiàn)深泓線自動提取十分必要。

本文的主要方法是在CAD平臺下提取、繪制深泓線。當前AutoCAD的二次開發(fā)工具主要有:VisualLisp、VBA、ObjectARX和.NET API等。其中,VisualLisp與VBA較為簡單,而 ObjectARX基于VC平臺,在C++的支持下,其功能非常強大,可以很好地運用各種面向對象技術,但其缺點是發(fā)開速度比較慢,同時對開發(fā)人員的能力要求較高。

基于.NET平臺對AutoCAD進行二次開發(fā),可充分利用.NET的各種優(yōu)勢,在保證功能強大的前提下大大提高開發(fā)速度。

2 深泓線提取原理及實現(xiàn)過程

2.1 基本原理

基于地形圖的人工繪制深泓線的思路為:利用地形圖上的等高線和高程點,沿著河道中心線,按一定間距將最低的高程點連接起來形成深泓線。

在編寫程序時,借鑒了斷面法的思路,即:沿河道中心線按一定間距生成河道中心線的橫剖面,然后每一條橫剖面建立一個“緩沖搜索區(qū)”,搜索該區(qū)域內所有高程點中的高程最小值,最后將這些最低點連接起來,如圖1所示。

圖1 深泓線繪制流程圖

2.2 實現(xiàn)過程

2.2.1 CAD實體的獲取

圖形對象又稱為實體,是組成圖形的可見對象(線、圓、光柵圖像等)。向當前圖形添加圖形對象的方法是,通過引用正確的塊表記錄,使用Append Entity方法將要添加的新對象添加到圖形中。

要修改或查詢對象,先從相應的塊表記錄里獲得對該對象的引用,然后調用該對象自己的方法或屬性。每個圖形對象都擁有一些方法,這些方法實現(xiàn)了與大部分AutoCAD編輯命令相同的功能,像復制、刪除、移動、鏡像,等等。

本文涉及的CAD實體類型主要是多線段(polyline)、 塊 參 照(BlockReference) 和 文 字(DBtext)。在工程應用中,我們規(guī)定河道深泓線是一條多線段,而高程點是CASS繪圖軟件生成的塊參照。

2.2.2 橫剖面線生成

首先在河道中心線(polyline類型)上按一定間距提取該中心線上的點P(point3d類型),找出該點前后兩個節(jié)點Pi-1和Pi之間的直線,獲得與之垂直的直線,即為P點上河道中心線的法線。

使用到的關鍵方法有:

(1) 獲取多線段上某長度上的點:polyline.GetPointAtDist()。

(2) 構造一個極坐標方法獲取點的函數(shù)PolarPoint,用于得到法線兩端點。

(3) AppendEntity方法添加橫剖面的多線段實體。

圖2 河道中心線法線的生成示意圖

2.2.3 “緩沖區(qū)”搜索最低點

根據(jù)上一步驟生成的法線多線段,左右平移一定距離得到兩條平行線,將這兩條平行線連接形成一個多邊形(polygon),這個多邊形就是搜索的緩沖區(qū),利用.Select Crossing Polygon方法選擇多邊形內的高程點,得到一個高程點的集合,然后在集合中查找高程值最小的那個實體。

2.2.4 生成深泓線及縱斷面圖

構建一個深泓線的Point3d Collection類,在搜索斷面最低點的同時向該類的添加point3d類,在添加節(jié)點完成后,用Append Entity方法繪出深泓線的三維多線段平面圖。

深泓線的斷面圖的橫坐標里程需與河道中心線一致,即需要將深泓線的長度歸算到河道中心線上后方可生成斷面圖。

2.2.5 運行優(yōu)化

在實際工程應用中,深泓線往往是一條有著大量頂點的三維多線段,設這些多線段頂點集合為strechpoints(),若每個斷面的前后兩個頂點都是從strechpoints()中從頭到尾地搜索,則會造成程序的內存溢出及運行緩慢等情況。所以,需要在循環(huán)中加入判斷:設前一個斷面的前后端點為j-1,和j,則在下一個循環(huán)中的循環(huán)變量起始值為j。

For j As Integer = L_count To U_count 變換循環(huán)變量起始值

L_count = j

U_count = strechpoints.Count – 1 多邊形頂點的個數(shù)

Next j

3 實例驗證

為了驗證程序的運行效果,選取了云南某電站水庫水下地形測量多波束導出的網(wǎng)格點為實驗數(shù)據(jù),點間距為20m,河道中心線長100km,選擇搜索步長為20m,程序運行時間為2min20s。程序運行界面及程序效果圖分別如圖3、圖4所示。

圖3 程序運行界面

圖4 程序效果圖

4 結束語

在.NET 環(huán)境下,用VB語言對AutoCAD 進行二次開發(fā), 實現(xiàn)了河道深泓線的自動提取。作者設計了直觀的人機交互界面,只需提供幾個少量的參數(shù)即可準確提取深泓線。同時,自動提取程序避免了手動查找的麻煩及不準確性,降低了勞動強度,提高了工作效率,在生產(chǎn)實踐中運行良好。

[1] 丁賢榮.基于ArcGIS Engine的河床深泓線提取方法研究[J/OL].中國科技論文在線,2007(4).

[2] 曾洪飛,張帆,盧擇臨.AutoCAD VBA amp; VB.NET開發(fā)基礎與實例教程[M].北京:中國電力出版社,2008.

李曦凌(1982—),男,工程師,主要研究方向:測繪工程。

向明明(1983—),男,工程師,主要研究方向:測繪工程。

Development and Application of AutoCAD Tool of the Extraction of Thalweg based on .NET API

LI Xiling
(Kunming engineering cooperation limited, Kunming 650001,China)

In the application of multi beam sounding system in the underwater measurement of reservoir or river, because of the huge amounts of raw data, manual extraction of thalweg became a difficult and tedious task. This paper presents the method of automatic extraction of thalweg on CAD2010 platform, based on VB.NET language.

the multi beam underwater measurement;extraction of thalweg; NET API; extended development of CAD

猜你喜歡
中心線波束繪制
Art on coffee cups
毫米波大規(guī)模陣列天線波束掃描研究*
通信技術(2019年3期)2019-05-31 03:19:08
放學后
童話世界(2018年17期)2018-07-30 01:52:02
圓陣多波束測角探究
電子測試(2018年6期)2018-05-09 07:31:54
Helix陣匹配場三維波束形成
第十講 幾何公差代號標注示例10
——目鏡套筒
X線攝影中中心線對DR攝影質量的重要性
基于Meanshift和Hough變換的秧苗行中心線提取
基于非正交變換的局域波束空時自適應處理
在轉變中繪制新藍圖
东平县| 长岭县| 汶上县| 钟山县| 海丰县| 红安县| 青龙| 宾川县| 太保市| 莱西市| 尖扎县| 霞浦县| 渝中区| 晋中市| 泰宁县| 浦江县| 张家口市| 靖远县| 华池县| 宾川县| 习水县| 仙桃市| 平顺县| 太白县| 洪雅县| 福安市| 宁强县| 定襄县| 洛川县| 静乐县| 大新县| 宝鸡市| 乌审旗| 灵山县| 安达市| 宜宾市| 定西市| 育儿| 马龙县| 綦江县| 太湖县|