牛寶云
摘 要:建立了用CAD的屬性塊進行土地圖地塊面積標注的基本思路,并給出編程實現(xiàn)輸入、編輯、整理的主要邏輯過程和關(guān)鍵代碼。
關(guān)鍵詞:地類圖斑;面積注記;屬性塊
在勘測定界圖繪制中,要求注記各地塊的面積、地類、地塊號、權(quán)屬單位名稱,或者其中幾項。不同情況和需求下,標注面積的單位可能是畝、平方米或公頃。在勘測定界報告中,需要按權(quán)屬、按地塊分別對各地類進行統(tǒng)計生成各種表格。在土地征用劃撥時,更需要根據(jù)實測地物情況,結(jié)合土地利用現(xiàn)狀圖對征地范圍線進行調(diào)整,從而多次反復(fù)地進行地類面積統(tǒng)計。為使上述工作中作到準確有效且成果清晰直接,最好的解決途徑就是通過編程實現(xiàn)很方便地進行地類面積注記的生成、修改、整飾和統(tǒng)計。
多數(shù)作業(yè)單位的圖件制作均采用AutoCAD及其二次開發(fā)的軟件,一般軟件中面積的注記都是生成文本,各文本之間不存在必需的關(guān)聯(lián),且修改、整飾等操作很難統(tǒng)一完成,即使編程也存在難以構(gòu)造選擇集的問題。盡管有些軟件將這些軟件形成一個編組,但仍不能有效地統(tǒng)一地管理它們,而且在有些情況下,編組信息還會丟失。利用屬性塊進行地類圖斑注記就能很好的來解決這一問題,從而大大提高工作效率和準確性。
一、屬性塊的概念
屬性塊是指在一個塊的定義中,以Attdef命令加入屬性(Attrribute),其各種操作均與單行文類似,但在塊引用中的文本只能炸開后方可修改,屬性則可在塊內(nèi)修改其內(nèi)容、位置、大小、字型等。筆者在工作中使用的屬性塊的定義如下:
其中權(quán)屬、地塊號、地類號比較明確,平米是為方便保存該注記所指向地塊的實際面積的平方米值,它具有不可見的特性,在插入的塊引用中,即不顯示也不打印。而面積是指顯示值,不同單位和保留位數(shù)要求可變化,具體顯示值按平米值計算,避免了精度損失。
二、程序結(jié)構(gòu)
以AutoCAD VBA為編程語言,對程序編制的思路和關(guān)鍵代碼進行說明。
(一)輸入
各地塊(包括線狀地物和零星地物)的面積一般可能有兩種來源,一是根據(jù)實測數(shù)據(jù)繪制的地類邊界,該邊界應(yīng)為一閉合多義線pline,可直接在程序中訪問其entPline.Area屬性獲得。二是來源于全國第二次土地調(diào)查數(shù)據(jù)庫中整體或裁剪過的部分圖斑,通過DXF格式轉(zhuǎn)換而成。轉(zhuǎn)換過程中,將數(shù)據(jù)庫中各圖斑或線狀地物的標識碼等加入到相應(yīng)對象的高程等屬性中,可以間接獲取其面積等多項數(shù)據(jù)。
注記的生成是將事先做好的塊定義插入到適當(dāng)位置,同時獲取該對象的訪問句柄(entBlock),進而通過objAtts = entBlock.GetAttributes獲得該塊的屬性集合,例如objAtts(1)便指向地塊號,通過objAtts(1).TextString可以讀寫其字符串值。
(二)編輯和整飾
如果宗地范圍較小,且歸一個行政權(quán)屬時,一般可不標注權(quán)屬名,而在分數(shù)線以上只標注地塊號。對于大范圍情況,則應(yīng)在分子位置標地塊號,把權(quán)屬名置于其上。而標注的面積可為平米、畝、公頃,具體保留的位數(shù)也常有變化。這些標注的字體就為2.4mm高,但如果是國有土地,則應(yīng)將權(quán)屬名稱的字體擴為4.0mm。所以程序應(yīng)該提供相應(yīng)的過程,通過遍歷各注記塊,完成這些功能,達到一定的圖面效果。約定Att3為注記塊的權(quán)屬名稱屬性,一般可用到下列屬性的設(shè)置:
Set Att3 = objAtts(3)
Att3.Height = dblScale * 4
Att3.Alignment = acAlignmentBottomLeft
Att3.TextAlignmentPoint = pntIns
Att3.ScaleFactor = 0.8
Att3.Visible = True
Att3.Update
上例中,pntIns為一雙精度型三維數(shù)組,是根據(jù)entBlock的插入點計算的某屬性的插入位置。
(三)面積表的統(tǒng)計
將面積注記形成一個整體的最大優(yōu)勢便是可以進行方便的計算和統(tǒng)計,假定圖面中的注記沒有錯誤,可以認為圖面中各注記塊分別代表各地塊、線狀地物等的權(quán)屬、面積、地類、地塊號等,可以對全部和部分地塊進行的面積統(tǒng)計。首先遍歷各注記塊,獲得涉及到的權(quán)屬單位數(shù)。設(shè)定一個雙精度數(shù)組,以權(quán)屬單位數(shù)為行數(shù),以土地分類的所有類別為列數(shù),經(jīng)過讀取各注記的地類及面積,可以將各權(quán)屬各地類的面積值按位置累積到該數(shù)組的相應(yīng)位置。同時統(tǒng)計各種地類的面積和,若為零的便可剔除掉(不輸出)。
三、結(jié)語
相對于一般的地形圖,各種土地圖要包含更多的信息,應(yīng)用屬性所提供的功能,可使各種信息即清楚地表達,又能做到不丟失、不重復(fù),再編寫一些短小有效的代碼,可以大大提高日常工作的效率和準確度。
參考文獻:
[1]佟士懋,邢芳芳,夏介霄,等. AutoCAD ActiveX/VBA二次開發(fā)技術(shù)基礎(chǔ)及應(yīng)用實例 [M].北京:國防工業(yè)出版社,2006.