Arcpy批量生成FeatureClass的GLOBALID字段值(UUID)

需求说明:有一批数据(比如,一个FileGDB文件,包含多个FeatureClass)需要为其指定字段添加GLOBALID即UUID值,使用Arcpy如下实现。

代码:

# -*- coding:gbk -*-
import  arcpy
import  uuid
if __name__=='__main__':
    arcpy.env.workspace=r'D:\Template.gdb'
    workspace = arcpy.env.workspace
    fcs = arcpy.ListFeatureClasses()
    for fc in fcs:
        fds = arcpy.ListFields(fc)
        for fd in fds:
            fdName = fd.name
            if fdName.upper()=='GLOBALID':
                 aValue = (str(uuid.uuid1())).upper()
                 print  ('{0}.GLOBALID: {1}'.format(fc,aValue))
                 code_block = """def CalcUUID():
    aValue=(str(uuid.uuid1())).upper()
    return aValue"""
                 arcpy.CalculateField_management(in_table= fc,field= fdName,expression="CalcUUID()",expression_type= 'PYTHON_9.3',code_block=code_block)

类似于在ArcMap中对各个图层分别进行如下处理:


使用Python(或Arcpy)只需要短短几行代码就完成了这种重复性的工作,且图层越多效率提升越明显。

以下是处理过程截图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值