基于Visual Lisp的农村土地承包经营权确权中几个基本功能程序的实现*
2017-06-28刘召龙卢建青
刘召龙,卢建青
(浙江省测绘大队,浙江 杭州 310030)
基于Visual Lisp的农村土地承包经营权确权中几个基本功能程序的实现*
刘召龙,卢建青
(浙江省测绘大队,浙江 杭州 310030)
目前农村土地承包经营权确权登记颁证工作在全国范围内已经大规模的开展。在确权的过程中,测绘人员常使用AutoCAD软件绘制地块图,并进行简单的预处理,最后统一汇交到农业部的标准数据库中。针对该工作的特点,利用Visual Lisp语言开发了一些小程序,应用于农村土地承包经营权确权工作中。
Visual Lisp;农村土地承包经营权确权;AutoCAD
0 引言
农村土地承包经营权(简称农经权)确权登记颁证是保护农村土地权益,促进土地流转、发展规模经营和完善农村治理体系的重要基础性工作[1]。在这项工作中,需要在AutoCAD中进行数据的处理,而AutoLISP语言是嵌套于AutoCAD内部,将LISP语言和AutoCAD有机结合的产物[2]。使用AutoLISP几乎可以直接调用全部的AutoCAD命令。而Visual LISP不仅继承了AutoLISP程序设计的优点,而且还对AutoLISP语言的功能进行了拓展,所以使用Visual LISP 进行程序设计可以提高不同版本AutoCAD的兼容性、通用性。本文主要研究在AutoCAD平台上利用Visual LISP 进行农村土地承包经营权确权登记颁证数据处理的几个基本功能程序的设计及实现。
1 程序功能设计
在AutoCAD的菜单栏上,新建一个工具栏。工具栏界面,如图1所示。
图1 农经权工具菜单栏Fig.1 Tool menu about rural land contractual management right
该工具栏下共有:标注实测面积、检查、快速绘图、面积分割、标注界址线类别、导入地块属性信息等工具。其中,检查工具功能又包括面积过大检查功能和重叠检查功能,标注界址线类型工具的功能分为单点标注和批量标注。程序功能设计,如图2所示。
2 程序功能实现
2.1 标注实测面积
标注实测面积目的主要是方便浏览每一个地块的实测面积。标注实测面积关键程序代码如下:
(command "area" "o" DK);;计算多边形DK的面积
(setq MianJi(getvar "area"))
(setq MianJiMu(/ MianJi 666.667));;平方米转换成亩
(setq mjj(rtos mj 2));;取两位有效数字
(command "text" "s" "HZ" "j" "mc" zhixin 1.5 0 mjj "");;把面积标注在地块的质心处
图2 农经权功能设计图Fig.2 Function design of rural land contractual management right
2.2 检查
检查功能包括面积过大检查和重叠检查。面积过大检查的主要目的是检查合同面积和实测面积的差值,如果超过规定值,就会被筛选出来,标记出不同的颜色;重叠检查是检查地块之间的重叠,如果有地块重叠的情况,将会被筛选出来,标记出不同的颜色。
1)检查面积过大的关键程序代码为:
(setq ji(ssget "_CP" pts ' ((0."*text")(8."合同面积"))));;获取标注在地块中的合同面积
2)重叠检查的设计思路为:把地块向质心方向缩放0.001 m的距离,并以缩放后的地块作为选择范围,然后选择地块对象,若选择对象为nil,则说明没有地块重叠,否则说明地块有重叠。程序关键代码为:
(setvar "OSMODE" 0);;关闭对象捕捉
(vla-offset(vlax-ename->vla-object namemjj)0.001)
2.3 快速绘图
快速绘图功能主要解决当相邻地块公共节点较多时,不需要一一绘制的情况。如图3(a)所示,绘制完地块1,绘制地块2时不需要将与地块1公共的节点全部绘制出,只需要绘制pt1点和pt2点,中间的点可以省略,当绘制完成后,运行“快速绘图”命令,则程序就会把地块1和地块2重叠的部分切除,最终效果如图3(b)所示。
图3 相邻地块重叠节点较多时的处理Fig.3 The case of more overlapping nodes in adjacent land parcels
快速绘图的的设计思路为:使用REGION命令,把多线段绘制的地块转换成面域,然后使用SUBTRACT命令,进行面域相减,最后使用通过BOUNDARY命令,从相减后的面域中生成新的多边形面,程序关键代码为:
(setq DK(entlast));;获得图形对象
(command "region" DK "");;把获得图形对象转换成面域
(setq en(entlast));;获得面域对象
(command "subtract" en);;面域相减
(command "BOUNDARY" pt1 "");;根据新生成的面域,创建多边形的面,其中,pt1为面域的内部点
2.4 面积分割
面积分割主要针对原有的土地界线因流转等原因被打破,不能测绘出原有界线时,只能按照村里台账面积比例来分割该地块的实测面积的情况。打开“分割”工具,先绘制分割线,然后绘制分割的方向线(如图4所示),最后输入分割参数。如本例中,地块的实测面积为1.852亩,需要分割成3个地块,而每个地块的合同面积分别是:0.5亩、0.7亩、0.6亩。分割参数填写,如图5所示。
图4 分割步骤Fig.4 The splitting step
图5 分割参数填写Fig.5 The input of splitting parameters
最后得到分割后的地块,如图6所示。
图6 分割完成的地块Fig.6 Land parcels after splitting
2.5 标注界址线类型
界址线类别主要包括:田埂、沟渠、道路、行树、围墙、墙壁、栅栏、两点连线、其他界线[3],这些界址线类别对应的代码分别01、02、03、04、05、06、07、08、99,界址线位置的内、中、外分别用01、02、03表示[4],例如0301代表“道路内”
提高界址线标注的效率本质在于两方面:一方面是在不同的界址线类别之间切换要方便,另一方面是对于相同的界址线类别能够批量标注。本程序的标注界址线类型主要包括两种标注方式:单点标注和批量标注。单点标注解决界址线类别之间切换效率的问题,主要使用在地块界址线类别较复杂的地块区域;批量标注解决相同的界址线类别能够批量标注的问题,主要用于大范围、同类型的界址线标注的地块区域。
1)单点标注的设计思路是:使用grread函数不断获取用户键盘和鼠标输入的内容,如果用户鼠标单击位置,则把界址线类型插入到指定位置,如果用户键盘输入代码,例如31(道路内),则界址线类型立刻被切换。具体程序代码为:
(while loop (setq code(grread T 8));;获取输入的内容
(setq pt(getpoint " 选择插入位置: "))
(if(/= pt nil)
*** ;;当输入的内容是坐标时,把类型插入指定坐标处
)
(progn
(setq str(getstring "选择类型: "));;当输入的内容不是坐标时,通过代码输入类型
***
))
2)批量标注的设计思路是:先把需要批量标注界址线类别的地块用范围线圈出来,然后通过ssget函数中的CP模式选择
地块,并逐一遍历地块对象,获取地块各节点坐标,计算地块每边的中点坐标,最后把界址线类别标注在每一条边的中点上。
2.6 导入地块属性信息
导入地块属性信息是以外业编码为关键字,把以.txt格式存储的地块属性信息(承包方名称、合同面积)导入到AutoCAD的地块中,具体程序代码为:
(setq getfilen(getfiled "选择文件" "" "txt" 8));;弹出对话框打开文件
(setq getfileo(open getfilen "r"))
(setq c(ssget"X"'((0."*TEXT")(8. "外业编号"))));;读取cad中的外业编号
(while(setq data(read-line getfileo));;读取.txt文件的信息
(if(and(equal MyText temptText)(/= MyText ""));;比较字符串
))
(close getfileo)
3 结束语
该程序已经在浙江省温岭市、金华市婺城区、德清县的农村土地承包经营权确权工作中得到了实际运用。从实际应用来看,利用该程序在处理承包地块及地块属性方面可以提高效率,但是有些功能仍需要完善,如在分割地块时,如果地块的形状是凹多边形,则有可能出现分割失败,对这一问题,还有待研究解决。
[1] 李伟方,裴志远.农村土地承包经营权登记颁证技术教程[M].北京:中国农业出版社,2015:1-2.
[2] 周乐来,马婧.AutoCAD 2008 Visual Lisp 二次开发入门到精通[M].北京:机械工业出版社,2008:1-3.
[3] 中华人民共和国农业部.NY/T 2537—2014农村土地承包经营权调查规程[S].北京:中国农业出版社,2014.
[4] 中华人民共和国农业部.NY/T 2539—2014农村土地承包经营权确权登记数据库规范[S].北京:中国农业出版社,2014.
Implementation of Some Programs in Confirmation of Rural LandContractual Management Right Based on Visual Lisp
LIU Zhao-long,LU Jian-qing
(ZhejiangBrigadeofSurveyingandMapping,HangzhouZhejiang310030,China)
The work of confirmation of rural land contractual management right has been carried out on a large scale in China.In this process surveyors need to draw the parcel map with AutoCAD.Then after making a simple pretreatment,the obtained data is sent to the standard database of Ministry of Agriculture.Based on the characteristics of the work,the paper developed some small programs by using Visual Lisp and these programs have been applied in this work.
Visual Lisp;rural land contractual management right;AutoCAD
2017-02-25
P 208;P 279
B
1007-9394(2017)02-0028-03
刘召龙(1988~),男,安徽淮北人,硕士,助理工程师,主要研究方向:测绘工程。