APP下载

基于.NET API的河道深泓线提取的CAD工具的开发和应用

2015-12-02李曦凌向明明

水电与抽水蓄能 2015年1期
关键词:中心线波束线段

李曦凌,向明明

(中国电建集团昆明勘测设计研究院有限公司,云南省昆明市 650001)

基于.NET API的河道深泓线提取的CAD工具的开发和应用

李曦凌,向明明

(中国电建集团昆明勘测设计研究院有限公司,云南省昆明市 650001)

在多波束测深系统应用于河道水下地形测量中,由于数据量巨大,手工提取深泓线成为了一项艰巨而繁琐的任务。本文提出了在CAD2010平台下,利用VB.NET语言,实现深泓线自动提取的方法。

多波束水下地形测量;深泓线提取;.NET API;CAD二次开发

0 引言

河床深泓线河底最低点的连线,是河流特性的基本参数,它反映了河道的变化,对于河流、水库的演变过程研究有着重要意义。在水下地形测量中,深泓线是一项重要的测量成果。目前对深泓线的绘制主要有人工和自动两种方法,自动算法主要是闭合等深线端点法[1],这种方法适用于纸质地形图矢量化后的深泓线提取,但是由于等高距、地形图比例尺的限制及等深线本身的误差,提取后的深泓线精度不高。

多波束测深系统能获得一个条带覆盖区域内多个测量点的海底深度值,实现了从“点—线”测量到“线—面”测量的跨越。多波束系统能够生产出高精度点云,在此基础上绘制的深泓线精度高。但是,一条河的点云数据量十分庞大,就算将点云抽稀成按一定间距分布的高程点,人工绘制深泓线也是一件十分繁琐的事。因此,通过编写程序实现深泓线自动提取十分必要。

本文的主要方法是在CAD平台下提取、绘制深泓线。当前AutoCAD的二次开发工具主要有:VisualLisp、VBA、ObjectARX和.NET API等。其中,VisualLisp与VBA较为简单,而 ObjectARX基于VC平台,在C++的支持下,其功能非常强大,可以很好地运用各种面向对象技术,但其缺点是发开速度比较慢,同时对开发人员的能力要求较高。

基于.NET平台对AutoCAD进行二次开发,可充分利用.NET的各种优势,在保证功能强大的前提下大大提高开发速度。

2 深泓线提取原理及实现过程

2.1 基本原理

基于地形图的人工绘制深泓线的思路为:利用地形图上的等高线和高程点,沿着河道中心线,按一定间距将最低的高程点连接起来形成深泓线。

在编写程序时,借鉴了断面法的思路,即:沿河道中心线按一定间距生成河道中心线的横剖面,然后每一条横剖面建立一个“缓冲搜索区”,搜索该区域内所有高程点中的高程最小值,最后将这些最低点连接起来,如图1所示。

图1 深泓线绘制流程图

2.2 实现过程

2.2.1 CAD实体的获取

图形对象又称为实体,是组成图形的可见对象(线、圆、光栅图像等)。向当前图形添加图形对象的方法是,通过引用正确的块表记录,使用Append Entity方法将要添加的新对象添加到图形中。

要修改或查询对象,先从相应的块表记录里获得对该对象的引用,然后调用该对象自己的方法或属性。每个图形对象都拥有一些方法,这些方法实现了与大部分AutoCAD编辑命令相同的功能,像复制、删除、移动、镜像,等等。

本文涉及的CAD实体类型主要是多线段(polyline)、 块 参 照(BlockReference) 和 文 字(DBtext)。在工程应用中,我们规定河道深泓线是一条多线段,而高程点是CASS绘图软件生成的块参照。

2.2.2 横剖面线生成

首先在河道中心线(polyline类型)上按一定间距提取该中心线上的点P(point3d类型),找出该点前后两个节点Pi-1和Pi之间的直线,获得与之垂直的直线,即为P点上河道中心线的法线。

使用到的关键方法有:

(1) 获取多线段上某长度上的点:polyline.GetPointAtDist()。

(2) 构造一个极坐标方法获取点的函数PolarPoint,用于得到法线两端点。

(3) AppendEntity方法添加横剖面的多线段实体。

图2 河道中心线法线的生成示意图

2.2.3 “缓冲区”搜索最低点

根据上一步骤生成的法线多线段,左右平移一定距离得到两条平行线,将这两条平行线连接形成一个多边形(polygon),这个多边形就是搜索的缓冲区,利用.Select Crossing Polygon方法选择多边形内的高程点,得到一个高程点的集合,然后在集合中查找高程值最小的那个实体。

2.2.4 生成深泓线及纵断面图

构建一个深泓线的Point3d Collection类,在搜索断面最低点的同时向该类的添加point3d类,在添加节点完成后,用Append Entity方法绘出深泓线的三维多线段平面图。

深泓线的断面图的横坐标里程需与河道中心线一致,即需要将深泓线的长度归算到河道中心线上后方可生成断面图。

2.2.5 运行优化

在实际工程应用中,深泓线往往是一条有着大量顶点的三维多线段,设这些多线段顶点集合为strechpoints(),若每个断面的前后两个顶点都是从strechpoints()中从头到尾地搜索,则会造成程序的内存溢出及运行缓慢等情况。所以,需要在循环中加入判断:设前一个断面的前后端点为j-1,和j,则在下一个循环中的循环变量起始值为j。

For j As Integer = L_count To U_count 变换循环变量起始值

L_count = j

U_count = strechpoints.Count – 1 多边形顶点的个数

Next j

3 实例验证

为了验证程序的运行效果,选取了云南某电站水库水下地形测量多波束导出的网格点为实验数据,点间距为20m,河道中心线长100km,选择搜索步长为20m,程序运行时间为2min20s。程序运行界面及程序效果图分别如图3、图4所示。

图3 程序运行界面

图4 程序效果图

4 结束语

在.NET 环境下,用VB语言对AutoCAD 进行二次开发, 实现了河道深泓线的自动提取。作者设计了直观的人机交互界面,只需提供几个少量的参数即可准确提取深泓线。同时,自动提取程序避免了手动查找的麻烦及不准确性,降低了劳动强度,提高了工作效率,在生产实践中运行良好。

[1] 丁贤荣.基于ArcGIS Engine的河床深泓线提取方法研究[J/OL].中国科技论文在线,2007(4).

[2] 曾洪飞,张帆,卢择临.AutoCAD VBA amp; VB.NET开发基础与实例教程[M].北京:中国电力出版社,2008.

李曦凌(1982—),男,工程师,主要研究方向:测绘工程。

向明明(1983—),男,工程师,主要研究方向:测绘工程。

Development and Application of AutoCAD Tool of the Extraction of Thalweg based on .NET API

LI Xiling
(Kunming engineering cooperation limited, Kunming 650001,China)

In the application of multi beam sounding system in the underwater measurement of reservoir or river, because of the huge amounts of raw data, manual extraction of thalweg became a difficult and tedious task. This paper presents the method of automatic extraction of thalweg on CAD2010 platform, based on VB.NET language.

the multi beam underwater measurement;extraction of thalweg; NET API; extended development of CAD

猜你喜欢

中心线波束线段
立式水轮发电机组“三条线”浅析
画出线段图来比较
基于共形超表面的波束聚焦研究
超波束技术在岸基光纤阵中的应用
毫米波大规模阵列天线波束扫描研究*
怎样画线段图
我们一起数线段
数线段
X线摄影中中心线对DR摄影质量的重要性
基于Meanshift和Hough变换的秧苗行中心线提取