?

管線點高程自動計算程序設計與應用

2021-01-20 08:58張中南
福建建筑 2020年12期
關鍵詞:三角網點位高程

張中南

(福州市勘測院 福建福州 350100)

0 引言

城市地下管線探測目的,是為了建設項目在設計過程中讓建設項目的管線與市政管線之間能夠清晰無誤、合理地進行接駁;是為了在城市建設過程中更好地保護已有地下管線,防止施工時對管線造成破壞。目前,地下管線探測手段和技術都比較成熟,相關數據生產軟件較為實用。然而,在實際管線勘測及內業生產過程,往往因為數據缺失、現場環境復雜而無法探測、誤刪屬性數據等各種因素,造成管網數據中部分管線高程或埋深值的缺失,尤其是非金屬管的管段中央,因為無法用雷達等設備進行探測。

而高程值不完整的數據,在地下管網三維建模、管網流向分析等行業綜合應用過程中,會導致管線數據模型不完整,最終出現分析結果出錯或者無法分析等問題;另外,管線埋深的缺失,還會影響到道路施工或市政工程中的路面開挖,甚至造成管線挖斷等嚴重后果。為補齊缺失的管線高程數據,常常需要進行外業實地補測,此則不光影響項目工期,還會造成大量人力、物力浪費。因此,研究一種能根據現有的大比例地形圖、DEM數據及管線數據,自動計算出缺失管線高程的算法,從而節省大量人力、物力,有著很大的經濟效益。

本文研究方法,首先利用管線所在位置的大比例地形圖數據內的高程點構建DEM;然后,通過DEM內插,得出管線所在位置的地面高程。同時,利用鄰近管線數據,生成一條管線擬合曲線,曲線經過待求的位置,即為管線近似高程。整個算法思路,可以理解為地面是一個曲面,管線為一條曲線,計算位置曲線與曲面之間的距離,即為管線埋深。最后,再結合管線類型、管徑大小等信息修正計算,計算出缺失點的管線頂部與地面的近似距離。

1 構建地面高程模型

構造DEM的高程點,可以從大比例地形圖提取,根據DEM內插可分為整體內插、分塊內插和逐點內插3類[1-3],每種內插方法,在不同的地形地貌環境下,不同的采樣點方式和密度下,都有各自的誤差。而地下管線基本在城市內,可以將其視為地貌基本平滑,無較大起伏。而高程點因為來自1∶500地形圖,根據國家1∶500外業數字測圖規程,高程點最大間隔為15m[4]。故,以管線位置為圓心,半徑50 m的緩沖區內提取高程點,基本能滿足構建DEM要求,也不會因為結點太多,需要大量的運算。

50 m范圍內高程點提取可以滿足極大部分情況,但有時管線點處于大型建筑物或是大面積水域旁邊,50 m內沒有足夠的高程點供DEM構建,此時可以按倍數擴大提取范圍進行運算。

地圖上的高程點,有的由于測圖錯誤或點位置的極端性,會存某些點的高程與周邊相差較大的情況,而這些點如果用于DEM,會造成高程波動,影響到內插點的高程精度。因此,為了保證構建DEM過程盡量與實際相符合,在構建DEM前,還應對所有高程點進行比較,篩選過濾出與平均高程值相差較大的點。

2 高程模擬算法設計

管線所在位置地面高程模擬算法設計流程如下:

(1)從管線數據庫中,分析出所有需要計算高程值的點位坐標、管線對象和管點對象。

(2)通過點位坐標值,緩沖50 m·N(N從1開始),獲取地形圖上的高程點數據。

(3)對所獲取的高程點數據,進行計算平均值,設定一個閥值過濾高程值異常的高程點數據。

(4)循環提取任意3個高程點形成三角網,并判斷需要計算的高程值點位是否在該三角網內,如果不在三角網內則將其過濾掉。如果在三角網內,則通過以下數學公式計算該點位的高程值。

①通過兩點式,計算三角網中的任意兩個點(P1和P2)的直線方程A1:(y-y1)/(x-x1)=(y-y2)/(x-x2);

②通過兩點式計算三角網中的另一點(P3)和待計算的點位(P)形成直線方程A2:(y-y3)/(x-x3)=(y-y′)/(x-x′);

③通過直線方程A1和A2,求解兩條直線的交點值PT(XT,YT);

④計算長度L1(P3-PT)和L2(PT-P),計算長度比例△K=L1/L2。

⑤通過長度比例△K和P3的Z3值,最終計算出P點位的Z值(Z=Z3*△K);

⑥通過上述的計算,取得一組該點位上的高程值數組,并判斷該數組是否達到閥值數M;如果未達到,則N=N+1重新計算。

⑦去掉高程值數組中的最大值和最小值,最終計算高程的平均值H。

具體算法設計圖如圖1所示。

圖1 高程模擬算法設計圖

任意三角形內計算管點的高程值相關代碼如下:

public class MathsClass

{

///

/// 通過3個點組成的三角網,計算內部第四個點的高程值;如果第四個點不在三角網內,返回-99999。

///

public void GetAltitudeValue(PointStruct Point1, PointStruct Point2, PointStruct Point3,ref PointStruct MidPoint)

{

MidPoint.Z = -9999;

PointStruct pCrossPoint = GetCrossoverPoint(Point1, Point2, Point3, MidPoint);

bool bIsIn = IsInLine(Point1, Point2, pCrossPoint);

if (bIsIn == false) return;

CalculationAltitude(Point1, Point2, ref pCrossPoint);

bIsIn = IsInLine(Point3, pCrossPoint, MidPoint);

if (bIsIn == false) return;

CalculationAltitude(Point3,pCrossPoint, ref MidPoint);

}

///

/// 按比例計算高程值

///

private void CalculationAltitude(PointStruct Point1, PointStruct Point2, ref PointStruct MidPoint)

{

double dA = -99999;

double dK = (Point1.X - MidPoint.X) / (MidPoint.X - Point2.X);

dA = (Point1.Z + dK * Point2.Z) / (dK + 1);

MidPoint.Z = dA;

}

///

/// 取得三個點組成的三角網,與第四個點的連線的交點坐標

///

private PointStruct GetCrossoverPoint(PointStruct Point1, PointStruct Point2, PointStruct Point3, PointStruct MidPoint)

{

PointStruct pCrossPoint = new PointStruct();

double x = 0; double y = 0;

x=(Point3.Y-Point2.Y)*(Point2.X-Point1.X)*(MidPoint.X-Point3.X)+Point1.X*(MidPoint.X-Point3.X)*(Point2.Y-Point1.Y)-Point3.X*(Point2.X-Point1.X)*(MidPoint.Y-Point3.Y);

x=x/((MidPoint.X-Point3.X)*(Point2.Y-Point1.Y)-(Point2.X-Point1.X)*(MidPoint.Y-Point3.Y));

y=((Point2.Y-Point1.Y)*(x-Point1.X))/(Point2.X-Point1.X);

y=y+Point1.Y;

pCrossPoint.X=x;

pCrossPoint.Y=y;

return pCrossPoint;

}

///

/// 判斷交點是否在線段上

///

private bool IsInLine(PointStruct Point1, PointStruct Point2, PointStruct CrossPoint)

{ //通過坐標值判斷

return true;

}

}

3 地下管線曲線模擬

管線外業探測時,除了測量每個井的管線高外,在兩井相隔較遠的地方,也會在中間加密管線點。因此,在某個要推算埋深的管線位置,兩端一般都有管線已知高程。

在理想的情況下,待算位置兩端各取最近的一個有高程的管線點,兩個點相連形成一條直線,直線經過待算位置點的三維坐標,即為待求點坐標。但實際應用中發現,這個情況只適用于鑄鐵管、PC管等硬管,對于電纜、光纜等軟性管,直接用直線取值會有一定的誤差,特別是使用拉管施工下穿馬路、河流等管線上,直線存在較大的誤差,這時就需要用其他辦法。

本文采取的方法為,在待求位置兩端各取3~5個已知管線點,通過最小二乘法建立擬合曲線[4-6],曲線經過待求管線位置的三維坐標,即為該管線點的坐標。

4 算法檢驗

算法程序編寫完成后,筆者抽取某市建成區市政道路旁綠化帶里的一條給水管線以及新區未開發區域(地貌起伏變化較大)的一條給水管線分別進行試驗,對未能探出管線埋深的點位進行開挖驗證;同時結合1∶500DLG數據,采用程序對試驗點的埋深進行計算。計算結果與實際埋深對比結果如表1所示。

表1 計算結果與實際埋深對比結果表 m

(1)簡單區域管線點埋深誤差情況分析表明:本算法計算出的埋深與實測埋深相差最大值為0.11m,最小值為0.04,平均值為0.074m,根據《城市地下管線探測技術規程》(CJJ 61-2017)及《工程測量規范》(GB50026-2007)規定,隱蔽管線點埋深探查中誤差不大于0.075h(當h<1000mm時,以1000mm代入),本算法所計算出的管線點埋深,符合《城市地下管線探測技術規程》及《工程測量規范》。

(2)復雜區域管線點埋深誤差情況分析表明:本算法計算出的埋深與實測埋深相差最大值為0.39m,最小值為0.06,平均值為0.186m,根據《城市地下管線探測技術規程》(CJJ 61-2017)及《工程測量規范》(GB50026-2007)規定,隱蔽管線點埋深探查中誤差不大于0.075h(當h<1000mm時,以1000mm代入),本算法所計算出的管線點埋深,部分超出符合《城市地下管線探測技術規程》及《工程測量規范》。

綜上分析可見,利用本算法計算埋深時,應區分區域地形地貌情況,在地形比較平坦區域,本算法計算埋深可適用;在地形復雜區域,本算法計算出的埋深與實際埋深的誤差可能會超限。

5 結語

挖斷或打穿地下管線的事例,在市政施工及道路開挖中屢見不鮮,本文提出的充分利用已有地形數據及管線數據,模擬計算管線埋深的方法,對難以探測位置的管線定位具有較大的參考價值。

由于本文所提算法需要計算點位置周邊大量地形與管線數據支撐,所以在數據比較完整的城市地區應用效果比較好;而對地形和管線數據稀少的區域,則應用價值不大。

其次,地形環境的不同,對本算法也有較大的影響,在地面起伏不大的地區計算結果較好,而地形變化明顯、溝坎縱橫的地區,往往會出現較大偏差。在工程施工中,重要管線埋深應到現場進行重新探測確認。

猜你喜歡
三角網點位高程
8848.86m珠峰新高程
基于結構光視覺的鉆孔點位法矢檢測技術研究
結合Delaunay三角網的自適應多尺度圖像重疊域配準方法
機器人點位控制速度規劃算法選擇策略
大盤仍在強烈下跌趨勢中
基于二次曲面函數的高程擬合研究
針對路面建模的Delaunay三角網格分治算法
基于空間網格的機器人工作點位姿標定方法
SDCORS高程代替等級水準測量的研究
回歸支持向量機在區域高程異常擬合中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合