摘 要:本文簡要敘述利用AutoLISP語言編程在數字地形圖中將部分線型進行規范化的處理,并以實例說明程序的可行性。
關鍵詞:AutoCAD AutoLISP 數字地形圖 線型規范化
1 引言
LISP是一種擅長表處理(List Processing)的第四代有工智能(AI,Artificial Intelligence)語言;將LISP的程序語法放在AutoCAD繪圖環境下來使用時,就特稱之為AutoLISP。
AutoLISP是一種程序設計語言,能幫助經常使用或重復的操作步驟自動化,從而顯著地提高工作效率。AutoLISP能夠看到AutoCAD的內部工作機制,其基本功能是可以控制用戶與程序運行之間的相互關系。
AutoLISP具有容易撰寫、容易學習、無需編譯、安全性好等特點。
2 問題及解決方法
數字地形圖中線型規范化的處理是不可少的。雖說未經過線型規范化處理的數字地形圖對面向GIS數據不影響,但也直接影響到數字地形圖的美觀和使用。特別是打印出來的白紙圖,在野外使用時不能準確分辨出夾點的所在位置,給工作帶來諸多不便。結合我院自己開發的成圖軟件,數字地形圖中需要進行規范化處理的線型分為建筑類有陽臺(GS2314為線型名)、破壞房屋(GS2140)、廊房(GS4440)、門頂(GS4440);交通類有大車路(GS4410)、鄉村路(GS4420)、小路(GS4430)、內部路(GS4440);管線類有地面下的輸送管道(GS5312);水系類有單雙線干溝(GS6342、GS6341)、水庫溢洪道(GS6342)、滾水壩(GS4440)、地下灌渠(GS4420)、倒虹吸通道(GS4440)、等深線間曲線(GS8130);境界類有已定省、區、直轄市界線(GS7131)、未定省、區、直轄市界線(GS7132)、已定地級界線(GS7141)、未定地級界線(GS7142)、已定縣級界線(GS7151)、未定縣級界線(GS7152)、已定鄉鎮界線(GS7161)、未定鄉鎮界線(GS7162)、村界(GS7170)、自然保護區界線(GS7220);地貌土質類有等高線間曲線(GS8130);植被類有地類界線(GS9610)、花圃(GS9530)等等。如果僅憑手工一一處理,必將費時費力。針對這一情況,筆者利用AutoLISP語言編寫了一個小程序來解決這些問題。
3程序代碼
;;;線型規范化
(DEFUN C:XGF(/ XX L I A B C TS)
(REGMAP)
(SETQ XX(SSGET \"X\" '((6 . \" GS2140,GS2314,GS4410,GS4420,GS4430,GS4440,GS5312,GS6341,GS6342,GS7131,GS7132,GS7141,GS7142,GS7151,GS7152,GS7161,GS7162,GS7170,GS7220,GS8130,GS9530,GS9610\")(0 . \"LWPOLYLINE,POLYLINE\"))))
;;;需要進行規范化處理的線型
(IF XX
(PROGN
(SETQ L (SSLENGTH XX))
(SETQ I 0)
(WHILE (< I L)
(SETQ A (SSNAME XX I))
(SETQ B (ENTGET A))
(SETQ C (CDR (ASSOC 0 B)))
(IF
(OR (= C \"POLYLINE\") (= C \"LWPOLYLINE\"))
(COMMAND \"_PEDIT\" A \"L\" \"OFF\" \"\")
;(COMMAND \"_PEDIT\" A \"Y\" \"L\" \"OFF\" \"\")
)
(SETQ I (+ I 1))
)
)
)
(SETQ TS (STRCAT \"\n共處理了\" (ITOA I) \"條線。\"))
(PRINC TS)
(PRINC)
)
4 應用實例
在AutoCAD繪圖環境下,先將程序編寫成自動加載。打開一幅數字地形圖并局部放大后,從(圖1)中不難發現有多處線型是未經過線型規范化處理的。在命令行輸入xgf(意為線型規范化)或點擊工具欄圖標“ ”即可運行該程序,并且程序能在短短1秒鐘左右就能將所有需要進行規范化處理的線型自動處理完畢。(效果見圖2)
圖1
圖2
5 結 語
通過以上實例證明,該程序的可行性是肯定的。掌握好AutoLISP語言編程不僅能減少內業編圖勞力,工作效率也有極大地提高。最后,希望本文能給同行們有所借鑒。
【參考文獻】
[1] 湯峻編著。AutoCAD 2000高級應用與Visual LISP開發寶典。人民郵電出版社。2001
[2] 劉友光等編著。工程中數字地面模型的建立與應用及大比例尺數字測圖。武漢測繪科技大學出版社。1997
【作者簡介】范森合(1971—),男,工程測量專業,工程師,主要從事城市工程測量技術工作。