【分享】ArcGIS实现分子分母等标注实用技巧

前言

标注是显示在地图上的文字信息,是出图中不可或缺的重要元素,为了标注的样式丰富,摆放的位置灵活,因此给制图出图带来不少难度,以下分享几种本人在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

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


总结

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

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨港_正在缓冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值