线性分布下岩土工程勘察钻孔编号算法的设计与实现
2021-12-24张阔
张阔
摘要:岩土工程勘察报告的平面图绘制工作是工程地质勘察过程中的主要任务之一,而传统的自动编号程序存在针对线性分布的钻孔无法使编号顺序与路径走向一致的问题。将钻孔和有向路径分别抽象为平面空间中的点和有向线段集合,定义了三种距离参数用于定量描述平面空间中的点与线段的相对位置关系,并提出了一种坐标点编号算法,能使沿有向路径分布的坐标点的编号顺序与路径方向一致。最后以某输水管线工程为例,使用基于AutoCAD二次开发的自编程序介绍该算法的实际应用,结果表明该算法能显著提高岩土工程勘察报告平面图绘制的工作效率。
关键词:岩土工程勘察;排序算法;自动编号;数字制图;二次开发
中图分类号:TB115 文献标识码:A
文章编号:1009-3044(2021)29-0020-04
A New Algorithm for Borehole Numbering of Geotechnical Investigation under Path Distribution
ZHANG Kuo
(Sichuan Chuanjian Geotechnical Survey Design Institute, Chengdu 610000, China)
Abstract: the geotechnical investigation plan drawing is one of the main tasks in the process of engineering geological investigation. The traditional automatic numbering program realizes the automatic numbering of boreholes by comparing the XY coordinate values, but for the boreholes distributed along a certain directional path, the numbering sequence cannot be consistent with the path direction. In this paper, borehole and directed path are abstracted as a set of points and directed line segments in plane space respectively, three distance parameters are defined to quantitatively describe the relative position relationship between points and line segments in plane space, and a coordinate point numbering algorithm is proposed, which can make the numbering sequence of coordinate points distributed along directed path consistent with the path direction. Finally, taking a water transmission pipeline project as an example, the practical application of the algorithm is introduced by using the self-made program based on the secondary development of AutoCAD. The results show that the algorithm can significantly improve the efficiency of drawing the geotechnical investigation plan.
Key words: Geotechnical investigation; Sorting algorithm; Automatic numbering; Digital mapping; Secondary development
1引言
随着扫描和数字化成图系统的发展,计算机制图在当前工程地质内业整理工作中广泛应用,而且全电脑成图已成为当前要发展趋势[1-2]。其中对点状单元自动编号的工程需求比较普遍,目前岩土工程中的计算机自动编号技术在工程桩号的编制中应用较多,但大多直接按照桩芯坐标XY值排序[3-4],在岩土工程勘察的平面图绘制工作中,虽然自动编号技术未见有文献报道应用,但就工程界的实际应用中,大多数技术员利用自编程序对勘察钻孔编号时仍是采用此原理,近年来已有文献[5]提到对线状建筑物自动生成桩号的研究,但要求点状单元必须在线段上。在岩土工程勘察平面图绘制工作中,对于更普遍的钻孔分布在线状拟建物两侧的情况下,使钻孔编號顺序与线段走向保持一致是一个有待解决的问题。
图1编号方法
肉眼识别线段走向是很容易的,但是如何让计算机分析出钻孔孔位与拟建物走向之间的平面空间关系并以此确定钻孔顺序则相对复杂一些,这也是本文探讨的主要内容。
2平面空间点线关系分析
2.1对点顺序的定义
“与拟建物走向一致”是对钻孔顺序的定性描述,而基于平面空间位置对钻孔编号排序还需要一个(组)变量对各钻孔进行定量描述,从而对钻孔位置进行比较,传统的计算机自动编号算法就是利用XY坐标描述钻孔,通过比较XY值大小来对钻孔排序,但本文需要新的变量来描述钻孔位置。
为定量描述钻孔顺序,需要将勘探孔抽象为平面空间中的有限个坐标点,将线状分布的拟建物抽象为有限个有向线段,这些有向线段首尾依次相连且两两不相交,那么可以采用坐标点在有向线段上的投影来进行定量描述。根据这些坐标点与有向线段的平面空间位置关系,又可以分为三种情况将“投影”定量化。
第一种情况:
设平面坐标系中存在两个坐标点分别表示为Am 和An,有向线段表示为向量,其方向由点Bj指向点。设与Am 和An 距离最近的有向线段(点与线段的距离的定义在2.2节中给出)为同一个向量并记为和An 在上的投影点到的距离分别为和,则当
时,判定为点Am 在点An 之前。
第二种情况:
在式2.1中,当
时,则需要选择新的变量来判定顺序,此时本文选择坐标点到向量的垂直距离作为判定依据。设Am 和An 与向量的垂直距离分别为和,则当
时,判定为点Am 在点An 之前。
第三种情况:
在第一种情况中,如果与Am 和An 距离最近的向量不为同一个向量,并记与Am 和An 距离最近的向量分别为和则当角标
时,判定为点在点之前。
综上由式2.1、式2.3和式2.4可知对坐标点顺序通过有向线段的角标、点在有向线段上的投影点到有向线段起点的距离 s(下文简称投影距离s)、坐标点到有向线段的垂直距离d(下文简称垂直距离d)等三个变量之间进行值的大小比较来描述,且比较的优先级依次递减。
如图2所示,首先按有向线段来比较,因为有向线段在有向线段之前,所以离最近的点也排在离最近的点之前,即图中Al、Am 和An 的顺序都在Ao之前。其次从投影距离来看,Al在上的投影距离sl比Am 和An 的投影距离sm和sn都短,所以Al的顺序在Am 和An 之前。最后再看垂直距离,Am 和An 在上的投影距离是相同的,但Am 的垂直距离dm 大于An 的垂直距离dn,所以Am 的顺序又在An 之前。综上可求得图2 中四个点的顺序依次为Al、Am、An 和Ao,如果给角标赋具体的编号值,则l < m < n < o 。直观上来看,计算出的这四个点的顺序也是与两条有向线段的方向一致的。
2.2点与有向线段的距离
众所周知点与直线之间的距离就是点到该点在直线上的投影点的距离,但是有向线段并不像直线一样两端无限延伸,基于此本文给出点与有向线段之间距离的定义(下文简称点线距离):
设有向线段的长度为,点Am 与有向线段的距离为,则
如图3所示,式2.5对应了三种情况,即当投影点在有向线段起点外、线段内、终点外时。虽然起点外和终点外两种情况可以看作一种,但是在编制程序时需要分开计算。
引入点线距离的定义目的是衡量点与有向线段之间的远近关系,从而可以将点按有向线段进行分类。
3算法流程
算法流程如图4所示。
设初始输入数据为各个点坐标和各有向线段起止点坐标和以及这些起止点坐标的顺序。选择坐标作为初始输入数据是因为本文对算法的程序编制是基于 AutoCAD 软件进行的,而在基于.NET框架的AutoCAD二次开发中,点坐标是最容易获取的变量值之一,且获取多段线各角点坐标时,也能同时获取各坐标点的顺序[6]。算法步骤为:
1)计算坐标系变换参数。
如图5 所示,设原始坐标系为xOy,变换后的坐标系为x'O'y',且仅通过旋转、平移进行变换,并使变换后的坐标原点O' 与原始坐标系的坐标原点O重合,x'轴与有向线段的方向一致,此时y'轴必然与有向线段在原点O'处垂直,且符合右手法则。
以仅旋转、平移的方式进行坐标系变换,由初始输入数据可以计算出旋转角度θj和平移向量:
式3.1和3.2用正弦值和余弦值来描述θj是为了方便后面的计算,上文已提到l 就是有向线段的长度。通过以上计算可以得到每一个有向线段的旋转角度θj和平移向量,它们是坐标变换的两个重要参数。
2)计算投影距离、垂直距离和点线距离
通过坐标系转换,可以同时求得投影距离和垂直距离,其实此二值就是坐标点在坐标系变换后的新坐标系下的横、纵坐标。由坐标变换参数θj和以及坐标系变换公式可以求得点在新坐标系下的横、纵坐标,同时也就得到了投影距离和垂直距离:
坐标(xm′ ,ym′)为点Am 在新坐标系下的坐标。
再结合式2.5和式3.3可以求得点线距离:
至此,所有排序所需要的三大变量都由初始坐标数据求出了。
3)排序
通过以上步骤,可以交叉计算每一个点与每一条有向线段的点线距离。从点的角度来看,每一个点都有一组点线距离,在这些点线距离中取最小值,它所关联的有向线段就是离此点最近的有向线段。每一个点都能找到一条离它最近的有向线段(如果离该点最近的有向线段同时有多条,取角标最小的一条),本文称之为此点“属于”这条有向线段。有向线段的顺序是已知的,当一条有向线段的顺序在另一条有向线段的前面,那么属于前者的点的顺序也在属于后者的点之前,这就完成了点的初步排序,正如第2.1节中的第三种情况。
将坐标点按线段排序后,就可以对属于单条有向线段的点集进一步排序,首先按上一步中计算出的每个点的投影距离从小到大排序(第2.1节中的第一种情况),如果遇到投影距离相等的两个点,则再按垂直距离从大到小排序(第2.1节中的第二种情况)。
4算例
本文将以某输水管线项目的岩土工程勘察平面图绘制工作为例,采用对AutoCAD软件进行二次开发的方式,进一步介绍本算法在实际项目中的应用。
某输水管线项目全长20.8km,本次勘察拟沿全管线按间隔约 100m 及拐点处布置勘探钻孔218个。在初始钻孔布置中,以复制图块的方式在拟钻探点位绘制218个代表钻孔的自定义CAD 图块,自定义图块中包含一个代表编号的块属性,但是在复制图块时无法直接递增编号。如果手动对钻孔块的编号属性一一赋值,将会是一个巨大的工作量,并且赋值以后,如果需要在局部增加或删除个别钻孔,重新编号也极其不方便。因为管线蜿蜒曲折,如果采用XY坐标法自动编号,局部编号顺序会与管线走向不一致。下面利用基于AutoCAD二次开发的自编程序对钻孔图块编号,并使编号顺序能够与管线走向一致。
首先需要绘制代表管线走向的辅助多段线,由于在设计单位提供的管线布置图中,代表管线的直线是被井点图块断开的,故不能直接作为有向线段的辅助多段线。额外绘制好辅助多断线(辅助线的节点可以远远少于原管线节点)后,在命令栏输入自编程序的启动命令,并按提示依次选择辅助多段线、钻孔图块所在图层,之后就能将218个钻孔图块的编号属性按管线走向赋予编号值,结果如图6所示。
如果增删钻孔也很方便,增删钻孔后再次执行自编程序,便能快速编号,增加(删除)的钻孔之后的钻孔编号能自动递增(递减)。出图时只要将辅助多段线所在图层设为不可打印或冻结即可。
5结语
(1)将勘察钻孔和线状拟建物分别抽象为平面空间中的有限个坐标点和有限个有向线段,对其进行了空间关系分析,定义了投影距离、垂直距离和点线距离三个变量,用其描述点与有向线段的相互空间位置关系,以及衡量点沿有向线段方向的顺序。
(2)介绍坐标点排序算法流程,以点坐标、有向线段起止点坐标为已知量,通过坐标系变换的思想给出了投影距离、垂直距离和点线距离三个变量的计算过程,以及如何用这三个距离变量来对坐标点排序。
(3)以某输水管线项目的岩土工程勘察平面圖绘制工作为例,介绍本算法在实际项目中的应用,显示出该算法具有较高的实用性。
参考文献:
[1]师磊. 计算机绘图在地质工作中的应用及发展趋势[J].西部探矿工程,2006,18(12):132-133.
[2]崔斌. 地质勘察中计算机绘图的应用及发展趋势[J].科技经济导刊,2018,26(7):27.
[3]温立新. 在AutoCAD 中实现桩号自动编写的方法[J].军工勘察,1995,9(3):36-37
[4]张海蛟,纪晓雨.VBA在地基处理桩号自动编写中的应用[J].工程建设与设计,2017(5):148-150.
[5]王叶. 线性建筑物的桩号自动生成方法及其应用[J].水利规划与设计,2020(3):163-166.
[6]李冠亿. 深入浅出AutoCAD.NET二次开发[M].北京:中国建筑工业出版社,2012.
【通联编辑:梁书】