需求说明:有一批数据(比如,一个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)只需要短短几行代码就完成了这种重复性的工作,且图层越多效率提升越明显。
以下是处理过程截图: