蒲朝旭,湯 洪,林 莉
(1.成都理工大學地球科學學院測繪工程系,四川成都610059;2.涼山州多維數字城市測繪有限公司,四川西昌615050;3.外生成礦與礦山環境重慶市重點實驗室(重慶地質礦產研究院),重慶400042;4.煤炭資源與安全開采國家重點實驗室重慶研究中心,重慶400042)
高程注記是地形圖[1-2]中一種非常重要的表達地理信息注記。在數字化成圖中,一般采用高程點和高程注記兩部分來描述高程的位置信息。目前,國內普遍采用基于CAD平臺進行二次開發而成的數字化成圖軟件來繪制地形圖,對于高程點的展繪,則主要是利用軟件自帶的高程點注記/展繪功能,將高程注記簡單地放置于高程點旁邊,一般高程注記在高程點的右側,這就難免會造成對已有地物的遮擋或壓蓋。這樣不僅不利于快速準確地判讀相關地物信息,而且影響了地形圖的美觀,給后續地形圖的使用帶來了不便。
傳統的解決辦法是在高程注記展繪完成后,采用手工方式將遮擋或壓蓋已有地物的高程注記進行移位。雖然此方法能夠解決高程注記對已有地物的遮擋或壓蓋,但效率低下,且易出現紕漏。隨著計算機技術的發展,不少學者提出了智能移動高程注記的方法,文獻[3—7]分別提出了基于矩形搜索和基于圓形搜索的方法對高程注記進行智能移位,雖能滿足要求,但按順時針方向旋轉和逆時針旋轉的效果有所差異,且存在其他一些不合理的地方。針對上述存在的問題,本文結合此兩種方法的優勢和相關規范[8]的要求,提出一種按照“S”型進行搜索的方法,結合文字消隱,能更好地在滿足規范要求的情況下來解決高程注記對已有地物的遮擋或壓蓋問題。
引言中所述情況如圖1所示。圖中是使用CASS的高程點展點功能將高程點直接展繪至地形圖上的效果,從圖中可以看出,存在諸多地物被高程注記遮擋或壓蓋的情況。下面對已有智能移位方法進行簡介。如圖2所示,P為一個高程為123.45 m的高程點,該高程點的點位注記位置為一個半徑為r的實心圓,p點至高程注記的距離為l(不同的數字化成圖軟件該距離有所差異),P點至文字頂部的距離為h,一般情況下H=2h(即高程點點位為高程注記的垂直方向中心位置),H為高程注記文字的高度,L為高程注記文字的寬度。其中,L、H隨著地形圖比例尺、文字樣式、高程注記有效數字位數的不同而不同。圖2中的虛線框表示高程注記的最小外截矩形,其作用是判斷高程注記是否會壓蓋其他地物。若有需要,還可以將該矩形放大或縮小一定的倍數來進行地物壓蓋判斷,從而滿足特殊要求。
文獻[3—5]提出了基于矩形搜索的方式來實現高程注記智能移位,該方法的智能移位搜索分析如圖3所示。從圖中可以看出,首先需要建立一個長為L+l+0.5r,寬為H+r的初始搜索矩形作為第1層搜索矩形(需要注意的是圖中高程注記點點位靠矩形的右邊)。具體的字母含義請參見圖2的介紹。

圖1 軟件自動注記高程點后對已有地物的壓蓋示意圖

圖2 高程注記分析示意圖

圖3 矩形搜索方式分析示意圖
建立第1層搜索矩形之后,即可讓高程注記從初始位置(即默認注意位置)開始,在該矩形上以順時針或逆時針的方式按照指定的步長進行搜索,若搜索到某一位置高程注記沒有壓蓋任何地物(包括高程點所在位置的實心圓),則將高程注記位置修改為剛才搜索到的最佳位置,此時立即停止搜索;反之,繼續搜索。如果高程注記搜索完第1層矩形之后仍未查找到最佳位置,則將第1層矩形擴大D(如0.5H)以形成第2層搜索矩形,繼續按照上述方法進行搜索,依此類推直到找到最佳位置為止。實際應用中,一般會設置一個矩形偏離高程點點位的最大距離,若矩形偏離值大于該閾值,則直接將高程注記移回原注記位置,且結束搜索。
此法雖能實現了對高程注記的智能移位,但仍存在一些不足,如高程注記移動存在方向性(即順時針移動和逆時針移動其最終效果不同)。同時,存在高程注記移位的過程中不能保證高程注記與高程點點位的距離始終保持一致等問題。
文獻[6—7]提出了一種基于圓形的搜索方式來實現高程注記智能移位,該方法的智能移位搜索分析如圖4所示。圖中的①、②、③、④這4個矩形分別代表高程注記文字在圓形搜索方式中的4個方向極限位置。
圓形搜索方式是以高程點為圓心,某一偏離距離r為半徑來建立搜索圓。具體的搜索方法與矩形搜索方式類似。

圖4 圓形搜索方式分析示意圖
雖然此法能實現高程注記的智能移位,避免了矩形搜索方式中對某些位置的漏檢測問題,但仍然存在一些問題,如采用圓形搜索方式中需要實時變換高程注記的對齊點,這給日后圖形的批處理帶來了不便。同時,對于采用最小外接矩形上的位置來進行搜索判定增加了程序設計的復雜度。
針對上述矩形搜索和圓形搜索方式中存在的諸多問題[9-10],結合高程注記的具體情況和地形圖圖式(如圖5所示)中對文字注記的相關要求,筆者提出了一種“S”型搜索方式的高程點智能移位算法,同時對無法搜索到合適位置的高程注記進行文字消隱,既能保證高程注記移位后在最小偏離距離中的唯一性,也能滿足對高程注記智能移位的需求,便于地形圖的日后使用。

圖5 地形圖圖式中文字的注記原則
結合圖2、圖5和圖6,“S”搜索方式具體步驟如下:

圖6 “S”型搜索方式示意圖
1)將注記在地形圖中的高程點和高程注記過濾出來放入一個集合中。
2)對該集合中的每一個高程注記,依次計算出其最小外接矩形,利用該最小外接矩形來判定是否存在對已有地物的壓蓋,如果不存在對已有地物的壓蓋,則跳過對該高程注記的處理;若存在對已有地物的壓蓋,則進行后續步驟的處理。
3)若經過2)中的判定,該高程注記存在對已有地物的壓蓋,則繼續進行以下處理和判斷:
a.將高程點的一周360°按照圖6中的方式劃分成Ⅰ、Ⅱ、Ⅲ、Ⅳ 4 個區域,每個區域為90°。
b.利用高程點距離高程注記最小外接矩形之間的距離l為半徑建立一個圓,也可以建立一個橢圓。
c.在建立好搜索圓之后,按照Ⅰ、Ⅱ、Ⅲ、Ⅳ的順序進行最佳位置的“S”型搜索,具體的搜索方式為:首先,將高程注記在Ⅰ中的位置由現在的位置調整到Ⅰ區的最下邊,然后按照某一指定的步長進行移動,該指定步長根據實際情況進行設置。每移動至一個新的位置,需要利用高程注記的最小外接矩形來判定是否存在對已有地物的壓蓋,若不存在對已有地物的壓蓋,則將高程注記移至此位置,同時結束搜索;反之,則繼續按照該步長向前進行搜索。若Ⅰ區搜索完成未查找到最佳位置,則繼續進行Ⅱ區的搜索,若Ⅱ區查找完仍未找到最佳位置,則繼續進行Ⅲ區、Ⅳ區的搜索,從而形成“S”型搜索路線,直到查找到最佳位置為止。
d.若步驟c中查找完第1條“S”型路線未找到最佳位置,則需要將該“S”型路線擴大某一距離D(只需要將初始的圓或橢圓的半徑擴大D)以形成第2條“S”型路線進行繼續查找;若第二條“S”型路線查找完成仍未找到最佳位置,則繼續查找,直到找到最佳位置為止。實際生產工作中,為避免高程注記距離高程點點位過遠而影響高程點的識別,往往需要設置一個最遠偏移距離。
e.在步驟d中,若搜索完規定的最遠偏移距離之后仍未查找到最佳位置,則直接將高程注記放回原位。
地球表面的形態千變萬化,復雜程序不一,對于地物繁多且復雜的地區所成的地形圖中,若想找到一個放置高程注記的最佳位置,其難度系數很高,且不容易找到空白區,因此,若想讓高程注記所壓蓋的地物不進行顯示,可以采用文字消隱來完成。
文字消隱[11-12]的實質是建立一個無色且不透明的實體,將該新生成的實體置于高程注記之下、其他地物實體之上。這樣通過將地物與高程注記文字重疊的部分進行消隱,即可讓圖形顯示更加清晰明了。
根據第1節的詳細介紹,并結合實際的程序設計,“S”型高程注記智能移位的程序流程如圖7所示。

圖7 程序流程
根據2節中對“S”型搜索算法的詳細介紹,利用 ObjectARX .NET[13-15]語言基于 AutoCAD 進行了程序實現。
圖8為“S”型智能移動高程注記的程序界面。用戶可以設置是否對未能找到最佳位置的高程注記進行文字消隱,也可設置高程注記到高程點的最大偏移距離,默認設置為1.0H(H為文字高度)。如果有其他需要還可以在程序中進行設計和實現。確定后,即可采用選擇部分高程注記或對全圖高程注記進行處理等兩種方式來智能處理高程注記。

圖8 程序設計界面
為更直觀地比較采用“S”型智能高程注記移位算法的效果,對圖1中的高程注記進行移位處理,程序處理之后的效果如圖9所示,對無法查找到高程注記最佳位置的高程注記進行文字消隱之后的效果如圖10所示。從圖9和圖10可以看出,該算法不僅能夠實現高程注記對已有地物的智能避讓,同時也保持了圖面美觀,并且高程注記更加合理,降低了識圖的難度。目前該算法已經應用于實際的生產中,取得了良好的效果。

圖9 “S”型智能移位得到的效果圖

圖10 “S”型智能移位并對無法移動的高程注記采用文字消隱所得到的效果圖
通過試驗可知,對于一幅具有500個高程注記的地形圖采用“S”型智能移位算法處理,程序能夠在2 min內完成,程序的主要運行時間花費在查找高程注記的最小外接矩形是否壓蓋已有地物,程序的時間復雜度隨著高程注記的個數、所選擇的步長及所設置的高程注記偏離高程點的最大距離的不同而改變。特別需要注意的是,若智能查找算法中所設置的步長過短,則會嚴重影響程序的運行效率,故應選擇適宜的步長。
本文對已有的矩形搜索算法和圓形搜索算法進行了詳細的對比分析,同時也對“S”型智能移位算法進行了較為詳細的闡述。通過對“S”型智能移位算法在實際地形圖中的處理效果展示和算法的效率分析,充分表明了該算法能夠完全滿足實際生產中對高程注記進行智能移位的需求。該算法的實現效果完全能夠達到,甚至優于手工處理高程注記的效果,結合文字消隱,能夠更加方便合理地處理高程注記對地物的壓蓋。通過實踐,本文方法取得了良好的效果,大大提高了生產效率、降低了生產成本。
[1]何孝瑩,包紅巖,韓顏順.大比例尺掃描地形圖中房屋的識別[J].測繪與空間地理信息,2005,28(4):61-63.
[2]易輝偉,江資斌,周翠竹,等.地形圖矢量化的后處理[J].中國有色金屬學報,2002,12(4):808-811.
[3]唐詩華,李洪玉,謝劭峰.在CAD平臺下實現高程點智能展點的一種方法[J].測繪通報,2006(4):51-53.
[4]付崇江,余代俊,王麗麗.基于.NET平臺的CAD地形圖注記的自動調整[J].工程勘察,2010(3):84-90.
[5]李乃良,楊孝安.基于AutoCAD的地形圖中高程注記的自動移位[J].城市勘測,2008(2):119-121.
[6]楊孝安,王保國.基于CAD平臺的植被符號自動移位[J].城市勘測,2008(1):122-124.
[7]劉斌,唐詩華,李升.AutoCAD中高程注記位置自動識別展點的一種改進方法[C]∥《測繪通報》測繪科學前沿技術論壇論文集.北京:測繪出版社,2008.
[8]中華人民共和國國家質量監督檢驗檢疫總局,中國國家標準化管理委員會.GB/T 20257.1—2007,國家基本比例尺地圖圖式 第1部分:1∶500 1∶1000 1∶2000地形圖圖式[S].北京:中國標準出版社,2008.
[9]龔子楨,花向紅,尹相寶,等.基于AutoLISP的高程點批量修改算法設計與實現[J].測繪通報,2011(4):41-43.
[10]柏捷,顧有兵.高程點與高程注記的匹配及其應用[J].城市勘測,2007(5):88-89.
[11]顧有兵.CASS圖形中高程注記的消隱處理[J].城市勘測,2010(6):111-112.
[12]黃祖登,柳華橋.高程注記自動挪位與消隱的程序實現[J].才智,2012(3):65-67.
[13]曾洪飛,張帆,盧擇臨.AutoCAD VBA& VB.NET開發基礎與實例教程[M].北京:中國電力出版社,2009.
[14]張帆,鄭立楷,王華杰,等.AutoCAD VBA開發精彩實例教程[M].北京:清華大學出版社,2004.
[15]龔子楨,花向紅,徐秀川,等.在CAD平臺下實現房屋屬性自動修改的方法[J].測繪通報,2011(9):80-82.