張中南
(福州市勘測院 福建福州 350100)
城市地下管線探測目的,是為了建設(shè)項(xiàng)目在設(shè)計(jì)過程中讓建設(shè)項(xiàng)目的管線與市政管線之間能夠清晰無誤、合理地進(jìn)行接駁;是為了在城市建設(shè)過程中更好地保護(hù)已有地下管線,防止施工時(shí)對管線造成破壞。目前,地下管線探測手段和技術(shù)都比較成熟,相關(guān)數(shù)據(jù)生產(chǎn)軟件較為實(shí)用。然而,在實(shí)際管線勘測及內(nèi)業(yè)生產(chǎn)過程,往往因?yàn)閿?shù)據(jù)缺失、現(xiàn)場環(huán)境復(fù)雜而無法探測、誤刪屬性數(shù)據(jù)等各種因素,造成管網(wǎng)數(shù)據(jù)中部分管線高程或埋深值的缺失,尤其是非金屬管的管段中央,因?yàn)闊o法用雷達(dá)等設(shè)備進(jìn)行探測。
而高程值不完整的數(shù)據(jù),在地下管網(wǎng)三維建模、管網(wǎng)流向分析等行業(yè)綜合應(yīng)用過程中,會導(dǎo)致管線數(shù)據(jù)模型不完整,最終出現(xiàn)分析結(jié)果出錯或者無法分析等問題;另外,管線埋深的缺失,還會影響到道路施工或市政工程中的路面開挖,甚至造成管線挖斷等嚴(yán)重后果。為補(bǔ)齊缺失的管線高程數(shù)據(jù),常常需要進(jìn)行外業(yè)實(shí)地補(bǔ)測,此則不光影響項(xiàng)目工期,還會造成大量人力、物力浪費(fèi)。因此,研究一種能根據(jù)現(xiàn)有的大比例地形圖、DEM數(shù)據(jù)及管線數(shù)據(jù),自動計(jì)算出缺失管線高程的算法,從而節(jié)省大量人力、物力,有著很大的經(jīng)濟(jì)效益。
本文研究方法,首先利用管線所在位置的大比例地形圖數(shù)據(jù)內(nèi)的高程點(diǎn)構(gòu)建DEM;然后,通過DEM內(nèi)插,得出管線所在位置的地面高程。同時(shí),利用鄰近管線數(shù)據(jù),生成一條管線擬合曲線,曲線經(jīng)過待求的位置,即為管線近似高程。整個算法思路,可以理解為地面是一個曲面,管線為一條曲線,計(jì)算位置曲線與曲面之間的距離,即為管線埋深。最后,再結(jié)合管線類型、管徑大小等信息修正計(jì)算,計(jì)算出缺失點(diǎn)的管線頂部與地面的近似距離。
構(gòu)造DEM的高程點(diǎn),可以從大比例地形圖提取,根據(jù)DEM內(nèi)插可分為整體內(nèi)插、分塊內(nèi)插和逐點(diǎn)內(nèi)插3類[1-3],每種內(nèi)插方法,在不同的地形地貌環(huán)境下,不同的采樣點(diǎn)方式和密度下,都有各自的誤差。而地下管線基本在城市內(nèi),可以將其視為地貌基本平滑,無較大起伏。而高程點(diǎn)因?yàn)閬碜?∶500地形圖,根據(jù)國家1∶500外業(yè)數(shù)字測圖規(guī)程,高程點(diǎn)最大間隔為15m[4]。故,以管線位置為圓心,半徑50 m的緩沖區(qū)內(nèi)提取高程點(diǎn),基本能滿足構(gòu)建DEM要求,也不會因?yàn)榻Y(jié)點(diǎn)太多,需要大量的運(yùn)算。
50 m范圍內(nèi)高程點(diǎn)提取可以滿足極大部分情況,但有時(shí)管線點(diǎn)處于大型建筑物或是大面積水域旁邊,50 m內(nèi)沒有足夠的高程點(diǎn)供DEM構(gòu)建,此時(shí)可以按倍數(shù)擴(kuò)大提取范圍進(jìn)行運(yùn)算。
地圖上的高程點(diǎn),有的由于測圖錯誤或點(diǎn)位置的極端性,會存某些點(diǎn)的高程與周邊相差較大的情況,而這些點(diǎn)如果用于DEM,會造成高程波動,影響到內(nèi)插點(diǎn)的高程精度。因此,為了保證構(gòu)建DEM過程盡量與實(shí)際相符合,在構(gòu)建DEM前,還應(yīng)對所有高程點(diǎn)進(jìn)行比較,篩選過濾出與平均高程值相差較大的點(diǎn)。
管線所在位置地面高程模擬算法設(shè)計(jì)流程如下:
(1)從管線數(shù)據(jù)庫中,分析出所有需要計(jì)算高程值的點(diǎn)位坐標(biāo)、管線對象和管點(diǎn)對象。
(2)通過點(diǎn)位坐標(biāo)值,緩沖50 m·N(N從1開始),獲取地形圖上的高程點(diǎn)數(shù)據(jù)。
(3)對所獲取的高程點(diǎn)數(shù)據(jù),進(jìn)行計(jì)算平均值,設(shè)定一個閥值過濾高程值異常的高程點(diǎn)數(shù)據(jù)。
(4)循環(huán)提取任意3個高程點(diǎn)形成三角網(wǎng),并判斷需要計(jì)算的高程值點(diǎn)位是否在該三角網(wǎng)內(nèi),如果不在三角網(wǎng)內(nèi)則將其過濾掉。如果在三角網(wǎng)內(nèi),則通過以下數(shù)學(xué)公式計(jì)算該點(diǎn)位的高程值。
①通過兩點(diǎn)式,計(jì)算三角網(wǎng)中的任意兩個點(diǎn)(P1和P2)的直線方程A1:(y-y1)/(x-x1)=(y-y2)/(x-x2);
②通過兩點(diǎn)式計(jì)算三角網(wǎng)中的另一點(diǎn)(P3)和待計(jì)算的點(diǎn)位(P)形成直線方程A2:(y-y3)/(x-x3)=(y-y′)/(x-x′);
③通過直線方程A1和A2,求解兩條直線的交點(diǎn)值PT(XT,YT);
④計(jì)算長度L1(P3-PT)和L2(PT-P),計(jì)算長度比例△K=L1/L2。
⑤通過長度比例△K和P3的Z3值,最終計(jì)算出P點(diǎn)位的Z值(Z=Z3*△K);
⑥通過上述的計(jì)算,取得一組該點(diǎn)位上的高程值數(shù)組,并判斷該數(shù)組是否達(dá)到閥值數(shù)M;如果未達(dá)到,則N=N+1重新計(jì)算。
⑦去掉高程值數(shù)組中的最大值和最小值,最終計(jì)算高程的平均值H。
具體算法設(shè)計(jì)圖如圖1所示。
圖1 高程模擬算法設(shè)計(jì)圖
任意三角形內(nèi)計(jì)算管點(diǎn)的高程值相關(guān)代碼如下:
public class MathsClass
{
///
/// 通過3個點(diǎn)組成的三角網(wǎng),計(jì)算內(nèi)部第四個點(diǎn)的高程值;如果第四個點(diǎn)不在三角網(wǎng)內(nèi),返回-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);
}
///
/// 按比例計(jì)算高程值
///
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;
}
///
/// 取得三個點(diǎn)組成的三角網(wǎng),與第四個點(diǎn)的連線的交點(diǎn)坐標(biāo)
///
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;
}
///
/// 判斷交點(diǎn)是否在線段上
///
private bool IsInLine(PointStruct Point1, PointStruct Point2, PointStruct CrossPoint)
{ //通過坐標(biāo)值判斷
return true;
}
}
管線外業(yè)探測時(shí),除了測量每個井的管線高外,在兩井相隔較遠(yuǎn)的地方,也會在中間加密管線點(diǎn)。因此,在某個要推算埋深的管線位置,兩端一般都有管線已知高程。
在理想的情況下,待算位置兩端各取最近的一個有高程的管線點(diǎn),兩個點(diǎn)相連形成一條直線,直線經(jīng)過待算位置點(diǎn)的三維坐標(biāo),即為待求點(diǎn)坐標(biāo)。但實(shí)際應(yīng)用中發(fā)現(xiàn),這個情況只適用于鑄鐵管、PC管等硬管,對于電纜、光纜等軟性管,直接用直線取值會有一定的誤差,特別是使用拉管施工下穿馬路、河流等管線上,直線存在較大的誤差,這時(shí)就需要用其他辦法。
本文采取的方法為,在待求位置兩端各取3~5個已知管線點(diǎn),通過最小二乘法建立擬合曲線[4-6],曲線經(jīng)過待求管線位置的三維坐標(biāo),即為該管線點(diǎn)的坐標(biāo)。
算法程序編寫完成后,筆者抽取某市建成區(qū)市政道路旁綠化帶里的一條給水管線以及新區(qū)未開發(fā)區(qū)域(地貌起伏變化較大)的一條給水管線分別進(jìn)行試驗(yàn),對未能探出管線埋深的點(diǎn)位進(jìn)行開挖驗(yàn)證;同時(shí)結(jié)合1∶500DLG數(shù)據(jù),采用程序?qū)υ囼?yàn)點(diǎn)的埋深進(jìn)行計(jì)算。計(jì)算結(jié)果與實(shí)際埋深對比結(jié)果如表1所示。
表1 計(jì)算結(jié)果與實(shí)際埋深對比結(jié)果表 m
(1)簡單區(qū)域管線點(diǎn)埋深誤差情況分析表明:本算法計(jì)算出的埋深與實(shí)測埋深相差最大值為0.11m,最小值為0.04,平均值為0.074m,根據(jù)《城市地下管線探測技術(shù)規(guī)程》(CJJ 61-2017)及《工程測量規(guī)范》(GB50026-2007)規(guī)定,隱蔽管線點(diǎn)埋深探查中誤差不大于0.075h(當(dāng)h<1000mm時(shí),以1000mm代入),本算法所計(jì)算出的管線點(diǎn)埋深,符合《城市地下管線探測技術(shù)規(guī)程》及《工程測量規(guī)范》。
(2)復(fù)雜區(qū)域管線點(diǎn)埋深誤差情況分析表明:本算法計(jì)算出的埋深與實(shí)測埋深相差最大值為0.39m,最小值為0.06,平均值為0.186m,根據(jù)《城市地下管線探測技術(shù)規(guī)程》(CJJ 61-2017)及《工程測量規(guī)范》(GB50026-2007)規(guī)定,隱蔽管線點(diǎn)埋深探查中誤差不大于0.075h(當(dāng)h<1000mm時(shí),以1000mm代入),本算法所計(jì)算出的管線點(diǎn)埋深,部分超出符合《城市地下管線探測技術(shù)規(guī)程》及《工程測量規(guī)范》。
綜上分析可見,利用本算法計(jì)算埋深時(shí),應(yīng)區(qū)分區(qū)域地形地貌情況,在地形比較平坦區(qū)域,本算法計(jì)算埋深可適用;在地形復(fù)雜區(qū)域,本算法計(jì)算出的埋深與實(shí)際埋深的誤差可能會超限。
挖斷或打穿地下管線的事例,在市政施工及道路開挖中屢見不鮮,本文提出的充分利用已有地形數(shù)據(jù)及管線數(shù)據(jù),模擬計(jì)算管線埋深的方法,對難以探測位置的管線定位具有較大的參考價(jià)值。
由于本文所提算法需要計(jì)算點(diǎn)位置周邊大量地形與管線數(shù)據(jù)支撐,所以在數(shù)據(jù)比較完整的城市地區(qū)應(yīng)用效果比較好;而對地形和管線數(shù)據(jù)稀少的區(qū)域,則應(yīng)用價(jià)值不大。
其次,地形環(huán)境的不同,對本算法也有較大的影響,在地面起伏不大的地區(qū)計(jì)算結(jié)果較好,而地形變化明顯、溝坎縱橫的地區(qū),往往會出現(xiàn)較大偏差。在工程施工中,重要管線埋深應(yīng)到現(xiàn)場進(jìn)行重新探測確認(rèn)。