標注是顯示在地圖上的文字信息,它是出圖中不可或缺的重要元素。標注的樣式豐富,並且放置位置靈活,因此帶來了對標注控制的難度。例如地質圖里的上下標,或是一些分式的標注,就必須使用代碼編程來實現。這篇文章就主要結合幾個實例來討論一下標注的使用技巧,以及在ArcGIS軟件中的實現。
一、上下標
在地質圖中經常會使用到上下標的文字,在ArcGIS幫助中可以查看到上下標的寫法如下所示:
上標:"<SUP>" & [上標字段] & "</SUP>"
下標:"<SUB>" & [下標字段] & "</SUB>"
但是如果同時需要使用上下標的時候,就會出現這樣的顯示效果
,上下標不會對齊,如果想顯示的美觀一些,就需要使用到高級的標注技巧,讓Maplex這個擴展模塊來幫我們解決問題了。
關於Maplex:Maplex是桌面軟件的一個擴展模塊,ArcGIS的Maplex擴展模塊在ArcMap中增加了高級的標注布局和沖突檢測的方法。使用Maplex可以節約很多的時間。實驗表明,在地圖上標注,使用Maplex至少可以節約50%的時間。Maplex是GIS制圖的一個重要工具,它提供了很好的文字渲染和具有打印質量的文字布局方式。
上下標的解決方案如下:
1. 在數據的表格中將上下標內容存儲在一個字段中,用空格分開,例如“上標 下標”;
2. 在Data Frame(數據框)的屬性對話框中把標注引擎調整為“ESRI Maplex Label Engine”;
3. 在標注的表達式里敲入以下代碼
[標注字段]&"<SUP>" & [上下標字段] & "</SUP>"
這句代碼僅僅采用了上標的關鍵字,它會把現在的上下標統一顯示在上標的位置,下面還需要調整標注的放置屬性;
4. 點擊Placement Properties—Fitting Strategy—Stack Label—Option,進行如下設置
得到的效果圖如下所示,因為上下標字符的長度不同,右對齊尚不能達到很完美的效果,但是還是改進了許多。
二、分式標注
分式標注是又一個難點,ArcGIS里並不能直接去構造分式,我們可以想辦法把分子加下划線來表示,但對於分母的長度比分子長出很多的情況,顯示效果就非常不理想。因此,最好能夠動態的判斷分子和分母的長度,按照最長的長度來確定分式橫線的長度,代碼如下所示(VBScript):
Function FindLabel ( [分子字段] , [分母字段] )
dim a,b,c
b=len ( [分子字段] )
c=len ( [分母字段] )
if (b>c) then
a=b
else
a=c
end if
FindLabel =[分子字段] & vbnewline& string(a*0.5,"—") & vbnewline & [分母字段]
End Function
對於代分數的話,也可以用類似的方法,只需再添加一個表示整數的字段,代碼如下:
Function FindLabel ( [整數字段] , [分子字段] , [分母字段] )
dim a,b,c,d
a=len ( [整數字段] )
b=len ( [分子字段] )
c=len ( [分母字段] )
if (b>c) then
d=b
else
d=c
end if
FindLabel =[分子字段] & vbnewline& [整數字段] & string(d*0.5,"—") & vbnewline & space(a) & [分母字段]
End Function
需要說明的是,這段代碼的效果還不能將標注調整到最好的顯示效果,但如果你使用了Maplex標注引擎,就會發現效果的改善,如下圖所示。

三、分類標注
分類標注適用於為同一圖層中的不同要素設置不同的標注樣式,例如高速公路和環路、普通道路的字體為不同的大小和顏色。而標注默認會應用於整個圖層,這就需要我們為默認的標注增加一個分組,在圖層屬性對話框中設置標注的方法為“Define classes of features and label each class differently”,點擊Add增加分組(需要幾種不同的樣式就設置幾個分組),並且要為每個分組設置SQL語句進行過濾。然后為每個組設置不同的標注樣式。

總結:由於標注是動態放置,且樣式可以通過VBScript和JScript來設置,因而對標注的管理非常靈活。雖然經過標注技巧和Maplex的優化能夠將大部分標注以最優的位置顯示,但如果期望對某些單獨修改,可以將標注(Label)轉換為注記(Annotation)。
