胡 博
(秦皇島市測繪大隊 河北秦皇島 066001)
在隧道工程中,快速、準確地計算隧道的超欠挖面積,對保障施工安全、控制工程成本、推進工程進度有著重要意義。智能全站儀的出現(xiàn),為隧道斷面檢測提供了強大、便捷的方法。通過編寫相應的應用程序,可以實現(xiàn)隧道斷面的自動化檢測和實時計算。目前,已有大量針對隧道斷面檢測的機載應用程序的研究,但現(xiàn)有的超欠挖面積計算的方法,多是將超挖面積和欠挖面積分解成多個三角形,再對各個三角形的面積求和,計算出單個超欠挖區(qū)域的面積[1,2]。此方法計算過程較為繁瑣,需要判斷不同的隧道斷面情形,并且將弧形的隧道設計斷面分解為若干個小三角形,是一種近似計算的方法,并非嚴密計算的方法。
基此,本文提出應用格林公式,以快速、精確計算隧道超欠挖面積。
格林公式,描述了平面上沿閉曲線L對坐標的曲線積分與曲線L所圍成封閉區(qū)域D上的二重積分之間的密切關系,提供了計算封閉區(qū)域面積的精確方法[3],由其推導出的面積表達式為:
由于隧道斷面線實質上為平面上的直線和曲線,因此,應用格林公式計算隧道超欠挖面積具有可行性。本文由此出發(fā),研究適用于智能型全站儀編程的數(shù)學模型、數(shù)據(jù)結構以及程序算法。
首先,建立斷面坐標系,坐標系原點定義為軌面零高程線和斷面中心軸的交點,以軌面零高程線為X軸,面向隧道前進方向水平向右為正方向,以斷面中心軸為Y軸,豎直向上為正方向。
如圖1所示,在斷面坐標系下中,虛線為設計斷面線,實線為實測斷面點的連線,JD1、 JD2、JD3……為隧道斷面實測點連線與設計斷面的若干交點。JD1和JD2、JD2和JD3之間的實測線段和設計線段分別構成了封閉的面域A12和A23。面域A12的面積為JD1和JD2之間的超挖面積,面積A23的面積為JD2和JD3之間的欠挖面積。
圖1 實測與設計元素圍成的超欠挖面域
基此,將包圍超欠挖面域的封閉路徑的前進方向定義為:“從起始交點出發(fā),沿實測線段順時針方向行進,到達下個交點后沿設計線段逆時針返回”。如圖1所示,包圍面域A12的封閉曲線的路徑為:由JD1出發(fā)沿實測線段順時針行進到JD2,再由JD2沿設計斷面線逆時針行進回到JD1;包圍面域A23的封閉曲線的路徑為:由JD2沿實測線段順時針行進到JD3,再由JD3沿設計斷面線逆時針行進回到JD2(這里的順、逆時針是相對于整個封閉的隧道斷面而言)。
這樣,包圍超挖面域的封閉路徑前進方向相對其包圍的面域始終是順時針,如A12。包圍欠挖面域的封閉路徑的前進方向相對于其所包圍的面域始終是逆時針,如A23。按照這樣定義的曲線積分的路徑,應用格林公式計算出的超挖部分面積和欠挖部分面積正負號正好相反,于是通過積分結果的正負號來判定屬于超挖還是欠挖,相同正負號的計算結果累加,就能得到總的超挖面積和欠挖面積。
當前的隧道工程中,常見的設計斷面形狀,主要有圓形、矩形、馬蹄形。其中,矩形斷面是由直線段相接構成的,馬蹄形斷面則由弧度、長短不同的多段圓弧相接構成,而圓形斷面亦可看作圓心角為360°圓弧。因此,可以認為,隧道的設計斷面由直線段和圓弧兩種元素構成,設計斷面與實測斷面相交所形成的各超欠挖部分,也均由圓弧和線段兩種元素來表達。
為了便于計算機編程實現(xiàn),需要將線段和圓弧表示為參數(shù)式。
線段的參數(shù)表達式為:
x(t)=x1+tLcosA
y(t)=y1+tLsinA
其中,x1、y1分別為線段起始點坐標;
L為直線的長度;
A為直線的方位角;
t為從0到1變化的參數(shù)。
圓弧的參數(shù)表達式為:
x(t)=xc+Rcos(A1-At)
y(t)=yc+Rsin(A1-At)
其中,xc,yc為圓心坐標;
A1為圓弧起始方位角;
A為圓弧的圓心角;
R為圓弧半徑;
t為從0變化到1的參數(shù)。
這樣,將公式(1)轉化為:
即針對組成封閉面域的各線段和圓弧進行0到1的分段積分,并將積分結果求和,得出該封閉面域的面積。
綜上所述,利用格林公式積分可計算出超欠挖部分的面積,利用積分結果的正負號可以判斷出所計算出的面積屬于超挖還是欠挖。這樣,對不同正負值的面積計算結果進行累加,便可得到總的超挖面積和欠挖面積。
搭載Windows Mobile操作系統(tǒng)的智能全站儀提供了C#語言的開發(fā)工具,在此用C#語言設計隧道斷面的元素類如下:
//圓弧類
Public class Arc
{
//圓心點坐標
Private point2d center_point;
//起始方位角
Private double begin_angle;
//圓弧圓心角
Private double angle;
//圓弧半徑
Private double r;
//起點坐標
Private point2d begin_point;
//終點坐標
Private point2d end_point;
//構造函數(shù)
Public void Arc(point2d center_point,double begin_angle,double angle,double r)
}
//線段類
Public class Line
{
//起點坐標
private point2d begin_point;
//終點坐標
Privte point2d end_point;
//線段方位角
Private double a;
//線段長度
Private double length;
//構造函數(shù)
Public void Line(point2d begin_point,point2d end_point);
}
在Arc和Line類中,所有成員變量均設置為只讀變量,僅由類的構造函數(shù)進行賦值。將設計斷面以及實測斷面表示為Arc和Line的鏈表,采用.net平臺的ArrayList數(shù)據(jù)結構進行順序存儲。
求解兩交點間封閉面域的面積,需要求得各交點的坐標,以及兩個交點間的設計斷面和實測斷面的元素信息。因此,設計交點類如下:
public class JD
{
//交點的坐標
private point2d crd;
//交點所在的設計元素段鏈表中的索引
Private int id_survey;
//交點所在的實測元素段鏈表中的索引
Private int id_design;
//構造函數(shù)
Public void JD(point2d crd,int id_survey,int id_design)
}
首先,讀取隧道斷面的全站儀實測坐標,生成實測元素鏈表list_survery,讀取隧道斷面的設計元素,生成設計元素鏈表list_design,并遍歷鏈表所有元素,求出實測斷面與設計斷面的所有交點:
for(int i=0;i for(int j=0;j CalculateJD(list_survey[i],list_design[i]); CalcualteJD為計算兩線段、圓弧元素交點的函數(shù)。此處遍歷設計斷面和實測斷面中所有的元素,兩兩組合求解其交點坐標,若交點存在,則創(chuàng)建JD類的實例,存儲交點坐標和生成交點的元素在其list_survey和list_design鏈表中的索引i和j。所有的JD實例依次存儲于鏈表list_JD中。 接下來,求解各個面域的超欠挖面積: for(int i=0;i { CalculateArea(list_JD[i],list_JD[i+1]); } CalcualteArea(list_JD[list_JD.Count-1],list_JD[0]); CalculateArea為依據(jù)list_JD鏈表中相鄰的兩個交點,計算兩交點間封閉面域面積的函數(shù)。此函數(shù)中,首先依據(jù)JD類中存儲的實測斷面元素和設計斷面元素的索引,找出list_JD[i]和list_JD[i+1]之間以及l(fā)ist_JD[list_JD.Length-1]和list_JD[0]之間的所有設計與實測元素,并用交點對其所在的線段和圓弧元素進行截取,生成新的構成兩交點間封閉面域的Arc和Line元素序列;然后,應用公式(2)對此序列進行分段積分,再求和算出兩點間面域的面積。 最后,判斷積分結果的正負號并分別累加,正的總和即為總超挖面積,負的總和即為總欠挖面積。 應用武漢地鐵二號線虎泉-名都區(qū)間DK25+24.546和DK25+34.858斷面檢測數(shù)據(jù)作為實驗數(shù)據(jù),輸出AutoCAD文件格式的計算報告,并用AutoCAD圖上面積量算數(shù)據(jù)作為比較基準,以驗證本文算法的正確性和精度。 該斷面為典型的多段圓弧組成的馬蹄形斷面。由于斷面實測數(shù)據(jù)均為超挖,為了充分驗證算法有效性,人為修改了DK25+34.858斷面的實測數(shù)據(jù),使其出現(xiàn)欠挖部分。計算報告,如圖2~圖3所示。 圖2 DK25+24.546斷面計算報告 圖3 DK25+34.858斷面(修改后)計算報告 本文算法計算結果與AutoCAD圖上量算結果如表1所示。 表1 對比分析結果 對比表明,本文提到的算法計算結果與CAD圖上量算結果完全吻合,具有很高的精度。 應用格林公式能夠方便精確地計算出不規(guī)則封閉區(qū)域的面積,本文從此思路出發(fā),結合隧道斷面的特點,給出了適合于計算機編程的數(shù)據(jù)結構和具體的計算過程,并應用地鐵隧道斷面檢測數(shù)據(jù)進行了實驗驗證。 相較于現(xiàn)有的將超欠挖面域分解為若干個三角形,分別求解各個三角形面積再求和的近似計算方法,提出的方法具有以下優(yōu)點: (1)精度高。采用函數(shù)式表達設計和實測斷面的各個元素,應用積分的方法計算超欠挖面積,數(shù)學模型嚴密,計算結果精確。 (2)通用性好。從單一思路出發(fā),不必事先判斷是超挖還是欠挖;應用統(tǒng)一的線段、圓弧模型來表達隧道斷面,無需考慮各種各樣復雜的隧道斷面形式,都能夠得出計算結果。 (3)易于編程。本文提出的元素類模型設計簡單合理,算法清晰明了,利于計算機編程實現(xiàn),能夠極好地應用于智能全站儀的隧道斷面檢測軟件開發(fā)。5 應用實例
6 結語