前言

标注是显示在地图上的文字信息,是出图中不可或缺的重要元素,为了标注的样式丰富,摆放的位置灵活,因此给制图出图带来不少难度,以下分享几种本人在ArcGIS中的标注方法,实现上下标注、换行标注或分式标注的实用技巧。


普通模式与高级模式

默认为普通模式,勾选高级开启高级模式。
在这里插入图片描述


普通二分式标注(普通模式)

[DLBM] & vbnewline &  [DLMC]

标注效果展示
在这里插入图片描述


分行二分式标注(普通模式)

[DLBM]& vbnewline & "——————"  & vbnewline & [DLMC]

标注效果展示
在这里插入图片描述


二分式对齐标注(高级模式)

FUNCTION strlen(str)
    dim p_len
    p_len=0
    strlen=0
    p_len=len(str)
    FOR xx=1 to p_len
        IF asc(mid(str,xx,1))<0 then
            strlen=int(strlen) + 2
        ELSE
            strlen=int(strlen) + 1
        END if
    NEXT
END function
FUNCTION myFind ( DZM, NAME )
    a=strlen(dzm) 
    b=strlen(NAME)
    IF a>b then 
       myFind ="<und>" & DZM & "</und>" &  vbnewline & NAME
   ELSE
        str= space((b-a)/2)
        myFind ="<und>" & str & DZM & str & "</und>" & vbnewline & NAME
    END if
END Function
'编制日期:2012-07-30
Function FindLabel ([DLBM],[DLMC])
  FindLabel =myFind([DLBM],[DLMC])
End Function

标注效果展示
在这里插入图片描述


后三分式对齐标注(高级模式)

FUNCTION strlen(str)
   dim p_len
   p_len=0
   strlen=0
   p_len=len(str)
   FOR xx=1 to p_len
        IF asc(mid(str,xx,1))<0 then
            strlen=int(strlen) + 2
        ELSE
            strlen=int(strlen) + 1
        END if
   NEXT
END function
FUNCTION myFind(cunname,DJH,SHAPE_Area)
    dim str
    str=SHAPE_Area
    dim d
    d=strlen(str)
    dim d1
    dim d2
    d1=strlen(cunname) /2
    if d1<1 then  
        d1=1
    end if
    d2=strlen(DJH) /2
    if d2<1 then  
        d2=1
    end if
    if d2>d1 then
         d1=d2
   end if 
    myFind = cunname & space(d) & vbnewline  & string(d1,"—") & str & vbnewline & DJH & space(d)
END Function
'编制日期:2020-07-30
Function FindLabel ([DLBM],[DLMC],[TBMJ])
    FindLabel = myFind([DLBM],[DLMC],[TBMJ])
End Function

标注效果展示
在这里插入图片描述


前三分式对齐标注(高级模式)

FUNCTION strlen(str)
   dim p_len
   p_len=0
   strlen=0
   p_len=len(str)
   FOR xx=1 to p_len
        IF asc(mid(str,xx,1))<0 then
            strlen=int(strlen) + 2
        ELSE
            strlen=int(strlen) + 1
        END if
   NEXT
END function
FUNCTION myFind(cunname,DJH,SHAPE_Area)
    dim str
    str=SHAPE_Area
    dim d
    d=strlen(str)
    dim d1
    dim d2
    d1=strlen(cunname) /2
    if d1<1 then  
        d1=1
    end if
    d2=strlen(DJH) /2
    if d2<1 then  
        d2=1
    end if
    if d2>d1 then
        d1=d2
    end if
    myFind =" " & space(d-1) &cunname & vbnewline  & str & string(d1, "—") & vbnewline & space(d) & DJH
END Function
'编制日期:2020-07-30
Function FindLabel ([DLBM],[DLMC],[TBMJ])
    FindLabel = myFind([DLBM],[DLMC],[TBMJ])
End Function

标注效果展示
在这里插入图片描述


总结

分享是一种美德,学会分享是成功的必经之路,让一份快乐变成多份快乐时,才能让本篇文章变得更有意义,以上文章有不对的地方,希望大家能在评论区及时指正,共同成长,共同进步。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐