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