摘要:本文介绍了地下管线探测数据内业检查的检查内容,提出建立检查规则,利用面向对象语言的接口特性,将管线检查规则与检查程序主体相分离的内业数据检查方法,并以管线碰撞检查为例进行了说明。
关键词:地下管线业内检查检查规则
On the underground pipeline detection data checks within the industry
Abstract: This paper describes the data within the industry underground pipeline detection inspection check the contents, proposed the establishment of inspection rules, the use of object-oriented language interface characteristics, the pipeline inspection rules and inspection procedures within the industry, separate from the main data inspection methods, and pipeline collision check the example described.
Keywords: underground pipeline;Checks within the industry;Check the rules
城市地下管线是一个城市的“生命线”。同时,管线非常的脆弱,一旦受到碰撞,就会“翻脸大怒”;并且随着地下空间的规划与开发利用,我国已有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结语
高质量的数据是一个数据库的核心。地下管线探测是一项系统、复杂的工程,而数据的检查是其中的重要一部分。本文的管线检查方法,能够对数据进行定制化的检查,保证数据检查的全面性和高效性,保证了数据的高质量,从而使探测数据更好的服务于社会。
参考文献:
[1] 顾建祥,钱小伟.地下管线普查产品的检验[J].测绘与空间地理信息, 2007,30(3):211-214.
[2] 李丹农.城市地下管线数据的计算机监理检查[J].城市勘测,2007,04.
[4] 陈华.浅谈城市地下管线普查成果数据的质量检查[J].四川测绘,2008,04.
[5] 杜国庆,闾国年,张书亮.浅议基于知识规则的地下管网信息系统的监理[J]. 工程勘察,2005(03).
[6] 于国清,汤广发,郭骏,等.一种基于几何的空间管道碰撞检测算法[J].哈尔滨工业大学学报,2003(11).
[7] 王舒鹏,方莉.混合积判断线段相交的方法分析[J].电脑开发与
应用, 2006,19(10).
因篇幅问题不能全部显示,请点此查看更多更全内容