張立剛,劉甫斌
(黑龍江省水利水電勘測設計研究院,哈爾濱150080)
在新建機場的地形圖測量工作中,機場建設規(guī)范要求地形圖施測20 m×20 m方格網(wǎng)角點高程,如果按其要求在外業(yè)實測這個方格網(wǎng),效率慢,因此這個工作可以考慮用計算機來自動實現(xiàn)。
南方CASS繪圖軟件能夠根據(jù)所測的高程點生成三角網(wǎng),利用這個三角網(wǎng)可以自動生成等高線,考慮能否利用CASS的功能實現(xiàn)方格網(wǎng)點的自動生成。CASS自動生成等高線時利用這個三角網(wǎng)三個頂點高程值進行插值計算,本程序正是利用這個想法,首先讓CASS生成三角網(wǎng),三角網(wǎng)中每個三角形作為一個CAD中的實體,三個頂點都帶高程,然后判斷方格網(wǎng)點在不在三角形內(nèi),如果在三角形內(nèi),進行插值計算,求出方格網(wǎng)點的高程,如果不在就跳過,尋找下一個三角形。本程序針對CASS7.0程序中的高程點,CASS5.0程序中的高程點與7.0的稍有不同,CASS5.0中點與文本是分開的,CASS7.0中文本作為點的屬性與點是一體的。
本程序利用CAD二次開發(fā)程序AutoLisp語言編制,見圖1。
圖1 程序流程圖
;;;本程序針對CASS7.0的高程點形式,自動計算20 m方格網(wǎng)交叉點高程
;;;出錯處理程序,
(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″))))
;;;恢復系統(tǒng)環(huán)境
(setvar″blipmode″sblip)
(setvar″gridmode″sgrid)
;(command ″_.layer″″_s″clay ″″)
(command ″_.undo″″_e″)
(setvar″cmdecho″scmde)
(setq*error* olderr)
(princ)
(princ″ 所有高程點均已處理完畢!″)
(princ)
;;;;--------------------------------------------------------------------;
運行此程序之前,首先根據(jù)機場地形圖繪制出以以機場跑道方向為H方向,垂直跑道方向為P方向的20 m×20 m方格網(wǎng),并在所有方格網(wǎng)交叉點上設置空高程點(高程值為0的高程點),然后利用CASS軟件生成三角網(wǎng),這些工作完成后就可以運行本程序了。筆者施測的機場跑道約2 km,施測地形圖的比例尺為1∶500,所需求解的方格網(wǎng)點約1萬個左右,運行時間大約30 s。
由于此程序為解釋型程序,所以程序運行速度根據(jù)地形圖高程點的多少來決定,同時方格網(wǎng)點的高程值是根據(jù)周圍高程點來求解的,如果點距過大則求出來的高程值會與實地有出入。
通過此程序的編制,筆者認識到運用程序軟件可以解決許多繁重的重復工作,由于本人能力之限,編制的程序尚有許多不足,望各位同仁多多指正。
[1]郭秀娟.AutoLISP語言程序設計[M].北京:化學工業(yè)出版社,2008.