行業資訊
地下管線探測數據內業檢查
城市地下管線是一個城市的“生命線”.同時,管線非常的脆弱,一旦受到碰撞,就會“翻臉大怒”;并且隨著地下空間的規劃與開發利用,我國已有100多個城市先后投巨資進行了綜合地下管線普查,建立地下管線數據庫工作.城市地下管線種類多,數量大,需要調查的屬性多,加之管線本身還具有隱蔽性及不可見性,為了確保成果的完整性、可靠性和準確性,探測數據的內業檢查顯得尤為重要.
由于地下管線探測數據不僅包括空間數據,還包括屬性數據,而且數據量極大,單純的采用人工的檢查方法,無法做到檢查的全面性和時效性.現代計算機技術的發展及其海量數據處理能力,使得管線數據的自動化檢查成為可能,研制可調性、可論文范文性、可擴展性的管線檢查系統為管線數據的正確性提供保障.
1.內業檢查的內容
1..1 數據庫格式、結構檢查
目前,全國各管線單位要求生產單位提交的數據集一般是Microsoft Office Access數據庫的mdb文件.數據庫格式、結構檢查主要檢查管線數據庫中的數據表是否齊全是否存在多余的表、表的字段名和數據類型是否正確、字段值的填寫格式是否符合規程的要求等.主要的檢查內容見表1:
1..2 數據邏輯檢查
數據邏輯性檢查復雜多樣,主要包括: 屬性值的邏輯一致性檢查, 管線、管點要素邏輯結構的合理性、正確性等.例如,在管線點數據表和管線段數據表中管線點編號相同的點,其坐標必須相同;如果附屬物為井,井深可定不能為0或空;個別管線段出現倒流的現象.主要的檢查內容見表2:
1..3 拓撲關系檢查
拓撲關系的檢查內容主要包括(表3):接邊檢查、管線碰撞檢查.接邊檢查主要檢查是否有漏接、接邊點的坐標是否與“老點”的坐標一致,屬性是否正確等.
由于管線探測誤差或管線隱蔽點漏測而造成本不應該相交的兩根管線在空間上相交了,稱之為管線碰撞.因此,探測數據表示的兩根管線物理上相交,基本上可判定為數據有錯誤.
2..管線碰撞檢查
2.檢查方法
Access自帶查詢功能,利用Sql語句查詢方便,但是從上面的檢查內容可以看出,并不是所有的檢查內容都能用一條sql語句就能檢查;有些檢查需要涉及到算法,而此時Access的查詢功能更顯得無能為力.本文的數據檢查思想是:建立檢查規則,利用面向對象語言的接口特性,將管線檢查規則與檢查程序主體相分離.同時,對檢查規則采用插件式管理.可以根據檢查內容的變化,隨意的增加、刪除檢查規則或修改檢查規則的代碼即可,而不必修改主程序的源代碼.對于一些較復雜的檢查可以方便的建立帶有算法的知識規則,下面以管線碰撞檢查為例.
首先,管線碰撞檢查類繼承主程序的管線檢查接口,然后再在此類中加入管線碰撞的算法.在實際管線檢查中可能數據比較大,為例降低檢查的時間,因此需要找到一種更為快速的碰撞檢測計算方法.城市地下管網是在一張大面積區域上鋪開的管道網絡系統,其 x,y 坐標及面積跨度相對較大,而其在高程(z 坐標)上的變化相對比較小.整個管網區域可以看成一個薄片,為了降低計算量,我們可以先把空間三維的管網投影到 XY 平面,忽略它的 z 坐標,這樣就可以在二維平面中來判斷線段是否相交.而在二維平面利用的向量的混合積來判斷兩根管線段是否相交的算法執行效率較高.部分核心C#代碼如下:
double x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4,//(x1, y1, z1)與( x2, y2, z2)為一條管線段的兩個端點三維坐標;(x3, y3, z3)與(x4, y4, z4)為另一條管線段的兩個端點的三維坐標
doubled1, d2, d3, d4, m, n,
等
d1 等于 (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1),//混合積的值
d2 等于 (x2 - x1) * (y4 - y1) - (x4 - x1) * (y2 - y1),
d3 等于 (x4 - x3) * (y2 - y3) - (x2 - x3) * (y4 - y3),
d4 等于 (x4 - x3) * (y1 - y3) - (x1 - x3) * (y4 - y3),
m 等于 d1 * d2,
n 等于 d3 * d4,//當m <, 0 且 n <, 0時兩管線段相交
如果不相交,則繼續判斷其與下一根管線段在二維平面是否相交;如果相交,需要z坐標進行參與,利用基于幾何空間線段的碰撞算法進行近一步的精確判斷兩管線段的公垂線的距離,如果公垂線的距離小于兩管線段的半徑的和,則可判定兩管線段發生碰撞.部分核心C#代碼如下:
double l1, l2, m1, m2, n1, n2, q,//(l1,m1,n1)和(l2,m2,n2)為兩管線段的方向向量,q為兩異面管線段的公垂線距離
等
l1 等于 x2 - x1,
l2 等于 x4 - x3,
m1 等于 y2 - y1,
m2 等于 y4 - y3,
n1 等于 z2 - z1,
n2 等于 z4 - z3,
q 等于 Math.Abs(Math.Pow((x1 - x3) * (m1 * n2 - n1 * m2) + (y1 - y3) * (n1 * l2 - n2 * l1) + (z1 - z3) * (l1 * m2 - l2 * m1), 2.0) / (Math.Pow(l1 * l2 + m1 * m2 + n1 * n2, 2.0) - (l1 * l1 + m1 * m1 + n1 * n1) * (l2 * l2 + m2 * m2 + n2 * n2))),
3.結語
高質量的數據是一個數據庫的核心.地下管線探測是一項系統、復雜的工程,而數據的檢查是其中的重要一部分.本文的管線檢查方法,能夠對數據進行論文范文化的檢查,保證數據檢查的全面性和高效性,保證了數據的高質量,從而使探測數據更好的服務于社會.
更多相關信息 還可關注中鐵城際公眾號矩陣 掃一掃下方二維碼即可關注