張闊
摘要:巖土工程勘察報告的平面圖繪制工作是工程地質勘察過程中的主要任務之一,而傳統的自動編號程序存在針對線性分布的鉆孔無法使編號順序與路徑走向一致的問題。將鉆孔和有向路徑分別抽象為平面空間中的點和有向線段集合,定義了三種距離參數用于定量描述平面空間中的點與線段的相對位置關系,并提出了一種坐標點編號算法,能使沿有向路徑分布的坐標點的編號順序與路徑方向一致。最后以某輸水管線工程為例,使用基于AutoCAD二次開發的自編程序介紹該算法的實際應用,結果表明該算法能顯著提高巖土工程勘察報告平面圖繪制的工作效率。
關鍵詞:巖土工程勘察;排序算法;自動編號;數字制圖;二次開發
中圖分類號:TB115? 文獻標識碼:A
文章編號:1009-3044(2021)29-0020-04
A New Algorithm for Borehole Numbering of Geotechnical Investigation under Path Distribution
ZHANG Kuo
(Sichuan Chuanjian Geotechnical Survey Design Institute, Chengdu 610000, China)
Abstract: the geotechnical investigation plan drawing is one of the main tasks in the process of engineering geological investigation. The traditional automatic numbering program realizes the automatic numbering of boreholes by comparing the XY coordinate values, but for the boreholes distributed along a certain directional path, the numbering sequence cannot be consistent with the path direction. In this paper, borehole and directed path are abstracted as a set of points and directed line segments in plane space respectively, three distance parameters are defined to quantitatively describe the relative position relationship between points and line segments in plane space, and a coordinate point numbering algorithm is proposed, which can make the numbering sequence of coordinate points distributed along directed path consistent with the path direction. Finally, taking a water transmission pipeline project as an example, the practical application of the algorithm is introduced by using the self-made program based on the secondary development of AutoCAD. The results show that the algorithm can significantly improve the efficiency of drawing the geotechnical investigation plan.
Key words: Geotechnical investigation; Sorting algorithm; Automatic numbering; Digital mapping; Secondary development
1引言
隨著掃描和數字化成圖系統的發展,計算機制圖在當前工程地質內業整理工作中廣泛應用,而且全電腦成圖已成為當前要發展趨勢[1-2]。其中對點狀單元自動編號的工程需求比較普遍,目前巖土工程中的計算機自動編號技術在工程樁號的編制中應用較多,但大多直接按照樁芯坐標XY值排序[3-4],在巖土工程勘察的平面圖繪制工作中,雖然自動編號技術未見有文獻報道應用,但就工程界的實際應用中,大多數技術員利用自編程序對勘察鉆孔編號時仍是采用此原理,近年來已有文獻[5]提到對線狀建筑物自動生成樁號的研究,但要求點狀單元必須在線段上。在巖土工程勘察平面圖繪制工作中,對于更普遍的鉆孔分布在線狀擬建物兩側的情況下,使鉆孔編號順序與線段走向保持一致是一個有待解決的問題。
圖1編號方法
肉眼識別線段走向是很容易的,但是如何讓計算機分析出鉆孔孔位與擬建物走向之間的平面空間關系并以此確定鉆孔順序則相對復雜一些,這也是本文探討的主要內容。
2平面空間點線關系分析
2.1對點順序的定義
“與擬建物走向一致”是對鉆孔順序的定性描述,而基于平面空間位置對鉆孔編號排序還需要一個(組)變量對各鉆孔進行定量描述,從而對鉆孔位置進行比較,傳統的計算機自動編號算法就是利用XY坐標描述鉆孔,通過比較XY值大小來對鉆孔排序,但本文需要新的變量來描述鉆孔位置。
為定量描述鉆孔順序,需要將勘探孔抽象為平面空間中的有限個坐標點,將線狀分布的擬建物抽象為有限個有向線段,這些有向線段首尾依次相連且兩兩不相交,那么可以采用坐標點在有向線段上的投影來進行定量描述。根據這些坐標點與有向線段的平面空間位置關系,又可以分為三種情況將“投影”定量化。
第一種情況:
設平面坐標系中存在兩個坐標點分別表示為Am 和An,有向線段表示為向量,其方向由點Bj指向點。設與Am 和An 距離最近的有向線段(點與線段的距離的定義在2.2節中給出)為同一個向量并記為和An 在上的投影點到的距離分別為和,則當
時,判定為點Am 在點An 之前。
第二種情況:
在式2.1中,當
時,則需要選擇新的變量來判定順序,此時本文選擇坐標點到向量的垂直距離作為判定依據。設Am 和An 與向量的垂直距離分別為和,則當
時,判定為點Am 在點An 之前。
第三種情況:
在第一種情況中,如果與Am 和An 距離最近的向量不為同一個向量,并記與Am 和An 距離最近的向量分別為和則當角標
時,判定為點在點之前。
綜上由式2.1、式2.3和式2.4可知對坐標點順序通過有向線段的角標、點在有向線段上的投影點到有向線段起點的距離 s(下文簡稱投影距離s)、坐標點到有向線段的垂直距離d(下文簡稱垂直距離d)等三個變量之間進行值的大小比較來描述,且比較的優先級依次遞減。
如圖2所示,首先按有向線段來比較,因為有向線段在有向線段之前,所以離最近的點也排在離最近的點之前,即圖中Al、Am 和An 的順序都在Ao之前。其次從投影距離來看,Al在上的投影距離sl比Am 和An 的投影距離sm和sn都短,所以Al的順序在Am 和An 之前。最后再看垂直距離,Am 和An 在上的投影距離是相同的,但Am 的垂直距離dm 大于An 的垂直距離dn,所以Am 的順序又在An 之前。綜上可求得圖2 中四個點的順序依次為Al、Am、An 和Ao,如果給角標賦具體的編號值,則l < m < n < o 。直觀上來看,計算出的這四個點的順序也是與兩條有向線段的方向一致的。
2.2點與有向線段的距離
眾所周知點與直線之間的距離就是點到該點在直線上的投影點的距離,但是有向線段并不像直線一樣兩端無限延伸,基于此本文給出點與有向線段之間距離的定義(下文簡稱點線距離):
設有向線段的長度為,點Am 與有向線段的距離為,則
如圖3所示,式2.5對應了三種情況,即當投影點在有向線段起點外、線段內、終點外時。雖然起點外和終點外兩種情況可以看作一種,但是在編制程序時需要分開計算。
引入點線距離的定義目的是衡量點與有向線段之間的遠近關系,從而可以將點按有向線段進行分類。
3算法流程
算法流程如圖4所示。
設初始輸入數據為各個點坐標和各有向線段起止點坐標和以及這些起止點坐標的順序。選擇坐標作為初始輸入數據是因為本文對算法的程序編制是基于 AutoCAD 軟件進行的,而在基于.NET框架的AutoCAD二次開發中,點坐標是最容易獲取的變量值之一,且獲取多段線各角點坐標時,也能同時獲取各坐標點的順序[6]。算法步驟為:
1)計算坐標系變換參數。
如圖5 所示,設原始坐標系為xOy,變換后的坐標系為x'O'y',且僅通過旋轉、平移進行變換,并使變換后的坐標原點O' 與原始坐標系的坐標原點O重合,x'軸與有向線段的方向一致,此時y'軸必然與有向線段在原點O'處垂直,且符合右手法則。
以僅旋轉、平移的方式進行坐標系變換,由初始輸入數據可以計算出旋轉角度θj和平移向量:
式3.1和3.2用正弦值和余弦值來描述θj是為了方便后面的計算,上文已提到l 就是有向線段的長度。通過以上計算可以得到每一個有向線段的旋轉角度θj和平移向量,它們是坐標變換的兩個重要參數。
2)計算投影距離、垂直距離和點線距離
通過坐標系轉換,可以同時求得投影距離和垂直距離,其實此二值就是坐標點在坐標系變換后的新坐標系下的橫、縱坐標。由坐標變換參數θj和以及坐標系變換公式可以求得點在新坐標系下的橫、縱坐標,同時也就得到了投影距離和垂直距離:
坐標(xm′ ,ym′)為點Am 在新坐標系下的坐標。
再結合式2.5和式3.3可以求得點線距離:
至此,所有排序所需要的三大變量都由初始坐標數據求出了。
3)排序
通過以上步驟,可以交叉計算每一個點與每一條有向線段的點線距離。從點的角度來看,每一個點都有一組點線距離,在這些點線距離中取最小值,它所關聯的有向線段就是離此點最近的有向線段。每一個點都能找到一條離它最近的有向線段(如果離該點最近的有向線段同時有多條,取角標最小的一條),本文稱之為此點“屬于”這條有向線段。有向線段的順序是已知的,當一條有向線段的順序在另一條有向線段的前面,那么屬于前者的點的順序也在屬于后者的點之前,這就完成了點的初步排序,正如第2.1節中的第三種情況。
將坐標點按線段排序后,就可以對屬于單條有向線段的點集進一步排序,首先按上一步中計算出的每個點的投影距離從小到大排序(第2.1節中的第一種情況),如果遇到投影距離相等的兩個點,則再按垂直距離從大到小排序(第2.1節中的第二種情況)。
4算例
本文將以某輸水管線項目的巖土工程勘察平面圖繪制工作為例,采用對AutoCAD軟件進行二次開發的方式,進一步介紹本算法在實際項目中的應用。
某輸水管線項目全長20.8km,本次勘察擬沿全管線按間隔約 100m 及拐點處布置勘探鉆孔218個。在初始鉆孔布置中,以復制圖塊的方式在擬鉆探點位繪制218個代表鉆孔的自定義CAD 圖塊,自定義圖塊中包含一個代表編號的塊屬性,但是在復制圖塊時無法直接遞增編號。如果手動對鉆孔塊的編號屬性一一賦值,將會是一個巨大的工作量,并且賦值以后,如果需要在局部增加或刪除個別鉆孔,重新編號也極其不方便。因為管線蜿蜒曲折,如果采用XY坐標法自動編號,局部編號順序會與管線走向不一致。下面利用基于AutoCAD二次開發的自編程序對鉆孔圖塊編號,并使編號順序能夠與管線走向一致。
首先需要繪制代表管線走向的輔助多段線,由于在設計單位提供的管線布置圖中,代表管線的直線是被井點圖塊斷開的,故不能直接作為有向線段的輔助多段線。額外繪制好輔助多斷線(輔助線的節點可以遠遠少于原管線節點)后,在命令欄輸入自編程序的啟動命令,并按提示依次選擇輔助多段線、鉆孔圖塊所在圖層,之后就能將218個鉆孔圖塊的編號屬性按管線走向賦予編號值,結果如圖6所示。
如果增刪鉆孔也很方便,增刪鉆孔后再次執行自編程序,便能快速編號,增加(刪除)的鉆孔之后的鉆孔編號能自動遞增(遞減)。出圖時只要將輔助多段線所在圖層設為不可打印或凍結即可。
5結語
(1)將勘察鉆孔和線狀擬建物分別抽象為平面空間中的有限個坐標點和有限個有向線段,對其進行了空間關系分析,定義了投影距離、垂直距離和點線距離三個變量,用其描述點與有向線段的相互空間位置關系,以及衡量點沿有向線段方向的順序。
(2)介紹坐標點排序算法流程,以點坐標、有向線段起止點坐標為已知量,通過坐標系變換的思想給出了投影距離、垂直距離和點線距離三個變量的計算過程,以及如何用這三個距離變量來對坐標點排序。
(3)以某輸水管線項目的巖土工程勘察平面圖繪制工作為例,介紹本算法在實際項目中的應用,顯示出該算法具有較高的實用性。
參考文獻:
[1]師磊. 計算機繪圖在地質工作中的應用及發展趨勢[J].西部探礦工程,2006,18(12):132-133.
[2]崔斌. 地質勘察中計算機繪圖的應用及發展趨勢[J].科技經濟導刊,2018,26(7):27.
[3]溫立新. 在AutoCAD 中實現樁號自動編寫的方法[J].軍工勘察,1995,9(3):36-37
[4]張海蛟,紀曉雨.VBA在地基處理樁號自動編寫中的應用[J].工程建設與設計,2017(5):148-150.
[5]王葉. 線性建筑物的樁號自動生成方法及其應用[J].水利規劃與設計,2020(3):163-166.
[6]李冠億. 深入淺出AutoCAD.NET二次開發[M].北京:中國建筑工業出版社,2012.
【通聯編輯:梁書】