摘 要:宅基地基本信息庫的建設(shè)是項(xiàng)耗費(fèi)時間的繁復(fù)工作,為了提高宅基地基本信息庫建設(shè)的效率并保證基礎(chǔ)數(shù)據(jù)的準(zhǔn)確性,通過應(yīng)用Vlisp計(jì)算機(jī)程序語言對AutoCAD軟件的二次開發(fā),編譯了從宅基地?cái)?shù)字化地籍圖中提取宗地基本信息數(shù)據(jù)的應(yīng)用與AutoCAD軟件程序命令。
關(guān)鍵詞:宅基地;地籍圖;Vlisp;AutoCAD
中圖分類號:TP391.72 文獻(xiàn)標(biāo)志碼:A 文章編號:1673-291X(2014)02-0253-02
一、宅基地信息管理系統(tǒng)創(chuàng)建的關(guān)鍵是宅基地基本信息庫的建立
Visual LISP(簡稱Vlisp)是AutoCAD軟件自帶的可視化、集成型CAD二次開發(fā)的計(jì)算機(jī)語言,采用遞歸的語法結(jié)構(gòu)控制計(jì)算機(jī)的運(yùn)行,程序的設(shè)計(jì)比較簡單,易于使用戶接受。作為CAD軟件的二次開發(fā)工具,它完整地提供了集成開發(fā)環(huán)境,使用戶能夠快捷地調(diào)用CAD命令,高效地調(diào)試程序。
宅基地管理信息系統(tǒng)是地理信息系統(tǒng)的一個分支,是將宅基地權(quán)屬信息及規(guī)劃等信息在計(jì)算機(jī)技術(shù)的支持下,按照住戶信息或者地籍屬性以一定的格式輸入、存儲、管理、分析、檢索、統(tǒng)計(jì)、顯示以及應(yīng)用決策的地理信息系統(tǒng)。
宅基地信息管理系統(tǒng)創(chuàng)建的關(guān)鍵是宅基地基本信息庫的建立,而宅基地基本信息庫的主要指標(biāo)之一是從宅基地?cái)?shù)字化地籍圖中提取宅基地宗地界址點(diǎn)坐標(biāo)。為了適應(yīng)這一需求,本文依據(jù)宅基地信息管理系統(tǒng)中宅基地基本信息庫文件的格式需求,應(yīng)用Vlisp計(jì)算機(jī)語言對CAD軟件進(jìn)行了二次開發(fā)的學(xué)習(xí)研究。
二、獲取數(shù)字化地籍圖中特定數(shù)據(jù)格式的程序開發(fā)
(一)宅基地宗地基礎(chǔ)數(shù)據(jù)庫格式要求
在獲得宅基地AutoCAD地籍圖的基礎(chǔ)上,為了明確工作的內(nèi)容,我們先確定出所需輸出的數(shù)據(jù)的文件格式,即:
提取日期,戶主姓名,界址點(diǎn)1,X坐標(biāo),Y坐標(biāo),宗地編號
提取日期,戶主姓名,界址點(diǎn)2,X坐標(biāo),Y坐標(biāo),宗地編號
提取日期,戶主姓名,界址點(diǎn)3,X坐標(biāo),Y坐標(biāo),宗地編號
提取日期,戶主姓名,界址點(diǎn)4,X坐標(biāo),Y坐標(biāo),宗地編號
…
通過分析數(shù)據(jù)格式,我們可以知道,該格式中需要人工輸入確認(rèn)的數(shù)據(jù)只有戶主的相關(guān)信息,即姓名漢字拼音簡稱,其他如提取時間、戶主姓名、界址點(diǎn)序號,坐標(biāo)及宗地編號都是地籍圖上已有的內(nèi)容或可以通過計(jì)算機(jī)后臺完成,完全可以通過Vlisp計(jì)算機(jī)語言進(jìn)行快速且準(zhǔn)確地提取。
(二) Vlisp計(jì)算機(jī)語言對宅基地宗地信息的編程實(shí)現(xiàn)
Vlisp計(jì)算機(jī)程序設(shè)計(jì)語言通過特定的計(jì)算機(jī)語法結(jié)構(gòu)可讓用戶對AutoCAD軟件進(jìn)行二次開發(fā)。
在計(jì)算機(jī)技術(shù)中,只要建立文件,就必須確定文件的存儲路徑及文件名稱。本文為了方便文件管理,將所輸出文件存儲于宅基地?cái)?shù)字化地籍圖所在的計(jì)算機(jī)路徑下,命名為該主文件名+界址點(diǎn)文件,后綴根據(jù)需要設(shè)定為所需的格式后綴。為了確定輸出文件的路徑及名稱,可以讀取Vlisp語言中的dwgprefix函數(shù),該函數(shù)能夠給出當(dāng)前AutoCAD中活動文件的具體路徑,如AutoCAD中當(dāng)前打開的文件名為“**地籍圖.dwg”的文件保存于計(jì)算機(jī)D盤中的“**村地籍圖文件”文件夾下,在讀取dwgprefix函數(shù)后,計(jì)算機(jī)在AutoCAD軟件中便會顯示該文件路徑為:“D:\\**村地籍圖文件\\”,在用Vlisp語言實(shí)現(xiàn)中我們將讀取的文件路徑定義為變量wjmlj,語言代碼為:(setq wjmlj (getvar \"dwgprefix\"));所需輸出數(shù)據(jù)的文件名稱可以讀取DWGNAME函數(shù),該函數(shù)直接給出AutoCAD軟件當(dāng)前活動文件的文件名,如“**地籍圖.dwg”,我們所需的文件名稱應(yīng)該為“**地籍圖界址點(diǎn)文件.txt”,這一步的實(shí)現(xiàn)首先需要將“**地籍圖.dwg”中的文件名后綴“.dwg”去掉,得到一個只代表文件名“**地籍圖”,通過組合字符“界址點(diǎn)文件.txt”確定出所要輸出的文件名稱,這一步的Vlisp語言代碼可綜合整理為:(setq wjm (getvar \"DWGNAME\") ln (strlen wjm) wjm (substr wjm 1 (- ln 4))) (setq wjm1 (strcat wjmlj wjm \"界址點(diǎn)文件.txt\"))。
在確定了工作中所要輸出的文件的存儲路徑及文件名稱后,需要完成宅基地基礎(chǔ)數(shù)據(jù)庫所需數(shù)據(jù)的計(jì)算機(jī)寫出工作,針對輸出的數(shù)據(jù)格式要求,先確定計(jì)算機(jī)可以自動識別的“提取日期”數(shù)據(jù),這一數(shù)據(jù)可以通過直接讀取計(jì)算機(jī)當(dāng)前日期,在Vlisp計(jì)算機(jī)語言中可以用特定的函數(shù)cdate來實(shí)現(xiàn)。在編程中,需要定義一個有關(guān)當(dāng)天日期的變量,根據(jù)Vlisp計(jì)算機(jī)語言的語法結(jié)構(gòu),我們定義rq為“提取日期”的變量名稱,具體實(shí)現(xiàn)表達(dá)式為:(setq rq (atoi (rtos (getvar \"cdate\") 2 0)));對數(shù)據(jù)庫中所需的“戶主姓名,宗地編號”兩項(xiàng)需要在編程過程中賦予字符型變量類型,變量名稱分別定義為hzxm,zdbh,通過直接提取宅基地AutoCAD地籍圖中的相應(yīng)圖塊列表來實(shí)現(xiàn),實(shí)現(xiàn)代碼可以寫成 (setq hzxm (cdr (assoc 1 (entget (car (entsel \"\n請拾取戶主姓名:\"))))))及(setq zdbh (cdr (assoc 1 (entget (car (entsel \"\n請拾取相應(yīng)宗地編號:\"))))))。
現(xiàn)在,必須確定要輸出的相應(yīng)宗地的界址點(diǎn)序號及相應(yīng)的坐標(biāo)數(shù)據(jù),這需要使用Vlisp語言的循環(huán)語法。界址點(diǎn)序號變量通過代碼(setq rm1 \"界址點(diǎn)\")首先定義出界址點(diǎn)序號中不變的部分,再在循環(huán)過程中首先定義一個從數(shù)字1開始的變量i,然后在循環(huán)中根據(jù)變量i的遞增通過定義新的變量(setq rmm1 (strcat rm1 (rtos i 5))) 確定其界址點(diǎn)序號。界址點(diǎn)坐標(biāo)數(shù)據(jù)則通過從宅基地AutoCAD地籍圖上點(diǎn)取各相應(yīng)宗地的界址點(diǎn)坐標(biāo),應(yīng)用Vlisp語言的getpoint函數(shù)提取相應(yīng)界址點(diǎn)圖塊,并將其賦予特定的變量中(本文中定義p1及p為該變量),然后通過car及cadr函數(shù)將特定點(diǎn)的坐標(biāo)從其圖塊列表中分離出來,變量定義為x1,y1及xp,yp;編碼(setq p1 (getpoint \"\n指定第一個界址點(diǎn):\") (setq y1 (rtos (car p1) 2 3) (setq x1 (rtos (cadr p1) 2 3))確定了第一個界址點(diǎn)的坐標(biāo)信息,這時需要將從宅基地?cái)?shù)字化地籍圖中獲得的數(shù)據(jù)信息按數(shù)據(jù)格式要求輸出到特定路徑下的特定文件中去,這里根據(jù)數(shù)據(jù)格式需要應(yīng)用Vlisp語言代碼(setq fn1 (open wjm1 \"a\")),(write-line (strcat rq \",\" hzxm \",\" \"\" \",\" rmm1 \",\" x1 \",\" y1 \",\" zdbh) fn1)。由于建立宅基地基礎(chǔ)信息庫是個比較耗費(fèi)時間的工作,為了防止重復(fù)提取或遺漏,通過每完成一戶在特定圖層繪制pline線加以區(qū)分,首先在編程過程中通過編碼(command \"-layer\" \"m\" \"界址點(diǎn)連線\" \"c\" \"3\" \"\" \"\" \"\")建立一個名稱為“界址點(diǎn)連線”的顏色為綠色的新圖層用于存放提取界址點(diǎn)坐標(biāo)時新繪的pline線,代碼(command \"pline\" p1 \"w\" \"0.5\" \"0.5\" )用來調(diào)用AutoCAD中的pline命令在AutoCAD軟件平臺上繪制pline線,Vlisp語言的while循環(huán)語句以空格作為循環(huán)結(jié)束控制,所以,Vlisp語言循環(huán)語法提取相應(yīng)宅基地宗地界址點(diǎn)信息的代碼(while ((progn (initget 8 \"x\") (setq p (getpoint \"\n指定下一放線點(diǎn):\")) (command p) (if (= 'list (type p)) (prong (setq i (+ i 1)) (setq rmm (rtos i 5)) (setq rmm1 (strcat rm1 rmm)) (setq yp1 (rtos (car p) 2 3)) (setq xp1 (rtos (cadr p) 2 3)) (write-line (strcat rq \",\" hzxm \",\" \"\" \",\" rmm1 \",\" xp1 \",\" yp1 \",\" zdbh) fn1))))))通過循環(huán)逐個按特定的數(shù)據(jù)格式將相應(yīng)宅基地宗地的界址點(diǎn)坐標(biāo)及宅基地信息管理系統(tǒng)所需的數(shù)據(jù)輸出到了計(jì)算機(jī)特定路徑下的特定文件中。
(三)Vlisp程序語言與AutoCAD軟件的銜接
在Vlisp計(jì)算機(jī)程序語言的編程代碼經(jīng)過編譯運(yùn)行無誤后,需要在AutoCAD軟件下便捷使用,AutoCAD軟件提供了對應(yīng)的接口,可以在AutoCAD軟件界面直接使用其命令appload加載Vlisp編譯的相應(yīng)程序文件,通過在AutoCAD中直接鍵入Vlisp語言定義的特定命令名稱來執(zhí)行所需的工作;也可以在AutoCAD軟件的菜單文件中加入使用Vlisp計(jì)算機(jī)語言編制的命令,通過menuload命令更新AutoCAD菜單的方式實(shí)現(xiàn)Vlisp語言編寫的程序命令。
結(jié)語
使用Vlisp計(jì)算機(jī)程序語言編譯的從數(shù)字化地籍圖提取宅基地基礎(chǔ)信息的程序能較大程度且準(zhǔn)確地提高宅基地基礎(chǔ)信息數(shù)據(jù)庫的建設(shè)效率,通過其對AutoCAD軟件的二次開發(fā),擴(kuò)展了AutoCAD軟件在特定專業(yè)需求的功能,能使宅基地基礎(chǔ)信息庫的建立順利開展。
參考文獻(xiàn):
[1] 高華峰.基于VLISP對地形圖中橫斷面的提取并生成橫斷面圖的研究[J].科技咨詢,2012,(12).
[2] 代莉,吳晨耀,聶荔.VLISP支持下的CAD二次開發(fā)與應(yīng)用[J].地理空間信息,2010,(5).
[3] 鄭偉.農(nóng)村宅基地登記管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
Discussion about the two development of the CAD in the VLISP extraction homestead basic data
ZHANG Hai-chun,MA Ying
(Management college,Xinjiang Agricultural University,Urumqi 830000,China)
Abstract:The construction of basic information database of homestead is a time consuming and complicated work,in order to improve the efficiency of the basic information database of land and to ensure the accuracy of the data base,by using the Vlisp computer program language to develop two times on the AutoCAD software,compiled with the application of AutoCAD software program to extract the data from the basic information of command curtilage base of Digital Cadastral map.
Key words:homestead ;cadastral map;Vlisp;AutoCAD
[責(zé)任編輯 李 可]