劉 波,趙登文,李 恒,陳虹雨,管 艷
(成都頡達科技有限公司,四川 成都 610083)
植被符號塊是數(shù)字地形圖的重要組成部分,在面狀植被符號塊繪制時,制圖軟件可根據(jù)行列間距進行均勻繪制,圖面比較美觀。然而在面狀區(qū)域內(nèi)植被符號塊可能與文字注記、高程點、等高線、田埂、陡坎等圖形要素相互壓蓋。現(xiàn)有基本的數(shù)字地形圖生產(chǎn)軟件有南方CASS、MicroStation、清華山維、EPS 等,都只具有地形圖生產(chǎn)的基本功能。而這些基本的功能模塊對數(shù)字地形圖中圖面壓蓋處理顯得極其困難,不能對數(shù)字地形圖中的圖面問題如數(shù)字地形圖的植被符號快壓蓋問題進行檢查或處理,只能依靠人工目視檢查或修改。因為人工核查費時費力,也很難保證核查到每一個植被符號塊。在眾多實踐過程中,也有一些專家、學者和技術(shù)人員使用C++、VBA、lisp、FME 等編寫程序[1-4],實現(xiàn)在圖上一定區(qū)域內(nèi)分析植被符號塊周邊是否有空間插入植被符號塊且不與其他圖形要素相互壓蓋。實現(xiàn)相關功能的具體算法中,涉及植被符號塊所占用空間的判定及通過循環(huán)進行空間位置的搜索,其中角度移動增量、距離步長、搜索范圍等值的設定對于程序運行效率有較大影響,選擇合適的角度移動增量、距離步長、搜索范圍閾值能夠較大提高作業(yè)效率。
在數(shù)字地形圖中,植被符號塊通常是一個塊,尤其是在南方Cass 制圖軟件中,不同類型的植被符號塊有固定的編碼,方便對各種類型的植被進行針對性處理。
針對一個植被符號塊是否與其他圖元相互壓蓋,可采用如下兩種判定標準:①植被符號塊的外接矩形范圍與其他圖元相互壓蓋。②植被符號塊的組成部分凸點與其他圖元相互壓蓋。此兩種類型所對應的空間范圍稍有差別,第一種判定方式對空間位置要求更高,更難找到合適位置移動對應的符號塊,導致程序處理效果稍差,如圖1 所示。
圖1 植被符號塊所占空間范圍
在lisp 程序中,可以由上圖所示植被符號塊周邊紅線的頂點坐標組成的鏈表構(gòu)造選擇集[5],如果選擇集中有元素,則認為植被符號塊與其他圖元相互壓蓋。
針對具體圖形中的植被符號塊,搜索其周邊是否有空間位置,通常采用設定角度移動增量DA、距離步長DR、搜索范圍閾值三個參數(shù)進行處理。如給定角度移動增量DA=45°、距離步長DR=0.5m、搜索范圍閾值=2m,即可在編程時使用循環(huán)語句逐一查看植被符號塊插入點周圍2m 范圍內(nèi)4 個同心圓環(huán)上與圓心連線的角度是(0°、45°、90°、135°、180°、225°、270°、315°)的位置是否有空白空間完整插入植被符號塊且不壓蓋其他圖元。當搜索到滿足要求的空白區(qū)域時,移動植被符號塊到該位置,針對該植被符號塊的循環(huán)搜索結(jié)束。當循環(huán)達到搜索范圍閾值時也未找到合適空間時,則在當前參數(shù)情況下認為該植被符號塊周邊2m 范圍內(nèi)無合適空間,程序不對該圖元進行處理,待整個圖中的植被符號塊搜索完成后,人工再進行核查。
判斷植被符號塊是否壓蓋的主要lisp 程序代碼如下。
;ss 是植被符號塊構(gòu)造的選擇集,i 是從0 開始用于循環(huán)的計數(shù)值
上文中提到的“自定義函數(shù),用以獲取一個多邊形的閉合范圍的頂點鏈表,用于構(gòu)造選擇集”,針對不同
符號塊形狀及頂點特性需要特別編制代碼,本文實驗中采用的自定函數(shù)具體內(nèi)容如下。
;程序中設定了22 中符號塊的處理方式,此處不再一一列出代碼
根據(jù)分析,角度移動增量DA、距離步長DR、搜索范圍閾值都可能影響程序運行效率,本文實驗中探討的情況如下。
(1)實驗過程中采用的搜索范圍閾值設定為2m。實驗用的CAD 圖為1:500 比例尺,植被符號塊間距設定為10m,如果兩個相鄰植被符號塊同時相向移動2m,則距離變?yōu)?m,不宜靠得更近。
(2)采用固定角度增量方式,一個圓周為360°,可采用22.5°作為角度增量,即16 個方位進行固定搜索。此種方式每個距離步長的最多搜索次數(shù)為16 次。
(3)采用角度增量與搜索半徑相關聯(lián)的方式,如本文實驗中設定:搜索半徑在0~0.5m 時,DA=0.35(弧度);搜索半徑在0.5~1m 時,DA=0.3(弧度);搜索半徑在1~1.5m 時,DA=0.25(弧度);搜索半徑在1.5~2m 時,DA=0.2(弧度)。一個圓周約為6.28(弧度),采用弧度方式方便程序計算。此種方式,不同搜索半徑對應的搜索次數(shù)可能是17、20、25、31 次。
(4)根據(jù)2m 搜索范圍閾值,距離步長DR 選擇了0.1m、0.2m、0.3m、0.4m、0.5m 共計5 個值。
運用前文所述植被符號塊與其他圖元相互壓蓋的第二種判定方法,可以準確畫出植被符號塊占用空間位置的頂點并畫出封閉圖形,如圖2 所示。
圖2 植被所占空間分析
實驗用1:500 地形圖,圖中有729 處植被符號塊,共發(fā)現(xiàn)565 處植被符號塊與其他圖元存在相互壓蓋的情況。經(jīng)過多次實驗,程序移動的壓蓋植被符號塊數(shù)量最少為275 個、最多為299 個,分別占需要處理的植被符號塊百分比為48.67%、52.92%。對于可以處理和未能處理的植被符號塊,程序運行效果如圖3 所示。
圖3 程序運行效果
在程序中設定不同的角度移動增量DA、距離步長DR、搜索范圍閾值參數(shù),程序運行時間與處理數(shù)量對比情況如圖4 所示。
圖4 程序運行時間與處理數(shù)量對比
通過設定不同參數(shù)值進行多次實驗得出以下結(jié)論。
(1)采用固定角度增量,距離步長設定為0.5m,運行時間最短為14.48min。
(2)采用變角度增量,距離步長設定為0.1m,運行時間最長為68.53min。
(3)采用固定角度增量的平均處理個數(shù)為286,采用變角度增量的平均處理個數(shù)為288。
通過在實際項目中編程解決植被符號塊與其他圖元相互壓蓋問題,并分析影響程序運行效率的因素,修改關鍵參數(shù)進行多次實驗,得出適用于1:500 地形圖、植被符號塊間隔為10m 的一組參數(shù),同時發(fā)下其他問題總結(jié)如下。
(1)距離步長增大時,程序運行時間將縮短,同時程序能夠正確處理的植被符號塊壓蓋問題數(shù)量也將減少。
(2)變角度增量與固定角度增量兩種模式,處理的植被符號塊壓蓋問題數(shù)量、程序用時相差不大。
(3)1:500 地形圖中,自動插入的植被符號塊間隔為10m 時,距離步長0.3~0.4m 是比較合適的一組參數(shù)。
(4)如果不考慮時間問題,選用更小距離步長能使程序自動處理更多植被符號塊壓蓋問題。
(5)本文只采用了一種變角度增量的方式,采用其他變角度增量方式可能一定程度提升程序運行效率。已有的算法主要是通過循環(huán)進行逐一查找,通過人工智能、圖形識別等其他方法有可能進一步提升效率。
本文的實驗獲得了較理想的效果,采用本文所提供的建議參數(shù),能提升程序的運行效率。這些思路方法對其他類似的程序運行效率提升具有一定參考價值。