AutoCAD提取权籍调查宗地四至的方法

2018-09-13 12:25李文林李东峰胡启亮
现代测绘 2018年4期
关键词:宗地界址方位角

李文林李东峰胡启亮

(江苏省地质勘查技术院,江苏 南京210008)

0 引 言

权籍调查中,宗地四至是对宗地相对位置关系的描述,只有保证宗地四至的准确性才能确保四至调查的准确性。若依靠手工完成宗地属性录入,工作效率低下,且错误率高[1]。用软件自动提取四至可以弥补人工的不足,但费用较高,因此自主开发的录入软件成为大家的追求目标。

自主开发不仅可以节省软件采购成本,而且符合自己的操作习惯,更能随时进行修改以适应不同需求。

在一些公开资料中不乏四至提取的实现方法,但大多是基于ArcGIS等GIS软件的,对非专业的编程人员来说,难度较大。AutoCAD作为绘图平台,使用者众多,基于此的开发却不多见。采用易于学习的二次开发工具VBA,可以实现南方CASS所成图形的宗地四至自动提取。

1 开发基础

1.1 南方CASS及VBA简介

南方CASS成图软件是在AutoCAD平台上开发的应用软件,在测绘行业数字化测图中使用广泛。AutoCAD的二次开发工具,如 VBA、LISP、Object ARX等,同样可以在CASS下使用。

VBA(Visual Basic for Application)是一种完全面向对象体系结构的编程语言,嵌入在应用程序中。它基于ActiveX Automation技术,可以同任何Automation技术的应用程序共同工作,如Microsoft Excel软件。VBA集成开发环境非常友好,具有强大的界面设计,简单易学,适合初学者使用。

选择VBA作为开发工具,不仅是因为它具有与AutoCAD共享内存空间、运行速度快等特点,更为重要得是,VBA程序不受AutoCAD版本影响,适用性较好,具有开发Microsoft Office套件的功能,交换数据方便[2]。

需要说明,AutoCAD从2010版本以后,安装包里不再集成VBA环境,使用者需要另外安装。

1.2 AutoCAD扩展属性

AutoCAD的DWG图形数据库允许用户在任何一个图元的数据记录中再加入一部分自定义信息,这就是扩展属性XDATA。XDATA数据可以是字符串、实数、整数和实体句柄等,大小不超过16 K[3]。南方CASS将地物代码等属性存储在XDATA中,通过扩展属性拓展了绘图功能。界址线扩展属性如下:

*Registered Application Name:south

*Code 1000,ASCII string:300000

*Code 1000,ASCII string:2150100026

*Code 1000,ASCII string:周志强

*Code 1000,ASCII string:251

第一行为注册的应用名“south”;第二行为CASS地物编码,这里300000是界址线的代码;第三行为宗地号“2150100026”;第四行为权利人“周志强”;第五行为地类号“251”;Code 1000表示DXF组码。

这些扩展属性中,宗地号和权利人是形成四至的重要信息。掌握了CASS扩展属性的存储格式,就可以通过编程存取感兴趣的属性值。

1.3 扩展属性存取

VBA提供了Set XData和Get XData的函数设置和返回扩展数据。通常扩展数据需要提供一个已经注册的应用程序名称作为不同程序之间的数据区分,如上文的“south”。

Get Xdata、Set Xdata函数如下:

object. Get XData App Name,XData Type,XData Value

object.Set XData XData Type,XData Value

函数当中,App Name为注册的应用名,XData-Type和XData Value是两个变体数组,用来存放DXF组码和属性信息。

1.4 VBA与Office交互

VBA与Office交互需要先在VBA环境中引用相应对象库,即在VBAIDE中打开菜单,在弹出的引用对话框的列表中查询要引用的应用程序对象库,如选择Microsoft Excel 12.0 Object Library,引用Excel2007。

再声明并新建一个EXCEL.Application对象:

Dim xl App As Excel.Application

创建或获取这个对象:

Set xl App=Get Object(,“Excel.Application”)

If Err Then

MsgBox“Excel应用程序没有运行。请启动Excel并重新运行程序。”

Exit Sub

End If

声明Excel工作簿并获取当前活动工作表:

Dim xlSheet As Worksheet

Set xlSheet=xl App.ActiveSheet

以后就可以通过程序操作工作表了,如存取单元格数据。

2 四至读取的方法

南方CASS成图软件将四至存储在界址线的扩展属性中,但没有提供自动提取并赋值的功能。四至信息需要通过编辑宗地,手工输入。

要实现四至的自动提取,就需要能搜索与本宗相邻的宗地。资料介绍的方法基本是利用GIS软件进行缓冲区分析判断是否有宗地与之相邻的,再通过计算两个宗地重心连线方位角判断邻宗方位。这就需要将原始图件转换成GIS图件。这不仅增加了作业环节,还提高了电脑的软硬件配置和对作业员技术水平的要求,相当于增加了项目成本。

AutoCAD只是一个图形编辑平台,空间分析能力不强,这是少有开发的原因之一。既然可以通过界址线的扩展属性获得宗地号和权利人信息,而相邻宗地一般会有一段界址线重合,那么通过重合的界址线和界址线的方位角,就可以发现邻宗并得出邻宗方位。也就是说,不用空间分析也可获取宗地位置关系。

编程思路如下:遍历图上所有宗地,对每一宗地遍历每段界址线,如界址线位置还存在另一条界址线,则说明这里存在邻宗,获取邻宗宗地号和权利人信息,同时计算该段界址线的方位角,根据方位角判断邻宗方位,最后将邻宗信息输出(图1)。

图1 四至输出流程

获取邻宗问题的关键是找出重合的界址线。已知AutoCAD有多种方式选择对象:点取方式、窗口方式、交叉选择等。点取一次只能选择一个对象,窗口选择的是所画矩形窗口内部的所有对象,而交叉选择能将与所画矩形框相交及包含的所有对象选中。

以一段界址线的中点为中心,构建一个微型矩形框,采用交叉选择方式选择该位置的所有线条。地物编码为界址线编码的对象个数如果大于1,说明存在重合的界址线。排除本宗界址线,剩下的则是邻宗的。

交叉选择函数如下:

object.Select acSelectionSetCrossing,Point1,Point2,Filter Type,Filter Data

Point1、Point2为构成矩形的对角点坐标点列,Filter Type和Filter Data是两个变体数组,用于存放使用的过滤器类型的DXF组码和过滤器的值。

遍历宗地的方法是先建立过滤器,将所有宗地加入选择集,然后遍历选择对象。遍历界址线是计算宗地边线相邻节点坐标的中点。

3 方位判定

南方CASS中,绘制宗地时要求按顺时针方向连接界址点,形成界址线。界址线为封闭多段线,构成宗地。VBA可以获取界址线的点列坐标,在每段界址线中点位置查找重合界址线,发现重合则计算该线段前进方向左侧垂线方向的方位角,该方向即为指向邻宗的方位角。界址线某顶点坐标为object.Coordinate(index),其中index为顶点阵列中需要查询的顶点索引。

如下所示(图2),方位角介于45°—135°之间判定为东至,135°—225°之间为南至,225°—315°之间为西至,315°—360°以及0°—45°之间为北至。

图2 方位判定

4 存在的问题

依据上述思想编制的应用程序,在多个农村土地承包经营权项目中得到较好应用,将承包地块四至等公示信息成功输出到Excel电子表格当中,但相关程序尚存在完善之处。

(1)邻宗信息在界址线重合的条件下,能够正确输出。四至为路、沟等情况的,因无重合界址线而输出为空。这类四至变化并不频繁,手工补充难度不大。

(2)隔路、埂、沟等无重合情况的邻宗可以通过调整交叉选择的微型矩形边长处理。因为这种情况较少,本文未进行实验。

(3)程序处理的是每段界址线,在界址线转折多的情况下,局部方位与整体方位不一致,需要手工处理。

(4)界址线未按顺时针绘制的四至方位会造成颠倒现象,需要通过加强图形或检查原始调查记录予以消除。

5 结 语

生产工作中,经常需要通过二次开发拓展软件功能,提高工作效率。VBA开发工具内嵌于很多软件中,很好继承了Basic和Visual Basic易学、易用的特点,通用性强,开发周期短,现阶段仍具有生命力。在AutoCAD绘图平台下用VBA开发,实现权籍调查宗地四至的自动提取,绘图同时即可完成四至输出,不需额外增加软硬件成本,能够极大提高工作效率和信息准确性,取得较好结果。

猜你喜欢
宗地界址方位角
农村不动产测量中界址点、界址线属性数据快速处理方法
考虑桥轴线方位角影响的曲线箱梁日照温差效应
CASS地籍图中界址信息批量转出方法研究
近地磁尾方位角流期间的场向电流增强
基于停车场ETC天线设备的定位算法实现
地籍调查成果在数字时代下的管理研究
无处不在的方位角
基于宗地层次的合肥市产业用地集约利用评价
在ArcMap中实现对金图建库系统中界址线属性的便捷录入
地籍宗地时空数据库中的变化检测