于 健
(北京五色金土信息科技有限公司,北京 100000)
在地籍調(diào)查工作中,地籍成果圖表的輸出是必不可少的,就傳統(tǒng)地籍測(cè)繪而言,大家習(xí)慣于在AutoCAD的基礎(chǔ)上,利用南方CASS或者廣州CASS來進(jìn)行地籍測(cè)圖的內(nèi)業(yè)出圖工作,以上插件主要通過提供預(yù)編的要素種類對(duì)地形地物進(jìn)行標(biāo)注,利用AutoCAD中的XData擴(kuò)展屬性來記錄地形地物的屬性信息。
同樣,插件本身也提供了成果圖表的輸出工具,但是在很多時(shí)候插件自帶的成果圖表輸出工具并不能滿足我們的出圖要求,各地的地方標(biāo)準(zhǔn)要求的成果圖表的輸出格式不盡一致,很多時(shí)候我們需要對(duì)成果圖表進(jìn)行二次加工,而且修改起來工作量較大,耗費(fèi)人力較多。
北京五色金土信息科技有限公司承接門頭溝、豐臺(tái)、昌平等區(qū)縣的農(nóng)村集體土地確權(quán)登記頒證工作。項(xiàng)目涉及到大量地籍測(cè)繪及宗地成果圖表輸出等工作,由于地方標(biāo)準(zhǔn)的不同,傳統(tǒng)的地籍測(cè)繪軟件廣州開思等不能完全滿足北京市地籍成果圖表的輸出工作,出圖后有相當(dāng)一部分的內(nèi)容不一致,需要在原有圖表的基礎(chǔ)上進(jìn)行整飾,圖表整飾修改的工作量較大,隨著標(biāo)準(zhǔn)要求的不同,成果圖表的修改量進(jìn)一步增加,造成很多不必要的人力資源浪費(fèi)。
基于諸多不便因素的制約下,文章提出在地籍測(cè)繪成果總圖的基礎(chǔ)上,通過AutoCAD自帶的Lisp語言編輯器進(jìn)行繪制代碼編寫,更加貼合實(shí)際生產(chǎn)工作,更能提高工作效率。
Lisp語言和眾多編程語言一樣,有著相類似的地方,通過對(duì)代碼的編譯執(zhí)行來完成一系列程序化的工作。Lisp語言相對(duì)來說應(yīng)用起來靈活,簡(jiǎn)化的程序處理,不僅在處理速度上表現(xiàn)優(yōu)異,在內(nèi)存管理等方面也非常優(yōu)秀。
在地籍調(diào)查中,主要采用的AutoCAD的擴(kuò)展屬性來存儲(chǔ)實(shí)體的地籍屬性信息,將宗地相關(guān)屬性存儲(chǔ)在宗地圖形的擴(kuò)展屬性中。由于地籍屬性信息通過擴(kuò)展屬性來存儲(chǔ),而擴(kuò)展屬性則直接掛接在實(shí)體對(duì)象上,故可以通過獲取擴(kuò)展屬性來獲取相應(yīng)圖形的地籍信息。擴(kuò)展屬性主要通過擴(kuò)展屬性注冊(cè)名來進(jìn)行標(biāo)識(shí),可以通過該名稱提取擴(kuò)展屬性表中的所有信息,再通過相對(duì)位置來提取相應(yīng)的屬性信息,從而獲取完整的地籍屬性信息。
以宗地圖和界址點(diǎn)成果表為例,繪制步驟主要分為:裁切另存圖形文件、繪制宗地圖、繪制界址點(diǎn)成果表等三個(gè)方面。
3.2.1 裁剪另存圖形
一般而言,地籍測(cè)量的成果總圖中包含了全部的宗地,而成果圖表需要單宗地進(jìn)行繪制。因此需要根據(jù)宗地的范圍進(jìn)行圖形裁剪,將宗地及宗地四鄰關(guān)系重新存儲(chǔ)為新的圖形,再進(jìn)行宗地成果圖表的繪制。為了便于操作,可以采用批量裁剪的方式,將總圖中所有的宗地外圍擴(kuò)大,然后進(jìn)行批量裁剪,將裁剪后的圖形統(tǒng)一輸出到“作業(yè)成果”文件夾中。
在Lisp編輯器中定義一個(gè)批量裁剪命令,然后選擇需要裁剪的閉合宗地線,然后遍歷所選宗地線,逐一將宗地線的外圍擴(kuò)大10個(gè)單位距離,以保留相鄰關(guān)系。然后對(duì)圖形進(jìn)行裁剪,通過圖形擴(kuò)展屬性獲取該宗地線的地籍號(hào),將裁剪好的圖形以該宗地的地籍號(hào)命名保存到指定的“作業(yè)成果”文件夾中。
批量裁剪的目的是獲取每一宗地的小范圍宗地圖形文件,以地籍號(hào)統(tǒng)一命名,便于下一步對(duì)每一宗地進(jìn)行成果圖表繪制,最后獲得每一宗地的成果圖表文件。
3.2.2 繪制宗地圖
(1)繪制圖框要素。根據(jù)地籍號(hào)選擇圖形文件,打開裁剪后的宗地圖形,調(diào)用命令通過圖形選擇工具選擇需要繪制的宗地線,程序自動(dòng)讀取該宗地圖形的界址點(diǎn)坐標(biāo)以及擴(kuò)展屬性等信息。通過坐標(biāo)計(jì)算獲取宗地幾何中心的位置,根據(jù)宗地圖形的包絡(luò)矩形以及紙張大小計(jì)算最適宜繪圖比例尺。將圖形按照比例尺進(jìn)行圖紙空間縮放,通過調(diào)用預(yù)先制作的圖框模板,作為塊插入到相應(yīng)的坐標(biāo)位置。然后根據(jù)宗地的擴(kuò)展屬性將宗地號(hào)、權(quán)利人名稱、圖幅號(hào)、土地坐落、制圖人、比例尺等相關(guān)信息標(biāo)注到圖框的相應(yīng)位置,完成圖框要素的繪制。
(2)繪制界址點(diǎn)、界址線。通過圖形對(duì)象獲取界址點(diǎn)信息,自動(dòng)檢索宗地拐點(diǎn)坐標(biāo),根據(jù)標(biāo)注圖表樣式,按照坐標(biāo)位置自動(dòng)繪制界址點(diǎn)圈以及界址線,界址線繪制時(shí)需要根據(jù)界址點(diǎn)圈半徑回縮,以防止壓蓋。
(3)界址點(diǎn)號(hào)、界址邊長(zhǎng)標(biāo)注。通過界址點(diǎn)坐標(biāo),程序自動(dòng)檢索界址點(diǎn)位置,根據(jù)界址點(diǎn)連接的前界址線和后界址線的向量角計(jì)算出兩根界址線偏移的中心角方向,通過判斷向量夾角的大小計(jì)算偏移量,將坐標(biāo)往該方向偏移指定距離單位,標(biāo)注界址點(diǎn)號(hào)。
(4)標(biāo)注本宗基本信息。計(jì)算本宗地中心點(diǎn)位置,將宗地號(hào)、權(quán)利人、宗地面積、地類代碼等按照標(biāo)準(zhǔn)圖表樣式計(jì)算各自的標(biāo)注點(diǎn),標(biāo)注到中心點(diǎn)位置附件的相應(yīng)標(biāo)注點(diǎn)上,完成本宗地基本信息的標(biāo)注。
(5)標(biāo)注鄰宗基本信息。裁剪宗地時(shí)外擴(kuò)了一定距離,可以根據(jù)裁剪附帶下來的鄰宗宗地線,來計(jì)算鄰宗標(biāo)注中心點(diǎn)的位置,通過其擴(kuò)展屬性來將鄰宗的宗地號(hào)、權(quán)利人、地類代碼等按照標(biāo)準(zhǔn)圖表樣式標(biāo)注到適宜標(biāo)注點(diǎn),完成鄰宗基本信息的標(biāo)注。
3.2.3 繪制坐標(biāo)成果表
(1)繪制成果表框架。根據(jù)以上宗地圖位置,按照?qǐng)D紙紙張的大小,往右偏移一個(gè)適當(dāng)?shù)奈灰?,確定坐標(biāo)成果表的起始位置,將成果表模板以圖塊的方式插入到該位置。根據(jù)圖表的位置將宗地號(hào)、圖幅號(hào)、繪圖員等相關(guān)信息標(biāo)注到相應(yīng)的表框位置。
(2)繪制宗地略圖。根據(jù)地方標(biāo)準(zhǔn),界址點(diǎn)成果表的最后需要繪制宗地略圖,因此,需要根據(jù)界址點(diǎn)成果表中的略圖框的大小,將宗地線按比例縮放到合適的位置,并按照界址點(diǎn)號(hào)標(biāo)注的方式進(jìn)行略圖點(diǎn)號(hào)標(biāo)注。
(3)標(biāo)注界址點(diǎn)號(hào)及坐標(biāo)成果值。獲取界址點(diǎn)號(hào)標(biāo)注的位置,遍歷所有界址點(diǎn)坐標(biāo),將界址點(diǎn)號(hào)、界址點(diǎn)類型、界址點(diǎn)坐標(biāo)值、界址邊長(zhǎng)逐一標(biāo)注到表框中的合適位置,該標(biāo)注位置主要為縱坐標(biāo)遞減的方式計(jì)算即可。
(4)跨頁處理。界址點(diǎn)數(shù)超過單張表的最大記錄數(shù)時(shí),需要重新添加一張新表。需要重新計(jì)算下一張表的起始位置,重復(fù)進(jìn)行一次表框繪制,表格換頁后,需要將第一行進(jìn)行處理,要求與上一張表的最后一行保持一致,然后繼續(xù)對(duì)剩余界址信息進(jìn)行標(biāo)注,直至所有坐標(biāo)值均標(biāo)注完成。
AutoCAD中沒有現(xiàn)成的圖形裁剪功能,經(jīng)過試驗(yàn)和對(duì)比,本方案中采用的方式是將宗地線外擴(kuò)10個(gè)單位,與所有相交的線段依次進(jìn)行打斷處理,以實(shí)現(xiàn)裁剪的目的。由于打斷命令一次只能將圖形打斷成兩部分,對(duì)于部分圖形,需要進(jìn)行兩次打斷處理才能完成相交打斷操作,將打斷后的圖形通過框選的方式復(fù)制到一個(gè)新的文件,并以宗地號(hào)命名保存,完成圖形裁剪操作,由于打斷操作均在總圖中進(jìn)行,為了保持原圖的完整性,在每一宗地裁剪完成后,都需要通過AutoCAD的分組回退命令方式將圖形自動(dòng)還原到原始狀態(tài)。
擴(kuò)展屬性的存儲(chǔ)方式?jīng)Q定了擴(kuò)展屬性的提取方式,在提取擴(kuò)展屬性時(shí),需要了解每一個(gè)需要的擴(kuò)展屬性所存儲(chǔ)的位置序號(hào),然后再通過(entget)命令來將所有擴(kuò)展屬性取出,通過(nth)命令來提取相應(yīng)位置的擴(kuò)展屬性,例如:(setqPL_djh(cdr(nth20(nth0(cdr(assoc3(entgetent1'("DJInfo"))))))))。通過獲取“DJInfo”注冊(cè)名下的所有擴(kuò)展屬性信息,然后提取第20位置上的值賦值PL_djh,完成地籍號(hào)的擴(kuò)展屬性提取。
圖1 比例尺計(jì)算代碼
Lisp中要獲取CAD圖形的坐標(biāo)等圖像信息,需要通過vlax擴(kuò)展函數(shù)來進(jìn)行提取,將宗地線作為對(duì)象提取其所有拐點(diǎn)坐標(biāo)信息,按照需求將拐點(diǎn)坐標(biāo)XY值存儲(chǔ)到數(shù)組中,演示代碼如下:
由于在AutoCAD中,成果圖表需要按照1∶1大小打印成圖,這就需要將圖形按照指定的大小進(jìn)行圖紙空間變換,比例尺的計(jì)算方法如下:
根據(jù)本宗地拐點(diǎn)坐標(biāo)值獲取最大、最小坐標(biāo)值,判斷包絡(luò)矩形的XY值與圖紙寬高大小關(guān)系,確定采用X值或者Y值進(jìn)行計(jì)算,通過計(jì)算獲得最適宜的縮放比例尺,要求縮放比例尺為100的整數(shù)倍。
通過計(jì)算出來的最適宜比例尺,將宗地按照該比例尺進(jìn)行圖紙空間縮放,則可以將圖形以最適宜的方式縮放到圖框中。
圖2 比例尺計(jì)算代碼
在標(biāo)注點(diǎn)位中,圖框中個(gè)元素的標(biāo)注點(diǎn)相對(duì)固定,可以根據(jù)圖框的插入點(diǎn)進(jìn)行相對(duì)定位,進(jìn)行圖框要素的標(biāo)注,對(duì)于圖形中界址點(diǎn)號(hào),界址線邊長(zhǎng)等活動(dòng)元素,需要按照?qǐng)D形進(jìn)行計(jì)算標(biāo)注點(diǎn)位置。
(1)界址邊長(zhǎng)標(biāo)注點(diǎn)位計(jì)算。通過圖形對(duì)象信息的獲取,可以得到該宗地拐點(diǎn)坐標(biāo)序列,同時(shí)也可用計(jì)算界址邊長(zhǎng)序列,遍歷所有界址邊長(zhǎng),通過獲取起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),獲取界址線向量,通過計(jì)算兩點(diǎn)之間的中點(diǎn)位置,然后在垂直平分線上按照指定的距離定點(diǎn),即可計(jì)算出界址邊長(zhǎng)標(biāo)注的點(diǎn)位坐標(biāo),通過點(diǎn)位坐標(biāo)以及向量角度來完成界址邊長(zhǎng)的標(biāo)注。
圖3 界址邊長(zhǎng)標(biāo)注代碼
圖4 垂直平分線定點(diǎn)代碼
(2)界址點(diǎn)號(hào)標(biāo)注點(diǎn)位計(jì)算。界址點(diǎn)號(hào)標(biāo)注點(diǎn)的計(jì)算需要計(jì)算前界址線的向量與后界址線的向量,通過計(jì)算出向量夾角中心線的向量方向,然后同樣通過向量定點(diǎn)的方式來計(jì)算界址點(diǎn)號(hào)標(biāo)注的位置。
基于AutoCAD的Lisp程序自動(dòng)繪圖技術(shù)能夠快速便捷的協(xié)助地籍作圖人員輸出成果圖表,實(shí)現(xiàn)了成果圖表自定義模板以及快速制圖功能。從讀取擴(kuò)展屬性到圖形屬性,Lisp能夠充分利用地籍調(diào)查測(cè)量中的相關(guān)信息進(jìn)行匯總制圖,達(dá)到了數(shù)據(jù)處理的準(zhǔn)確性和高效性,在地籍工作這方面表現(xiàn)良好,具有一定的可行性。
Lisp程序化作圖不僅可以快速繪制成果圖表,還可以避免由于人為原因造成的疏漏和錯(cuò)誤。程序化作圖能夠協(xié)助地籍作圖者快速制作出完整正確的宗地成果圖表等,節(jié)省人力物力,也能相應(yīng)運(yùn)用到其他相關(guān)圖表的生產(chǎn),從而達(dá)到一套技術(shù)多種運(yùn)用的目的,實(shí)現(xiàn)制圖及數(shù)據(jù)處理一體化和高效化。