" />
所屬欄目:計算機信息管理論文 發布日期:2011-06-07 17:32 熱度:
摘要:在傳統的測繪方式中,由于受成圖方式和制圖軟件的限制,一些數字化成果的高程數據沒有屬性,給數據處理和利用造成了一定的麻煩。本文通過利用計算機程序解決了這一問題,在實際應用中效果較好。
關鍵詞:高程;屬性;程序;地形圖
0、引言
目前,測繪生產部門大多采用AutoCAD來生成和管理地形圖數據,在CAD中,數據一般是按照地形要素分層存放的。因為各單位繪圖軟件的不同,在生成*.DWG圖時高程點的圖層和點的屬性也不同,有些單位因為軟件的限制,一般把高程注記只是按注記文本在CAD中進行組織和管理。在這種組織方式下,圖形和屬性之間的聯系僅體現在平面位置上的靠近,這就割裂了圖形和屬性之間的關聯,造成了高程數據無法直接讀取和屬性提取。主要缺陷在于:(1)在更換圖的比例尺時候很難根據實際情況均勻的刪除高程注記。(2)很難自動提取異常高程。(3)這種高程數據做不了數字高程模型(DEM)。(4)做不了GIS的屬性數據。(5)在做土方量計算的時候,這種高程數據計算起來相當麻煩。
在分析了不同時期用不同軟件做出的數字化地形圖之后,我找到了一種好的方法,可以自動刪除多余的高程注記,使高程點根據實際情況均勻分布,可以根據用戶的輸入條件自動刪除異常高程點,可以把沒有屬性的高程點加入屬性,方便做土方量計算和數字高程模型,可以生成GIS需要的三維高程數據文本文件。
1、實現原理
首先獲取高程點所在的圖層名稱,其次獲取高程點的屬性,一般為POINT,LWPOLYLINE,CIRCLE,BLOCK等,根據高程點的平面坐標位置獲取離此高程點最近的數字文本注記,判斷是否是高程值,建立文本文件,依次寫入點號、X坐標、Y坐標、Z坐標(也就是離此高程點最近的數字文本注記)。然后刪除所有的高程點,等待用戶輸入:(1)高程點之間的最小距離、(2)用戶認為異常高程點的范圍值,重新繪制帶有屬性的三維高程點,程序流程見圖一。
圖一:程序框圖
2、程序的實現
開發CAD的語言有很多,常用的有VLISP、VBA、ARX等,可以根據程序要求選擇一種適合的語言,本程序并不復雜,而且考慮到安全問題,所以選用VLISP語言進行開發,為了減少篇幅,只給出關鍵部分的代碼,如下所述。
(1)獲取地形圖上的高程點,這里只給出簡單代碼:
(setqss1(ssget'((-4."<OR")
(-4."<AND")
(0."LWPOLYLINE")
(40.0.125)
(-4."AND>")
(-4."<AND")
(0."INSERT")
(8."GCD")
(-4."AND>")
(-4."OR>")
…
…
)
)
)
(2)根據選擇集中的高程點屬性的不同,分別建立區域選擇集,根據地形圖比例尺的不同,建立的區域選擇集也不同,簡單的語句為:
(ssget"W"(list…)(list…)'((0."TEXT")))
(3)寫入文件的語句為
(write-line(strcat…))
(4)建立完高程數據文件,就要根據用戶的輸入重新繪制高程點了,這里是本程序的核心部門,主要思路是:首先等待用戶輸入要繪制高程點間的最小距離和異常值的范圍,然后從剛生成的文件里提取高程數據,判斷是不是異常高程,如果不是則在CAD窗口里繪制該高程點,讀下一行數據,如果該數據離剛剛繪制的高程點的距離滿足用戶要求而且不是異常高,則繪制。讀下一行,如果該數據離前面已經繪制的兩個高程點的距離滿足用戶要求而且不是異常高,則繪制,依次例推…。
主要代碼為:
(setqpf(open"d:\文件夾\txz.txt""r"))
(setqi0)
(setqreco(read-linepf))
(whilereco
(setqsxb(flzreco))
(setqpt(list(atof(nth1sxb))(atof(nth2sxb))(atof(nth3sxb))))
(set(read(strcat"NUM["(rtosi)"]"))pt)
(setqreco(read-linepf))
(setqi(+1i)))
(closepf)
(setqi(-i1))
(setq j0
t0
m0
a0)
(set(read(strcat"NUM1["(rtos0)"]"))(eval(read(strcat"NUM["(rtos0)"]"))))
(while(<ji)
(while(<tm)
(if(>(distance(list(car(eval(read(strcat"NUM["(rtosj)"]"))))(cadr(eval(read(strcat"NUM["(rtosj)"]")))))(eval(read(strcat"NUM1["(rtost)"]"))))del_dist)
(setqa(1+a)))
(setqt(1+t)))
(if(=am)
(progn
(set(read(strcat"NUM1["(rtosm)"]"))(eval(read(strcat"NUM["(rtosj)"]"))))
(setqm(1+m))))
(setqa0t0)
(setqj(1+j)))
(setqi0)
(while(<im)
(command"insert""500"(eval(read(strcat"NUM1["(rtosi)"]")))blcblc"")
(command"text"(polar(eval(read(strcat"NUM1["(rtosi)"]")))0blc)blc0(rtos(caddr(eval(read(strcat"NUM1["(rtosi)"]"))))2xsd)"")
(setqi(1+i)))))
(princ))
其中flz是一個分解字符串生成表的函數,由于節省篇幅,這里沒有給出具體代碼。
3、關于程序的一些說明
不同的地形圖的高程點的屬性可能不同,應根據實際情況,判斷高程點的平面坐標和高程坐標,有的時候判斷高程坐標的時候不能只根據高程點的平面坐標到文字的距離進行簡單的判斷,而且在處理數據量比較大的地形圖時,要考慮程序的優化問題,使它占用計算機內存最小,而且隨時的釋放占用的內存,以達到程序運行穩定,處理速度快,出錯率低。
參考文獻:
[1]劉國鈞,陳紹業,王鳳翥.圖書館目錄[M].北京:高等教育出版社,1957
文章標題:基于AutoCAD的無屬性的高程圖形數據的處理
轉載請注明來自:http://www.56st48f.cn/fblw/dianxin/xinxiguanli/9316.html
攝影藝術領域AHCI期刊推薦《Phot...關注:106
Nature旗下多學科子刊Nature Com...關注:152
中小學教師值得了解,這些教育學...關注:47
2025年寫管理學論文可以用的19個...關注:192
測繪領域科技核心期刊選擇 輕松拿...關注:64
及時開論文檢索證明很重要關注:52
中國水產科學期刊是核心期刊嗎關注:54
國際出書需要了解的問題解答關注:58
合著出書能否評職稱?關注:48
電信學有哪些可投稿的SCI期刊,值...關注:66
通信工程行業論文選題關注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關注:121
評職稱發論文好還是出書好關注:68
復印報刊資料重要轉載來源期刊(...關注:51
英文期刊審稿常見的論文狀態及其...關注:69
電子信息論文范文
智能科學技術論文 廣播電視論文 光電技術論文 計算機信息管理論文 計算機網絡論文 計算機應用論文 通信論文 信息安全論文 微電子應用論文 電子技術論文 生物醫學工程論文 軟件開發論文
SCI期刊分析
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識網 冀ICP備15021333號-3