劉 陸,梁志強(qiáng)
(黑龍江省林業(yè)監(jiān)測規(guī)劃院 ,哈爾濱 150080)
ArcGIS制圖工具有很方便的制圖功能,可以實(shí)現(xiàn)圖斑屬性標(biāo)注、分類著色、指北針、圖例、比例尺及公里網(wǎng)等功能,可以滿足林業(yè)業(yè)務(wù)生產(chǎn)制圖工作的需要,如森林撫育制圖、營造林規(guī)劃設(shè)計(jì)圖、林業(yè)圖斑現(xiàn)狀分布圖等圖件的制作。
ArcGIS圖斑屬性標(biāo)注方法是通過加載林業(yè)調(diào)查空間要素,右鍵單擊矢量圖層,查看屬性,在標(biāo)注選項(xiàng)中選擇文本字符串確定標(biāo)注字段或者通過標(biāo)注表達(dá)式加載或輸入標(biāo)注腳本(VBScript、Python、JScript)內(nèi)容,并直接定義標(biāo)注式樣(字體、字號、字形、顏色等)[1]實(shí)現(xiàn)圖面信息的標(biāo)注。文本字符串僅能簡單標(biāo)注一個(gè)字段的內(nèi)容,而表達(dá)式可以進(jìn)行復(fù)雜樣式的多字段標(biāo)注[2]。林業(yè)制圖中為了在圖紙上更多的顯示數(shù)據(jù)信息,大多采用表達(dá)式形式的分式標(biāo)注的方式,在成圖效果上也更為美觀。然而復(fù)雜標(biāo)注表達(dá)式在ArcGIS中是使用腳本代碼加載和解析的方式來實(shí)現(xiàn),對于沒有程序開發(fā)經(jīng)驗(yàn)的人來說很難讀懂和修改,尤其是林業(yè)常用的分式表達(dá)式格式形式多樣,字段數(shù)不確定,只有真正理解了表達(dá)式的構(gòu)成原理和編碼規(guī)則才可以實(shí)現(xiàn)正確美觀的標(biāo)注腳本,但通用性很小,遇到新的情況就需要進(jìn)行修改,操作復(fù)雜、效率低下,缺少通用性。
圖1 ArcGIS標(biāo)注操作界面Fig.1 ArcGIS Callout Operation Interface
ArcGIS對標(biāo)注表達(dá)式有詳細(xì)的腳本幫助文檔,對于沒有程序研發(fā)經(jīng)驗(yàn)的人來說很難理解,也很難寫好標(biāo)注腳本內(nèi)容。
圖2 標(biāo)注表達(dá)式VBScript腳本代碼Fig.2 Annotation Expression VBScript Script Code
ArcGIS注記表達(dá)式文件擴(kuò)展名為lxp,本文中使用VBScript編碼,采用的是Unicode編碼方式的文本文件。在注記表達(dá)式VBScript中為了實(shí)現(xiàn)分式效果使用vbNewLine實(shí)現(xiàn)換行;使用
采用C#進(jìn)行編碼,布局通用生成工具界面,根據(jù)相應(yīng)林業(yè)業(yè)務(wù)工作的標(biāo)注需要自行設(shè)置分式各區(qū)域字段列表,生成ArcGIS標(biāo)注表達(dá)式lxp文件,在極大地提升繪圖效率的基礎(chǔ)上,也有力地保障了地圖中各項(xiàng)數(shù)據(jù)信息的科學(xué)性和準(zhǔn)確性[3]。
圖3 ArcGIS標(biāo)注表達(dá)式自動(dòng)生成工具Fig.3 Automatic ArcGIS Label Expression Generation Tool
1)讀取林業(yè)矢量數(shù)據(jù)表結(jié)構(gòu)
選擇林業(yè)矢量數(shù)據(jù)表,將數(shù)據(jù)表的字段內(nèi)容讀取到字段名稱列表中,便于后續(xù)字段拖拽操作。
2)設(shè)置分式內(nèi)容
鼠標(biāo)左鍵選擇字段名列表中的字段,使用拖拽方式,將相應(yīng)字段拖拽到分式的相應(yīng)區(qū)域列表中,每一部分可以拖拽多字段,但不允許拖拽字段重復(fù)至于多個(gè)分式區(qū)域,可雙擊分式區(qū)域的字段名稱進(jìn)行移除,系統(tǒng)會(huì)根據(jù)所添加分式區(qū)域字段列表,對標(biāo)注表達(dá)式實(shí)例進(jìn)行刷新重新組合樣式。
3)設(shè)置字段間隔符號
單獨(dú)區(qū)域如果為多字段,需要設(shè)置字段間隔符號,保證字段內(nèi)容被隔開,如“林班-小班”樣式等。
4)生成表達(dá)式lxp文件
lxp文件的生成采用C#讀寫文本文件的方式進(jìn)行操作,編碼方式必須采用Encoding.Unicode方式,否則在加載標(biāo)注腳本時(shí)候,ArcGIS無法識別其數(shù)據(jù)格式。
圖4 C#讀寫lxp文件部分代碼Fig.4 C # Read and Write Lxp File Part of the Code
5)ArcGIS導(dǎo)入lxp文件
使用ArcGIS軟件將林業(yè)圖斑矢量加載至GIS中,按照屬性標(biāo)注方法,加載生成的圖斑標(biāo)注lxp文件,實(shí)現(xiàn)標(biāo)注操作[4]。
圖5 林業(yè)制圖標(biāo)注效果Fig.5 Forestry Icon Note Effect
本文通過對ArcGIS制圖功能在林業(yè)制圖工作中使用的復(fù)雜標(biāo)注方式進(jìn)行分析總結(jié),采用軟件設(shè)計(jì)的方法研發(fā)通用標(biāo)注表達(dá)式生成工具,使林業(yè)制圖人員可以通過標(biāo)注表達(dá)式生成工具針對具體制圖業(yè)務(wù)的標(biāo)注方式來設(shè)置標(biāo)注字段和標(biāo)注樣式,并自動(dòng)生成ArcGIS標(biāo)注表達(dá)式lxp文件,制圖人員無需了解腳本代碼的知識就可以操作,降低了林業(yè)制圖標(biāo)注操作的復(fù)雜度,提高工作效率。