徐冬宝,张 蒙 ,李先林
(1.苏州市测绘院有限责任公司,江苏 苏州 215000; 2.宿迁市科技局,江苏 宿迁 223800)
基于AutoCAD的电子地图在各个行业的多个领域得到广泛应用,并逐步取代了传统的纸质地图。其中,国土资源管理的土地利用现状分析作为土地利用总体规划的基础[1],其成果图一般采用DWG或者DXF格式文件储存。图斑作为土地利用规划成果图中最基本单位,一般以闭合的多段线来表示,而在传统矢量化中往往会出现图斑边界不闭合、折返及自相交等情况,影响到图斑的准确性。其准确度又导致图斑拓扑关系及图斑面积统计的错误,关系到土地利用规划能否顺利进行。所以,在影响图斑拓扑关系的准确构建及图斑面积的计算与统计的诸多因素中,图斑作为最基本的面状要素在反映土地地类要素的分布特征中有着重要的意义[2],其边界数据准确与否无疑是最重要的。
本文从分析图斑边界的异常情况出发研究了基于C++及AutoCAD二次开发技术的自动校正异常的图斑边界算法,达到提高工作效率及保证数据精确度的目的。
ObjectARX是继AutoLISP及ADS之后的第三代AutoCAD二次开发语言之一,同代的Visual AutoLISP作为AutoLISP的换代产品同样采用了ObjectARX平台开发。VBA技术对于开发小规模的应用程序是比较好的选择,而ObjectARX以Visual C++语言为基础的面向对象的开发环境和应用程序接口,从运行速度、运行效率及稳定性来看,远远优于其他开发语言[3]。其本质为Windows动态链接库(dll)程序[4],与常规的动态链接库编程相同,可在AutoCAD程序调用时被加载,且与AutoCAD应用程序自身的代码相互独立。所不同的是,ObjectARX是在C++语言的基础上规定了独自的语言,是专门针对于AutoCAD的二次开发,因此在创建ARX程序时应进行一些相应的设置[5]。
在AutoCAD系统中,对图斑边界的检测与校正等操作实质上是对多线段的操作,也就是对AcDb数据类库中的AcDbPolyline的操作[6]。因此其异常情况通常有以下3种:①多线段不闭合;②多线段出现折返;③多线段自相交。
图1 多边形折返或自相交示意图
本文主要研究多段线折返及自相交的检测与校正方法。如图1中所示的a、b、c 3幅图是多段线折返的主要情况;d、e、f 3幅是多段线自相交的主要情况。
其中,a为返折情况,即多段线在折返点处沿原多段线折回一段后又折回并继续延伸的一种情况;b为单重旁折情况,即多段线的折返点处折向一边后折回并继续延伸的一种情况;c为多重旁折情况,即多段线在旁折处多次旁折的情况; d、e为多段线一般自相交情况;f为多段线折返与自相交嵌套的情况。另外,还有多重返折及返折与旁折嵌套出现的情况。
根据图1中所示的多段线折返的特点,本文主要用顺序重合点折返检测的方法对多线段进行检测并校正,步骤如下:
1)调用添加选择集函数acedSSGet()将待检测多段线ID放入一个待检测序列中。
2)遍历待检测序列,调用函数acedOpenObject()以写的方式打开每条多段线。
3)遍历多段线顶点,以每个顶点为基点,并调用函数acedDistance()比较该基点与其后继的每个顶点的距离,判断是否有点与该基点重合;如果重合,转4),否则基点后移并重复3),直到循环结束。
4)判断该重合点为“继点”(即基点相邻的后继点)或是“跳点”(与基点不相邻的后继点);若为继点则进行单纯的重合点删除,否则转5)。
5)沿跳点折返并判断原基点的继点与此跳点的前趋点是否重合;若依然重合,则说明从基点至跳点处有可能为折返的一段多段线,因此,将此段线段裁剪后形成新的多段线并加入待检测序列;若原基点的继点与跳点的前趋点不重合,则为如图1e所示自相交的一种情况。对于此种情况,可将闭合部分的多段线裁剪形成新的多段线。
需要说明的是,因为跳点是顺序查找到的第一个与基点重合的点,所以跳点的前趋点不会与跳点重合,且基点的继点也不会与基点重点,所以上述的折返判断是可靠的。
根据图1所示的多段线自相交情况,通过顺序检测多段线的每段线段与剩余的线段是否有交点而进行判断;若判断出有交点,则计算交点,且分别将交点插入相交的线段中,于是自相交情况便统一成为图1e所示的特殊的自相交情况。
由于两种情况最终在多段线折返检测算法中都能得到处理,尤其如图1f所示的情况需要同时全用两种检测方法,因此,将两种情况合一,对从待检测的序列中顺序取出的多段线先进行自相交情况检测并作出预处理,然后转入折返情况的检测并作出最终处理。上述算法的具体流程如图2所示。
经本文提出的算法校正后的图斑有可能出现图斑拓扑不严格的情况,可采用文献[7]中土地利用利用数据综合中图斑拓扑关系的创建和一致性维护算法加以解决。
将上文所述的算法生成的ARX程序加载到AutoCAD系统中,然后对某土地利用现状图的图斑进行异常检测与校正实验。
实验结果如图3、图4所示。其中,图3为校正之前的图斑数据及对应图斑拓扑充填结果,图斑号620的图斑在箭头所示位置出现自相交的情况,且对应的拓扑充填图中也出现了充填不全的情况。图4为对图斑边界进行校正之后的图斑数据及其生成的拓扑充填图,由结果可以看出上述情况得到了很好的解决。
图3 校正前图斑情况
图4 校正后图斑情况
鉴于图斑拓扑关系与图斑面积的准确统计对土地利用规划的重要性,本文对图斑边界的异常情况作了深入研究,并提出了相应的异常检测与校正算法。采用上述算法,应用Visual C++结合ObjectArx技术在CAD系统中实现了图斑边界异常及自动检校功能,并成功应用于多个土地利用现状分析的项目中。由此可见,本文所提出的算法对于提高土地利用规划的科学性具有很好的促进作用。
[1]TD/T 1016-2007.土地利用数据库标准[S].
[2]邹胜武,邹时林,李大军,等.土地利用图缩编中小图斑综合方法的改进[J].地理空间信息,2013,11(2):138-140
[3]李长勋.AutoCAD ObjectArx程序开发技术[M].北京:国防工业出版社,2005
[4]刘良华,朱东海.AutoCAD 2000 ARX开发技术[M].北京:清华大学出版社,2000
[5]刘同成,林愉.基于ObjectARX的AutoCAD二次开发及应用实例[J].自动化技术与应用,2006(5):35-37
[6]傅强,焦建民.基于ObjectARX的AutoCAD二次开发与应用[J].信息技术,2006,35(4):103-105
[7]陈先伟,郭仁忠,闫浩文.土地利用数据库综合中图斑拓扑关系的创建和一致性维护[J].武汉大学学报:信息科学版,2005(4):370-373