劉召龍,盧建青
(浙江省測(cè)繪大隊(duì),浙江 杭州 310030)
基于Visual Lisp的農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)中幾個(gè)基本功能程序的實(shí)現(xiàn)*
劉召龍,盧建青
(浙江省測(cè)繪大隊(duì),浙江 杭州 310030)
目前農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)登記頒證工作在全國(guó)范圍內(nèi)已經(jīng)大規(guī)模的開展。在確權(quán)的過程中,測(cè)繪人員常使用AutoCAD軟件繪制地塊圖,并進(jìn)行簡(jiǎn)單的預(yù)處理,最后統(tǒng)一匯交到農(nóng)業(yè)部的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)中。針對(duì)該工作的特點(diǎn),利用Visual Lisp語(yǔ)言開發(fā)了一些小程序,應(yīng)用于農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)工作中。
Visual Lisp;農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán);AutoCAD
農(nóng)村土地承包經(jīng)營(yíng)權(quán)(簡(jiǎn)稱農(nóng)經(jīng)權(quán))確權(quán)登記頒證是保護(hù)農(nóng)村土地權(quán)益,促進(jìn)土地流轉(zhuǎn)、發(fā)展規(guī)模經(jīng)營(yíng)和完善農(nóng)村治理體系的重要基礎(chǔ)性工作[1]。在這項(xiàng)工作中,需要在AutoCAD中進(jìn)行數(shù)據(jù)的處理,而AutoLISP語(yǔ)言是嵌套于AutoCAD內(nèi)部,將LISP語(yǔ)言和AutoCAD有機(jī)結(jié)合的產(chǎn)物[2]。使用AutoLISP幾乎可以直接調(diào)用全部的AutoCAD命令。而Visual LISP不僅繼承了AutoLISP程序設(shè)計(jì)的優(yōu)點(diǎn),而且還對(duì)AutoLISP語(yǔ)言的功能進(jìn)行了拓展,所以使用Visual LISP 進(jìn)行程序設(shè)計(jì)可以提高不同版本AutoCAD的兼容性、通用性。本文主要研究在AutoCAD平臺(tái)上利用Visual LISP 進(jìn)行農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)登記頒證數(shù)據(jù)處理的幾個(gè)基本功能程序的設(shè)計(jì)及實(shí)現(xiàn)。
在AutoCAD的菜單欄上,新建一個(gè)工具欄。工具欄界面,如圖1所示。
圖1 農(nóng)經(jīng)權(quán)工具菜單欄Fig.1 Tool menu about rural land contractual management right
該工具欄下共有:標(biāo)注實(shí)測(cè)面積、檢查、快速繪圖、面積分割、標(biāo)注界址線類別、導(dǎo)入地塊屬性信息等工具。其中,檢查工具功能又包括面積過大檢查功能和重疊檢查功能,標(biāo)注界址線類型工具的功能分為單點(diǎn)標(biāo)注和批量標(biāo)注。程序功能設(shè)計(jì),如圖2所示。
2.1 標(biāo)注實(shí)測(cè)面積
標(biāo)注實(shí)測(cè)面積目的主要是方便瀏覽每一個(gè)地塊的實(shí)測(cè)面積。標(biāo)注實(shí)測(cè)面積關(guān)鍵程序代碼如下:
(command "area" "o" DK);;計(jì)算多邊形DK的面積
(setq MianJi(getvar "area"))
(setq MianJiMu(/ MianJi 666.667));;平方米轉(zhuǎn)換成畝
(setq mjj(rtos mj 2));;取兩位有效數(shù)字
(command "text" "s" "HZ" "j" "mc" zhixin 1.5 0 mjj "");;把面積標(biāo)注在地塊的質(zhì)心處
圖2 農(nóng)經(jīng)權(quán)功能設(shè)計(jì)圖Fig.2 Function design of rural land contractual management right
2.2 檢查
檢查功能包括面積過大檢查和重疊檢查。面積過大檢查的主要目的是檢查合同面積和實(shí)測(cè)面積的差值,如果超過規(guī)定值,就會(huì)被篩選出來,標(biāo)記出不同的顏色;重疊檢查是檢查地塊之間的重疊,如果有地塊重疊的情況,將會(huì)被篩選出來,標(biāo)記出不同的顏色。
1)檢查面積過大的關(guān)鍵程序代碼為:
(setq ji(ssget "_CP" pts ' ((0."*text")(8."合同面積"))));;獲取標(biāo)注在地塊中的合同面積
2)重疊檢查的設(shè)計(jì)思路為:把地塊向質(zhì)心方向縮放0.001 m的距離,并以縮放后的地塊作為選擇范圍,然后選擇地塊對(duì)象,若選擇對(duì)象為nil,則說明沒有地塊重疊,否則說明地塊有重疊。程序關(guān)鍵代碼為:
(setvar "OSMODE" 0);;關(guān)閉對(duì)象捕捉
(vla-offset(vlax-ename->vla-object namemjj)0.001)
2.3 快速繪圖
快速繪圖功能主要解決當(dāng)相鄰地塊公共節(jié)點(diǎn)較多時(shí),不需要一一繪制的情況。如圖3(a)所示,繪制完地塊1,繪制地塊2時(shí)不需要將與地塊1公共的節(jié)點(diǎn)全部繪制出,只需要繪制pt1點(diǎn)和pt2點(diǎn),中間的點(diǎn)可以省略,當(dāng)繪制完成后,運(yùn)行“快速繪圖”命令,則程序就會(huì)把地塊1和地塊2重疊的部分切除,最終效果如圖3(b)所示。
圖3 相鄰地塊重疊節(jié)點(diǎn)較多時(shí)的處理Fig.3 The case of more overlapping nodes in adjacent land parcels
快速繪圖的的設(shè)計(jì)思路為:使用REGION命令,把多線段繪制的地塊轉(zhuǎn)換成面域,然后使用SUBTRACT命令,進(jìn)行面域相減,最后使用通過BOUNDARY命令,從相減后的面域中生成新的多邊形面,程序關(guān)鍵代碼為:
(setq DK(entlast));;獲得圖形對(duì)象
(command "region" DK "");;把獲得圖形對(duì)象轉(zhuǎn)換成面域
(setq en(entlast));;獲得面域?qū)ο?/p>
(command "subtract" en);;面域相減
(command "BOUNDARY" pt1 "");;根據(jù)新生成的面域,創(chuàng)建多邊形的面,其中,pt1為面域的內(nèi)部點(diǎn)
2.4 面積分割
面積分割主要針對(duì)原有的土地界線因流轉(zhuǎn)等原因被打破,不能測(cè)繪出原有界線時(shí),只能按照村里臺(tái)賬面積比例來分割該地塊的實(shí)測(cè)面積的情況。打開“分割”工具,先繪制分割線,然后繪制分割的方向線(如圖4所示),最后輸入分割參數(shù)。如本例中,地塊的實(shí)測(cè)面積為1.852畝,需要分割成3個(gè)地塊,而每個(gè)地塊的合同面積分別是:0.5畝、0.7畝、0.6畝。分割參數(shù)填寫,如圖5所示。
圖4 分割步驟Fig.4 The splitting step
圖5 分割參數(shù)填寫Fig.5 The input of splitting parameters
最后得到分割后的地塊,如圖6所示。
圖6 分割完成的地塊Fig.6 Land parcels after splitting
2.5 標(biāo)注界址線類型
界址線類別主要包括:田埂、溝渠、道路、行樹、圍墻、墻壁、柵欄、兩點(diǎn)連線、其他界線[3],這些界址線類別對(duì)應(yīng)的代碼分別01、02、03、04、05、06、07、08、99,界址線位置的內(nèi)、中、外分別用01、02、03表示[4],例如0301代表“道路內(nèi)”
提高界址線標(biāo)注的效率本質(zhì)在于兩方面:一方面是在不同的界址線類別之間切換要方便,另一方面是對(duì)于相同的界址線類別能夠批量標(biāo)注。本程序的標(biāo)注界址線類型主要包括兩種標(biāo)注方式:?jiǎn)吸c(diǎn)標(biāo)注和批量標(biāo)注。單點(diǎn)標(biāo)注解決界址線類別之間切換效率的問題,主要使用在地塊界址線類別較復(fù)雜的地塊區(qū)域;批量標(biāo)注解決相同的界址線類別能夠批量標(biāo)注的問題,主要用于大范圍、同類型的界址線標(biāo)注的地塊區(qū)域。
1)單點(diǎn)標(biāo)注的設(shè)計(jì)思路是:使用grread函數(shù)不斷獲取用戶鍵盤和鼠標(biāo)輸入的內(nèi)容,如果用戶鼠標(biāo)單擊位置,則把界址線類型插入到指定位置,如果用戶鍵盤輸入代碼,例如31(道路內(nèi)),則界址線類型立刻被切換。具體程序代碼為:
(while loop (setq code(grread T 8));;獲取輸入的內(nèi)容
(setq pt(getpoint " 選擇插入位置: "))
(if(/= pt nil)
*** ;;當(dāng)輸入的內(nèi)容是坐標(biāo)時(shí),把類型插入指定坐標(biāo)處
)
(progn
(setq str(getstring "選擇類型: "));;當(dāng)輸入的內(nèi)容不是坐標(biāo)時(shí),通過代碼輸入類型
***
))
2)批量標(biāo)注的設(shè)計(jì)思路是:先把需要批量標(biāo)注界址線類別的地塊用范圍線圈出來,然后通過ssget函數(shù)中的CP模式選擇
地塊,并逐一遍歷地塊對(duì)象,獲取地塊各節(jié)點(diǎn)坐標(biāo),計(jì)算地塊每邊的中點(diǎn)坐標(biāo),最后把界址線類別標(biāo)注在每一條邊的中點(diǎn)上。
2.6 導(dǎo)入地塊屬性信息
導(dǎo)入地塊屬性信息是以外業(yè)編碼為關(guān)鍵字,把以.txt格式存儲(chǔ)的地塊屬性信息(承包方名稱、合同面積)導(dǎo)入到AutoCAD的地塊中,具體程序代碼為:
(setq getfilen(getfiled "選擇文件" "" "txt" 8));;彈出對(duì)話框打開文件
(setq getfileo(open getfilen "r"))
(setq c(ssget"X"'((0."*TEXT")(8. "外業(yè)編號(hào)"))));;讀取cad中的外業(yè)編號(hào)
(while(setq data(read-line getfileo));;讀取.txt文件的信息
(if(and(equal MyText temptText)(/= MyText ""));;比較字符串
))
(close getfileo)
該程序已經(jīng)在浙江省溫嶺市、金華市婺城區(qū)、德清縣的農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)工作中得到了實(shí)際運(yùn)用。從實(shí)際應(yīng)用來看,利用該程序在處理承包地塊及地塊屬性方面可以提高效率,但是有些功能仍需要完善,如在分割地塊時(shí),如果地塊的形狀是凹多邊形,則有可能出現(xiàn)分割失敗,對(duì)這一問題,還有待研究解決。
[1] 李偉方,裴志遠(yuǎn).農(nóng)村土地承包經(jīng)營(yíng)權(quán)登記頒證技術(shù)教程[M].北京:中國(guó)農(nóng)業(yè)出版社,2015:1-2.
[2] 周樂來,馬婧.AutoCAD 2008 Visual Lisp 二次開發(fā)入門到精通[M].北京:機(jī)械工業(yè)出版社,2008:1-3.
[3] 中華人民共和國(guó)農(nóng)業(yè)部.NY/T 2537—2014農(nóng)村土地承包經(jīng)營(yíng)權(quán)調(diào)查規(guī)程[S].北京:中國(guó)農(nóng)業(yè)出版社,2014.
[4] 中華人民共和國(guó)農(nóng)業(yè)部.NY/T 2539—2014農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)登記數(shù)據(jù)庫(kù)規(guī)范[S].北京:中國(guó)農(nóng)業(yè)出版社,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~),男,安徽淮北人,碩士,助理工程師,主要研究方向:測(cè)繪工程。