Arcgis小技巧【15】——字段计算器的简单用法和示例2.0

之前写过一篇【字段计算器的简单用法和示例】:

https://blog.csdn.net/xcc34452366/article/details/128776450

说了一些字段计算的使用方法,主要是针对python的用法。

不是很完整,这里再补充一些内容。

欢迎关注同名微信公众号,更多文章推送:


1、数字前填充0

一般用在编号中, 例如取【OBJECTID】的数字并在前面填充0至5位,注意计算的字段必须是字符串型。因为【OBJECTID】的值是数字,所以要加str()转成字符串:

str(!OBJECTID!).zfill(5)

2、小数点后保留固定位数,不足部分用0填充

正常情况下用round()函数可以保留固定位数,但是因为生成的是数值型,所以如果最后位是0会自动消掉。如果想要实现不足部分用0填充,则需要字段为字符串型,并如下计算:

format(!TBMJ!, '.5f')

3、文本居中,两端填充

再整点活,如果想在文本两端都进行填充。例如要在文本前后都填充【0】至文本长度为8:

!JQDLMC!.center(8,"0")

4、文本左右对齐,另一端填充

例如文本左对齐,右侧填充至8位:

!JQDLMC!.ljust(8,"%")

相反的话则是:

!JQDLMC!.rjust(8,"%")

5、获取特定字符在字符串的位置

例如获取字符串中【8】的位置,注意是从左开始获取第一个【8】的位置:

!BSM!.find("8")

 如果是从右开始获取:

!BSM!.rfind("8")

6、获取多个数字型字段值中的最大值或最小值

取最大值:

max(!TBMJ!,!Shape_Area!)

取最小值:

min(!TBMJ!,!Shape_Area!)

7、获取随机数

例如要获取0至10之间的随机整数:

random.randrange(0,10)

在代码块中输入:

import random

8、赋空值

空值不是空格:

None

9、计算数字的百分比变化

例如计算图斑的面积变化,以百分比的方式表达:

PercentChange(!TBMJ!)

在代码块中输入:

lastValue = 0
def PercentChange(arg):
    newValue = arg
    global lastValue
    if lastValue:
        percentage = (float(newValue - lastValue) / lastValue)  * 100
    else:
        percentage = 0
    lastValue = newValue
    return percentage

10、计算数字的累积值

例如逐个累积图斑的面积之和:

AccumulateValue(!TBMJ!)

在代码块中输入:

total = 0
def AccumulateValue(arg):
    value = arg
    global total
    if total:
        total += value
    else:
        total = value
    return total

11、给图斑顺序编号

结果输入:

SequentialNumber()

在代码块中输入:

rec=0
def SequentialNumber():
    global rec
    pStart = 1
    pInterval = 1
    if (rec == 0):
        rec = pStart
    else:
        rec = rec + pInterval
    return rec

12、获取面要素的折点数

可以获取面要素折点线,需注意获取的折点数包括首末点,比你看上去的要多一个。选择一个整型字段进行计算:

getVertexCount(!shape!)

在代码块中输入:

def getVertexCount(feat):    
    partnum = 0
    partcount = feat.partCount
    pntcount = 0
    while partnum < partcount:
        part = feat.getPart(partnum)
        pnt = part.next()
        while pnt:
            pntcount += 1   
            pnt = part.next()
            if not pnt: 
                pnt = part.next()
        partnum += 1
    return pntcount

13、移动点要素

在【shape】字段上点击计算字段,实现点要素x坐标增加100:

shiftXCoordinate(!SHAPE!)

在代码块中输入:

def shiftXCoordinate(shape):
    shiftValue = 100
    point = shape.getPart(0)
    point.X += shiftValue
    return point

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

规划GIS会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值