吳祖程,陳永就
(1.惠州市惠陽區國土資源測繪隊,廣東 惠州 516211;2.廣東省國土資源測繪院,廣東 廣州 510500)
目前,AutoCAD在測繪行業得到普遍應用,數字化測圖主要是以AutoCAD為平臺進行二次開發的制圖軟件系統,所以地圖縮編也大多在AutoCAD軟件中進行。對于高程點的抽稀,南方CASS成圖系統已提供了較為合理及快速方法,而對于植被符號的抽稀,則是通過植被符號填充輔助層(骨架線ASSIST層)改變圖形比例尺后進行重新填充,但當骨架數據屬性丟失后,就無法進行符號自動填充;對于丟失骨架線的植被數據,則需要重新圈定植被范圍線后才可以進行填充處理,耗時費力。通過分析,利用點抽稀的方法,可以實現植被符號的抽稀。
按距離值在圖面中進行植被符號的抽稀方法,是在AutoCAD選定的范圍內,將所有的植被符號放入選擇集中,通過遍歷每一個植被符號并建立一定距離的搜索圓,對搜索圓內的植被符號進行圖面刪除并從選擇集中移除。使用圖面距離抽稀方法的特點是經過抽稀的地形圖,任意植被間兩點的距離值不小于給定的間距值。
此方法是利用南方CASS成圖系統本身所提供的高程點抽稀功能,通過編制程序進行數據交換,實現快速、自動的植被抽稀。其方法是:首先將植被符號提取到新文件中,將植被根據代碼值寫入植被符號的標高,滿足高程點抽稀的數據要求,并自動輸出數據文件;其次利用高程點過濾功能,指定一定的過濾值(即過濾間距),重新生成點位;最后將點的屬性(即標高值)作為符號屬性重新繪制過濾后的植被符號。
為驗證兩種抽稀方法的效果和效率,使用Visual Basic語言編制了程序,對同一植被數據文件進行處理,通過效果及處理所耗時間對比,驗證兩種方法的優劣。
首先將ZBTZ圖層中的植被符號全部提取到新建的文件中,作為過渡數據。程序的編制首先建立存儲數據需要的選擇集:
Dim SSetObj As IAcadSelectionSet
Set SSetObj = CreatNEWsset("SS1")
Call BuildFilter(Filtertype, Filterdata, 8, "ZBTZ", 0,"Insert")
SSetObj.Select acSelectionSetAll, , , Filtertype,Filterdata
其次通過遍歷選擇集中的每一個實體(即植被符號),根據一定的間距值,建立搜索圓,對間距范圍內的植被符號進行刪除,并從選擇集中移除,實現代碼如下(部分):
Curpnt = CLobj.InsertionPoint‘當前植被符號插入點
For FenJiao = 0 To 330 Step 30 ‘建立搜索圓所需坐標
Acut = FenJiao * 0.01745
SouSuo = AcadApp.ActiveDocument.Utility.PolarPoint(Curpnt, Acut, 30) ‘范圍30米Addpolypnt(cum* 2 + cum) = sousuo(0): Addpolypnt(cum *2 + 1 + cum)= SouSuo(1)
Addpolypnt(cum *2 + 2 + cum) = 0
Cum = Cum + 1
Next
Set BlockObj = CreatNEWsset("SS2")
Call BuildFilter(Blofiltertype, Blofilterdata, 0, "insert",8, "ZBTZ")
BlockObj.SelectByPolygon acSelectionSetCrossing Polygon, addpolypnt, Blofiltertype, Blofilterdata
BlockObj.Erase ‘刪除搜索圓內的植被符號
將需刪除的植被符號從選擇集中刪除后,循環次數會逐漸減少,實際遍歷次數會大大小于植被符號的個數,進而減小運行時間。
同樣,將植被符號提取到新文件中,通過程序將每一類型的植被符號根據屬性值(數字型)賦予到標高值中,然后將數據輸出到用作過渡的數據文件中,首先在程序中定制各種符號的塊名和屬性:
Dim ZbfhStr(0 To 77) As String
ZbfhStr(0) = "2111001,gc120,稻田符號"
ZbfhStr(1) = "2114001,gc123,菜地符號"
…
通過程序調用南方CASS高程點的展繪功能,根據一定的間距和比例尺,將抽稀后的點位展繪到圖上。展繪點的實際屬性為高程點位,但可以通過原先設定的標高值(存放植被符號的屬性)來判斷植被符號的屬性。通過程序的進一步處理,根據展繪的點位和標高重新標繪植被符號,并利用定制的屬性表恢復植被的屬性,部分代碼如下:
(
For OPT = 0 To Pcp - 1
For CCL = 0 To 77
If UCase(Bname(OPT)) = UCase(UCase(FindStrForD H(ZbfhStr(CCL), 2))) Then
Sxok$ = FindStrForDH(ZbfhStr(CCL), 1)
If Len(Sxok$) = 7 Then
Sxok$ = Left(Sxok$, 6) & "-1"
End If
AcadApp.ActiveDocument.SendCommand"TKTOTK" & vbCr & "5" & vbCr & Bname(OPT) &vbCr & Sxok$ & vbCr
Exit For
End If
Next
…
為測試2種方法執行數據處理的效果及效率,筆者選擇取了一塊約8 km2的地形圖數據,其植被符號個數為118 397個(見圖1、圖2),按照20 m的抽稀間隔,通過選擇集方式進行編程實現,抽稀后的植被個數為13 332個,抽稀后的植被個數比例為11.26%,抽稀時間為35 min42 s;利用點位過濾功能實現植被抽稀的方法經抽稀后的植被個數為13 253個(按1︰ 2 000比例尺進行抽稀,符號抽稀距離為20 m,抽稀后的效果見圖3),抽稀植被個數比例為11.19%,抽稀時間為6 min4 s。2種方法執行后的數據結果相當,抽稀間隔均勻合理。



從計算機運行效率來看,第一種方法占用太多的內存資源,隨著運行次數的增加,運行速度逐漸減慢,數據處理所需的時間較長。第二種方法的耗時約是第一種方法的1/6,效果與第一種方法相差無幾,效率明顯提升。這種方法不需考慮植被符號是否有屬性,根據植被的符號樣式進行分類抽取,在實際應用中更為合理。
以上2種方法都是根據一定的間距值對所有符號進行整體分布式的抽稀,依據不同的比例尺,小面積的植被區域會出現完全被抽除的情況,即沒有了植被符號。雖然滿足地形圖對植被間距的要求,但在圖面的合理性方面仍存在著不足,對于相鄰植被間的符號保留問題,值得進一步探討。
圖式[S].
[2]張正祿.工程測量學[M].武漢:武漢大學出版社,2002
[3]葉海青.土木工程測量[M].上海:同濟大學出版社,2006
[4]求是科技.Visual Basic6.0程序設計與開發技術大全[M].北京:人民郵電出版社,2004
[5]李長勛.AutoCAD VBA程序開發技術[M].北京:國防工業出版社,2004
[6]AutoCAD Asia Pte Ltd.Autodesk地理信息系統解決方案[M].北京:電子工業出版社,2011
[7]GB/T149112-2005.l︰500、l︰1 000、1︰2 000外業數字測圖技術規程[S].