基于Visual Basic的大比例尺地形图数据接边检查程序的实现*

2017-06-28 14:26:04张忠斌郭玉冰
地矿测绘 2017年2期
关键词:端点节点检查

张忠斌,郭玉冰

(吉林省地矿测绘院,吉林 长春 130062)

基于Visual Basic的大比例尺地形图数据接边检查程序的实现*

张忠斌,郭玉冰

(吉林省地矿测绘院,吉林 长春 130062)

在大比例尺地形图的编绘过程中,数据的接边检查是测绘生产过程中的重要工序之一,为了减少地形图接边的错误率和提高接边效率,文章对大比例尺地形图接边检查程序进行了研究,主要采用Visual Basic语言编程实现了大比例尺地形图接边的检查。程序基本流程为数据拼图、生成内图廓、接边检查、错误信息标记、人机互动改正过程,并详细介绍了编程的关键技术。

Visual Basic;大比例尺地形图;接边检查程序;内图廓线

0 引言

目前,AutoCAD平台已被广泛地运用到大比例尺地形图的生产过程中,同时也出现了许多基于AutoCAD开发的大比例尺地形图生产软件。但由于各地数据结构的不同,各种绘图软件的接边检查功能都不太完善。为了减轻接边检查的工作量和提高接边的精度,本文利用Visual Basic语言编写了大比例尺地形图数据的接边检查程序,利用该程序实现了相邻地形图间的图形接边检查与属性接边检查,并标记错误信息,准确定位接边错误和方便查找错误类型,大大提高了接边检查的工作效率。

1 程序设计思路

在大比例尺地形图中,图形数据包括点、线、面3种要素,而在数据接边过程中点要素不存在接边问题,只有线、面需要接边,在AutoCAD平台下的数据结构中,面是由闭合的线构成的,所以数据接边问题就是线要素接边的问题。

程序设计的基本思路为:将接边图幅拼图,计算生成内图廓,线格式转换,制定接边原则,尺度和属性,从全区最西北端开始,先进行“西侧边接边”处理,再进行“北侧边接边”处理,一直到全区最东侧,南移一行,重复上面的操作,保存并标记错误信息。接边的原理为以内图廓线为主轴建立缓冲区,分别在缓冲区内建立两个选择集A和选择集B,在选择集A中与内图廓线最近的端点,在选择集B中找到符合接边条件的线(几何图形和属性一致),进行拼接处理,没有拼接处理的线,做好错误标记。

2 接边检查程序的流程

本接边检查程序采用计算机自动查找接边错误与人工改正相结合的方式。具体流程,如图1所示。

图1 接边检查程序流程图
Fig.1 Flow of edge matching program

2.1 拼图

将所要检查的地图存放在同一个文件夹下(一般小于100幅),通过拼图模块查找路径数据文件选中并插入到当前作业环境中。

2.2 内图廓生成

通过插入的图幅图廓信息,生成内图廓网格文件(类型为直线),也可以通过地形图分幅的算法,自动生成内图廓网格文件。

2.3 接边检查

2.3.1 线格式转换

AutoCAD平台上地形图表示线的实体类型主要包含直线、二维多段、线多段线和弧段4种,不同的类型实体具有不同的属性表示方法,为了有效对数据进行拼接处理,必须先进行数据格式转换,通过制图软件平台的转换方法[2],将二维多段线、直线和弧线都转换为多段线。

2.3.2 数据拼接

线的拼接需要满足以下条件:

1)线的端点到内图廓线的距离在限差范围内;

2)接边边界线上同一点位可以找到相同编码的线;

3)两条线的属性完全一致;

2.3.3 接边检查

实体数据拼接后,在内图廓直线上判断是否存在线的端点,如果有则做出错误标记。

2.4 错误信息标记

在接边有问题的地方用圆圈标记出来,并附有相应的错误属性,作业员根据标记可以得到接边的错误信息,例如几何接边错误、属性接边错误及不合理接边等,用人机交互的方式完成最后的接边工作[3]。

3 接边检查程序的关键技术

3.1 内图廓处理

地形图是按照内图廓来接边的,由于直线的图形特征具有简单性和方向性,程序利用直线作为内图廓分界线具有以下优点[4]:

1)减少了检查的冗余度,提高了地物匹配效率;

2)避免了地物多次检查与匹配。

3.2 接边点匹配

首先创建选择集,选择出需要检查的边线并判断端点是否在内图廓线上,如果端点在内图廓线上,创建数组选择集并对数组的记录逐条进行分析处理,可以得到对应的属性信息和坐标信息,最后对成对的数组进行属性比较,如果属性信息一致并且两实体首尾相连则接边通过[5]。

对数组进行分析处理代码为:

list2 = ConvertList(List1,Dec)

num = UBound(list2,2)

For j = 0 Tonum

If X = 0 Then

pt(0)= list2(0,j)

pt(1)= Y

pt(2)= 0

ElseIf Y = 0 Then

pt(0)= X

pt(1)= list2(0,j)

pt(2)= 0

End If

Pnt = pt

If list2(1,j)= 1 Then

Set CircleSign = hsk.CircleSign(Pnt,R)

Else

Dim Handles As Variant

Handles = Split(list2(2,j),",")

If((UBound(Handles)+ 1)Mod 2)= 1 Then

Set CircleSign = hsk.CircleSign(Pnt,R)

Else

' 成对的需要做属性比较

Dim ReBoolAs Boolean

ReBool = CompPrar(Handles,Dec)

If ReBool Then

Set CircleSign = hsk.CircleSign(Pnt,R)

End If

End If

End If

3.3 拼接后删除多余节点

在集合A和集合B中,如果a、b为同一地物则进行线拼接,拼接后会有一个节点c:如果节点c在a地物与c相邻的节点和b地物与c相邻的节点连线上,则节点c为多余节点,删除处理;如果节点c不在连线上,则做好“不合理接边”标记,并根据实际接边情况判断是否合理。

判断是否为有效点(判断点是否在线段AB上)代码为:

Public Function PntOnAB(ByValPnt As Variant,ByVal A As Variant,ByVal B As Variant,ByValDist As Double)As Boolean

If A(0)= B(0) Then

If Abs(Pnt(0)- A(0))

If A(1)> B(1)And A(1)>Pnt(1)And Pnt(1)> B(1) Then

PntOnAB = True

GoTo Finish

ElseIf A(1)< B(1)And A(1)

PntOnAB = True

GoTo Finish

End If

End If

ElseIf A(1)= B(1) Then

If Abs(Pnt(1)- A(1))

If A(0)> B(0)And A(0)>Pnt(0)And Pnt(0)> B(0) Then

PntOnAB = True

GoTo Finish

ElseIf A(0)< B(0)And A(0)

PntOnAB = True

GoTo Finish

End If

End If

End If

4 应用

在实际应用过程中,以相邻的32幅1∶500比例尺地形图(已经进行接边)为例,共有48条内图廓边需要检查,如果每条边上有地物50个,则共需要检查2 400次。依靠人工进行接边检查(位置和属性)用时约6.5 h,共检查出问题26处;使用该接边程序检查共用时15 min,检查出问题32处。由此可以看出,接边检查程序在接边检查的正确率和接边效率上优势都比较明显。接边程序界面,如图2所示。

图2 接边程序界面Fig.2 Interface of edge matching program

5 结束语

该接边检查程序已经应用到大比例尺地形图接边检查过程中。实践证明,该程序使用方便、能快速检查出接边问题,并能直接反映出接边问题的所在,减轻了接边工作量,提高了生产效率,但由于数据加载问题,拼图数量太多会造成卡机现象。根据经验,在实际生产中1∶500地形图的拼图数量一般应小于100幅。

[1] 中华人民共和国国家质量监督检验检疫总局,中国国家标准化管理委员会.GB/T 20257.1—2007国家基本比例尺地图图式第1部分:1∶500 1∶1 000 1∶2 000地形图图式[S].北京:中国标准出版社,2007.

[2] 曹健,李国忠,徐效波,等.基于ArcGIS Engine的多幅数字地形图接边算法研究[J].测绘与空间地理信息,2010,33(2):85-87.

[3] 霍春玲,刘达.AutoCAD数据接边检查自动化的实现[J].测绘工程,2006(4):74-76.

[4] 费小睿,陈玉娜.大比例尺地形图自动接边检查的实现[J].城市勘测,2015(1):60-62.

[5] 刘允,刘阳,杨钊.大比例尺地形图数据接边程序设计与实现[J].城市勘测,2012(1):65-67.

Realization of Edge Matching Program of Large-scale Topographic MapBased on Visual Basic

ZHANG Zhong-bin,GUO Yu-bin

(JilinInstituteofSurveyingandMappingofGeologyandMineralResources,ChangchunJilin130062,China)

In large-scale topographic map compilation process,the edge matching of data is one of the important links in surveying and mapping production.How to reduce the workload and improve work efficiency is the direction of this study.The paper mainly uses Visual Basic programing to realize the edge matching of large-scale topographic map.The basic flow of the program is data puzzle,generateing grids,edge matching,error message annotation,and finally finishing the work by man-machine interactive ways.The article also details the key technology of programming.

Visual Basic;large-scale topographic map;edge matching program;inner contour line

2017-02-21

P 208; P 284

B

1007-9394(2017)02-0031-02

张忠斌(1984~),男,吉林桦甸人,硕士,工程师,现主要从事工程测量和地理信息系统应用方面的工作。

猜你喜欢
端点节点检查
CM节点控制在船舶上的应用
非特征端点条件下PM函数的迭代根
Analysis of the characteristics of electronic equipment usage distance for common users
孕期X线检查,真的不能碰吗
备孕多年不成功,要做些什么检查
基于AutoCAD的门窗节点图快速构建
不等式求解过程中端点的确定
参数型Marcinkiewicz积分算子及其交换子的加权端点估计
基丁能虽匹配延拓法LMD端点效应处理
Playjng with ch & sh