吳祖程,陳永就
(1.惠州市惠陽區(qū)國土資源測繪隊,廣東 惠州 516211;2.廣東省國土資源測繪院,廣東 廣州 510500)
目前,AutoCAD在測繪行業(yè)得到普遍應用,數(shù)字化測圖主要是以AutoCAD為平臺進行二次開發(fā)的制圖軟件系統(tǒng),所以地圖縮編也大多在AutoCAD軟件中進行。對于高程點的抽稀,南方CASS成圖系統(tǒng)已提供了較為合理及快速方法,而對于植被符號的抽稀,則是通過植被符號填充輔助層(骨架線ASSIST層)改變圖形比例尺后進行重新填充,但當骨架數(shù)據(jù)屬性丟失后,就無法進行符號自動填充;對于丟失骨架線的植被數(shù)據(jù),則需要重新圈定植被范圍線后才可以進行填充處理,耗時費力。通過分析,利用點抽稀的方法,可以實現(xiàn)植被符號的抽稀。
按距離值在圖面中進行植被符號的抽稀方法,是在AutoCAD選定的范圍內,將所有的植被符號放入選擇集中,通過遍歷每一個植被符號并建立一定距離的搜索圓,對搜索圓內的植被符號進行圖面刪除并從選擇集中移除。使用圖面距離抽稀方法的特點是經(jīng)過抽稀的地形圖,任意植被間兩點的距離值不小于給定的間距值。
此方法是利用南方CASS成圖系統(tǒng)本身所提供的高程點抽稀功能,通過編制程序進行數(shù)據(jù)交換,實現(xiàn)快速、自動的植被抽稀。其方法是:首先將植被符號提取到新文件中,將植被根據(jù)代碼值寫入植被符號的標高,滿足高程點抽稀的數(shù)據(jù)要求,并自動輸出數(shù)據(jù)文件;其次利用高程點過濾功能,指定一定的過濾值(即過濾間距),重新生成點位;最后將點的屬性(即標高值)作為符號屬性重新繪制過濾后的植被符號。
為驗證兩種抽稀方法的效果和效率,使用Visual Basic語言編制了程序,對同一植被數(shù)據(jù)文件進行處理,通過效果及處理所耗時間對比,驗證兩種方法的優(yōu)劣。
首先將ZBTZ圖層中的植被符號全部提取到新建的文件中,作為過渡數(shù)據(jù)。程序的編制首先建立存儲數(shù)據(jù)需要的選擇集:
Dim SSetObj As IAcadSelectionSet
Set SSetObj = CreatNEWsset("SS1")
Call BuildFilter(Filtertype, Filterdata, 8, "ZBTZ", 0,"Insert")
SSetObj.Select acSelectionSetAll, , , Filtertype,Filterdata
其次通過遍歷選擇集中的每一個實體(即植被符號),根據(jù)一定的間距值,建立搜索圓,對間距范圍內的植被符號進行刪除,并從選擇集中移除,實現(xiàn)代碼如下(部分):
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 ‘刪除搜索圓內的植被符號
將需刪除的植被符號從選擇集中刪除后,循環(huán)次數(shù)會逐漸減少,實際遍歷次數(shù)會大大小于植被符號的個數(shù),進而減小運行時間。
同樣,將植被符號提取到新文件中,通過程序將每一類型的植被符號根據(jù)屬性值(數(shù)字型)賦予到標高值中,然后將數(shù)據(jù)輸出到用作過渡的數(shù)據(jù)文件中,首先在程序中定制各種符號的塊名和屬性:
Dim ZbfhStr(0 To 77) As String
ZbfhStr(0) = "2111001,gc120,稻田符號"
ZbfhStr(1) = "2114001,gc123,菜地符號"
…
通過程序調用南方CASS高程點的展繪功能,根據(jù)一定的間距和比例尺,將抽稀后的點位展繪到圖上。展繪點的實際屬性為高程點位,但可以通過原先設定的標高值(存放植被符號的屬性)來判斷植被符號的屬性。通過程序的進一步處理,根據(jù)展繪的點位和標高重新標繪植被符號,并利用定制的屬性表恢復植被的屬性,部分代碼如下:
(
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種方法執(zhí)行數(shù)據(jù)處理的效果及效率,筆者選擇取了一塊約8 km2的地形圖數(shù)據(jù),其植被符號個數(shù)為118 397個(見圖1、圖2),按照20 m的抽稀間隔,通過選擇集方式進行編程實現(xiàn),抽稀后的植被個數(shù)為13 332個,抽稀后的植被個數(shù)比例為11.26%,抽稀時間為35 min42 s;利用點位過濾功能實現(xiàn)植被抽稀的方法經(jīng)抽稀后的植被個數(shù)為13 253個(按1︰ 2 000比例尺進行抽稀,符號抽稀距離為20 m,抽稀后的效果見圖3),抽稀植被個數(shù)比例為11.19%,抽稀時間為6 min4 s。2種方法執(zhí)行后的數(shù)據(jù)結果相當,抽稀間隔均勻合理。
從計算機運行效率來看,第一種方法占用太多的內存資源,隨著運行次數(shù)的增加,運行速度逐漸減慢,數(shù)據(jù)處理所需的時間較長。第二種方法的耗時約是第一種方法的1/6,效果與第一種方法相差無幾,效率明顯提升。這種方法不需考慮植被符號是否有屬性,根據(jù)植被的符號樣式進行分類抽取,在實際應用中更為合理。
以上2種方法都是根據(jù)一定的間距值對所有符號進行整體分布式的抽稀,依據(jù)不同的比例尺,小面積的植被區(qū)域會出現(xiàn)完全被抽除的情況,即沒有了植被符號。雖然滿足地形圖對植被間距的要求,但在圖面的合理性方面仍存在著不足,對于相鄰植被間的符號保留問題,值得進一步探討。
圖式[S].
[2]張正祿.工程測量學[M].武漢:武漢大學出版社,2002
[3]葉海青.土木工程測量[M].上海:同濟大學出版社,2006
[4]求是科技.Visual Basic6.0程序設計與開發(fā)技術大全[M].北京:人民郵電出版社,2004
[5]李長勛.AutoCAD VBA程序開發(fā)技術[M].北京:國防工業(yè)出版社,2004
[6]AutoCAD Asia Pte Ltd.Autodesk地理信息系統(tǒng)解決方案[M].北京:電子工業(yè)出版社,2011
[7]GB/T149112-2005.l︰500、l︰1 000、1︰2 000外業(yè)數(shù)字測圖技術規(guī)程[S].