張立剛,劉甫斌
(黑龍江省水利水電勘測設計研究院,哈爾濱150080)
在新建機場的地形圖測量工作中,機場建設規范要求地形圖施測20 m×20 m方格網角點高程,如果按其要求在外業實測這個方格網,效率慢,因此這個工作可以考慮用計算機來自動實現。
南方CASS繪圖軟件能夠根據所測的高程點生成三角網,利用這個三角網可以自動生成等高線,考慮能否利用CASS的功能實現方格網點的自動生成。CASS自動生成等高線時利用這個三角網三個頂點高程值進行插值計算,本程序正是利用這個想法,首先讓CASS生成三角網,三角網中每個三角形作為一個CAD中的實體,三個頂點都帶高程,然后判斷方格網點在不在三角形內,如果在三角形內,進行插值計算,求出方格網點的高程,如果不在就跳過,尋找下一個三角形。本程序針對CASS7.0程序中的高程點,CASS5.0程序中的高程點與7.0的稍有不同,CASS5.0中點與文本是分開的,CASS7.0中文本作為點的屬性與點是一體的。
本程序利用CAD二次開發程序AutoLisp語言編制,見圖1。

圖1 程序流程圖
;;;本程序針對CASS7.0的高程點形式,自動計算20 m方格網交叉點高程
;;;出錯處理程序,
(defun clerr(s)
(if(/=s ″console break″)
(princ(strcat″ 錯誤:″s))
)
(setq*error* olderr)
(princ)
)
;;;主程序
(defun c:Qjd(/olderr clay sblip scmde sgrid)
(setq olderr*error*
*error*clerr
)
(setq ms 2)
(while(=ms 2)
(setq ms 1)
(setq ms(getint″ 單個處理(0)/批量處理(1):″))
(if(and(/=ms 0)(/=ms 1))
(alert″ 請選擇單個或批量處理方式!″)
)
)
(if(=ms 0)
(singleCMP);;單個處理程序
)
(if(=ms 1)
(manyCMP);;批量處理程序
)
;;;刪除多余的高程點
(setq si(ssget″X″'((0. ″INSERT″)(8. ″JDH″))))
;;;恢復系統環境
(setvar″blipmode″sblip)
(setvar″gridmode″sgrid)
;(command ″_.layer″″_s″clay ″″)
(command ″_.undo″″_e″)
(setvar″cmdecho″scmde)
(setq*error* olderr)
(princ)
(princ″ 所有高程點均已處理完畢!″)
(princ)
;;;;--------------------------------------------------------------------;
運行此程序之前,首先根據機場地形圖繪制出以以機場跑道方向為H方向,垂直跑道方向為P方向的20 m×20 m方格網,并在所有方格網交叉點上設置空高程點(高程值為0的高程點),然后利用CASS軟件生成三角網,這些工作完成后就可以運行本程序了。筆者施測的機場跑道約2 km,施測地形圖的比例尺為1∶500,所需求解的方格網點約1萬個左右,運行時間大約30 s。
由于此程序為解釋型程序,所以程序運行速度根據地形圖高程點的多少來決定,同時方格網點的高程值是根據周圍高程點來求解的,如果點距過大則求出來的高程值會與實地有出入。
通過此程序的編制,筆者認識到運用程序軟件可以解決許多繁重的重復工作,由于本人能力之限,編制的程序尚有許多不足,望各位同仁多多指正。
[1]郭秀娟.AutoLISP語言程序設計[M].北京:化學工業出版社,2008.