利用AutoCAD二次开发实现地形图高程点与等高线错误自动查找
来源:《测绘通报》2017年第5期
作者:刘洪、黄军胜
摘要:论述了数字地形图中产生高程点与等高线错误的可能原因,分析了高程点和等高线在地形图中的空间位置关系及作为判断条件的数学关系,论述了解决问题的办法和判断规则,展示了通过编制计算机程序实现找出其错误的核心代码。此研究对于减轻质检人员在检查数字地形图的高程点与等高线错误时的劳动强度和提高工作效率很有意义。
关键词:数字地形图;等高线;高程点;点线不符;C#
因为科学技术的进步,在现阶段地形图的生产能力有了很大的提高,但由于人工智能仍不够发达且很多环节仍需要人工干预,导致生产出的地形图仍存在着高程点与等高线的错误。 对于质检人员而言,如果仅凭借着眼睛,要找出这些错误以提高地形图的质量水平是非常困难的,劳动强度大不说,而且效率低下、极易出现遗漏。因此,找到一种高效率的办法解决这个问题就显得很有必要,本文正是据此分析产生错误的原因,找到解决的办法,再利用C#+ObjectARX 对AutoCAD 二次开发编程实现查找数字地形图中高程点与等高线的错误。
1、错误原因分析
1.1 高程点错误
目前大比例尺数字地形图主要有3 种生产方式:一是老图矢量数字化,在识别老图中的高程注记点时,有些不能正确识别,需要人工修改,容易输入错误;二是利用航片经畸变纠正等工序生成正射影像得到数字线划图并在立体模型中取得高程属性值,取得高程值时读取错误,与实际绘制的等高线形成矛盾;三是全野外数据采集内业编辑形成数字地形图,其注记点的高程直接由数据文件读取生成,这种直接注记高程点的方式不易出现错误,但作业员在调整自动绘制的等高线时,可能为了圆滑美观而人为调整等高线上的节点位置,从而导致高程注记点的高程数值与等高线形成矛盾。
由以上方式生产得到的数字地形图,都有可能因图面高程注记点的数量达不到规范要求而人工加注高程点,而人工加点由于作业人员的疏忽,判断等高线错误导致加注高程点错误,这是最易产生错误的原因。
有时,作业员在发现高程注记点的高程数值与等高线相互矛盾时,为图方便,仅将其注记数值修改成正确数值而没有对高程点特性的坐标Z 值进行相应修改,从而导致错误。
1.2 等高线错误
在调整不合理等高线时,作业员需删除计算机绘制的部分不合理等高线,另行绘制补充,由于粗心,忘记修改等高线的高程属性值,使其值为零或其他错误值,导致新绘制的等高线与已绘制好的等高线及高程点相互矛盾,或者又由于图面元素太密集而在浏览时误删了某一条正确的等高线。
2、解决办法探究
2.1 错误归类
根据以上原因分析,可以看出数字地形图中高程点与等高线产生错误的原因可以归为如下4 类:即点的高程特性坐标Z 值与点的高程注记数值不符;等高线正确,但高程点不正确;高程点正确,但等高线不正确;等高线与高程点皆不正确。
2.2 解决办法
2.2.1 点的高程特性坐标Z 值与点的高程注记值不符
对数字地形图的∗.dwg 格式文件进行遍历ꎬ在高程点图层中找到全部高程点,读取其高程特性坐标Z 值和高程注记数值(即高程点特性中的height属性值),并将两者比较,若两不相等,即为作业员修改过高程点的高程注记数值,用圆圈将其标示出来。
如图1 所示,高程点的高程特性坐标Z 值原为“61.355 0”,点的高程注记数值原为“61.36”,被作业员人为修改为“59.36”,导致两者不符,这在入库时或许会引起新的错误。
图1 高程点自身属性数据矛盾
2.2.2 等高线正确,但高程点不正确
如果等高线与高程点都是正确的,则高程点的高程注记值与其最近的一根等高线的高程值之差应该在一个等高距之内。
在AutoCAD 中,每一个图元都对应着一个唯一的ID,可以从高程点开始,人为构造一条射线,与等高线相交ꎬ提取这些交点和与之对应的等高线ID,然后按高程点与这些交点的远近距离进行排序,由此可按顺序逐条找到高程点周边的不同等高线。图2 所示为构造线与等高线相交的可能顺序。
图2 排序前等高线的顺序
相交后,即可获得各交点的坐标,据此可计算出各相交点与此高程点的距离,根据其距离值的大小,再次按近远顺序排列,图3 所示,为构造线与各等高线相交点距离的近远顺序。
图3 排序后等高线的顺序
经过这样排序之后,便可按顺序找到相应的等高线,读取其高程值。
假设高程点的高程值为HA ,若|HA-H1|>等高距,则此高程点错误,以圆圈标记之,如图4 所示(横线为构造线,处理后程序自动删去)。
图4 高程点错误示例图1
若|HA -H1| <等高距,同时HA -H1 >0 且H1 -H2 <0 或HA -H1 <0 且H1 -H2 >0,则此高程点错误,如图5所示。
图5 高程点错误示例图2
若|HA -H1| <等高距,同时H1 = H2,则需要H2和H3 按上一条规则判断,以确定H1 和H2 之间是鞍部还是山谷、山峰、鞍部、盆地或山脊,目的也是判断出高程注记点A 沿构造线方向地形高低的走势,从而判断A 点高程是否正确。
如果
如果
如图6 所示,HA 点所在位置较为直观地反映了|HA -H1| <等高距,同时H1 = H2,如果H2< H3,即H1<H3,HA 必大于H1 这一规则(此处A 点高程值错误)。
图6 高程点错误示例图3
2.2.3 高程点正确ꎬ但等高线不正确
(1) 等高线高程值为零这种情况存在于沿海一带及海拔位于零左右的地方,在其他地方出现便是错误无疑, 作业员在调整修改等高线时,对部分不合理的等高线进行了删除操作,然后由手工绘制补充,而未对其赋予正确的高程值可能会出现零或输入了其他错误值, 这样的等高线,在图面上并不能看出不妥之处,但在建立立体模型生成DEM 等产品的过程中,必定会出现与实地不符的形状,从而导致错误,严重影响产品质量。
0 米高程线在其线头位置以圆圈标记,并注明此线高程为0,
(2) 假设A 点沿构造线方向相交有3 条以上多条等高线且等高线的高程值均不相等,
如果|H3-H1 |=等高距且|H2 -H1| ≠等高距,则临近高程点A 的第1 条等高线错误,在其交点位置以圆圈标记。
如果|H3-H1 | = 2 倍等高距或者零且|H2 -H1| ≠等高距,则临近高程点A 的第2 条等高线错误,在其交点位置以圆圈标记。
如果|H2 -H1| =等高距且|H3-H2 | ≠等高距,则临近高程点A 的第3 条等高线错误,在其交点位置以圆圈标记。
以此类推,可以判断出第4 条、第5 条甚至更多的等高线, 不过,此地形图如果是按规范展绘高程点,其数量及位置涵盖到了每个小区域,则不必每个点都判断多条等高线,根据经验,一般判断3 条就够了。
图7 较为直观地反映了|HA -H1| <等高距,同时H1- H2 >等高距,则此处等高线2 必定错误这一规则(此处为等高线2 错误)。
图7 等高线错误示例图1
图8 较为直观地反映了|H3 -H1| = 2 倍等高距或零且|H2 -H1| ≠等高距,则临近高程点A 的第2 条等高线错误这一规则(此处为第2 条等高线错误)。
图8 等高线错误示例图2
2.2.4 等高线与高程点皆不正确
这种情况比较少,但如果采用以上规则进行判断,则可以直接得出结论,无论是高程点还是等高线都将被圆圈标记,以示错误,需要人工干预,理清缘由。
2.2.5 特殊情况
(1) 若高程点A 已在图边,则向图边构造线是无法判断此高程点是否正确的,这种情况下,需要向另一方向构造线来与等高线相交,再用上述规则进行判断。
如图9 所示,若右侧为图框,A 点位于图边,向右的构造线已没有等高线与其相交,这时,则需要向另一方向构造线段或射线来与等高线相交,如图10所示。
图9 构造线与等高线相交示例图1
图10 构造线与等高线相交示例图2
(2) 若高程点A 一侧只有一根等高线,则仅能判断|HA -H1| 是否小于等高距,却不能确定高程点或等高线是否正确,这时ꎬ也需要根据上一条规则向另一方向构造线来与等高线相交,再进行判断。
(3) 若高程点A 一侧只有两根等高线,如果两根等高线高程不同,则可用上述规则判断点是否错误或等高线是否错误,但如果两根等高线高程相同,则不能确定高程点或等高线是否正确,这时,也需要向另一方向构造线来与等高线相交,再进行判断。
(4) 若高程点A 一侧相交的第一条线为田埂线或陡坎(坡、崖)线,由于田的另一侧地形与此高程点无太大联系且同一条坎(坡、崖)的各点高度绝大部分都不相同,因此无法判断,需要向另一方向构造线来与等高线相交,再进行判断, 因本程序的主要功能是查找高程点与相临等高线的错误,如若点的各个方向的第一条交线都为田埂线或陡坎(坡、崖)线(如高程点在梯田中间),则不再对此点判断。
3、编程实现
3.1 编程环境配置
操作系统: Microsoft Windows 10 中文旗舰版64位操作系统,硬件开发环境:联想笔记本昭阳E49A。
软件开发环境:Microsoft Visual Studio.NET 2008+ObjectARX 2010。
软件运行环境:AutoCAD 2010。
3.2 编程核心算法
选择出数字地形图中的田埂线和陡坎(坡、崖)线及等高线,构建选择集,遍历数字地形图中的所有高程点,将高程点逐个向一侧构造线与临近的田埂线或陡坎(坡、崖)线或等高线相交,剔除田埂线和陡坎(坡、崖)线,比较高程点注记与Z 值,高程点注记与邻近等高线的高程值,以及临近几条等高线间的高程值,然后把错误的高程点在高程点位置用圆圈标记出来,把错误的等高线在等高线的交点处用另一半径圆圈标记出来, 部分核心代码如下:
4、验证效果
图11 所示为查找程序运行的开始界面,此时可在对话框中输入当前数字地形图的等高距,其默认值为1 m,使用时可根据实际情况填写。
图11 程序运行开始界面
图12 所示为查找程序运行的结束界面ꎬ点击确定后即显示检查结果。
图12 程序运行结束确认界面
图13 所示为程序运行后结果显示。
图13 错误查找结果
5、结 语
经过以上论述过程可以看出,本文的研究结果是正确的,可以利用前述判断规则编制的程序来完成数字地形图中高程点与等高线的错误自动查找,据此改正即可提高数字地形图的质量,可以明显减轻质检人员在检查数字地形图的高程点与等高线错误时的劳动强度,提高工作效率,解决了质检人员人工查找点线矛盾的难题。
推荐阅读
---------------- 推 广 ---------------