import arcpy import math def LZDpoly(zdshp): arcpy.MakeFeatureLayer_management(zdshp, 'ZD') # 在外面写个字典 zd = {'公路用地': 'GLYD', '特殊用地': 'TSYD', '公用设施用地': 'GYSS', '交通服务场站用地': 'JTFW', '沟渠': 'GQ', '灌木林地': 'GMLD', '其他林地': 'QTLD', '乔木林地': 'QMLD', '竹林地': 'ZLD', '果园': 'GY', '旱地': 'HD', '河流水面': 'HLSM', '坑塘水面': 'KTSM', '养殖坑塘': 'YZKT', '农村道路': 'NCDL', '农村宅基地': 'NCZJD', '其他草地': 'QTCD', '其他园地': 'QTYD', '设施农用地': 'SSNYD', '水田': 'ST'} arcpy.AddField_management('ZD', 'dl', 'TEXT') with arcpy.da.UpdateCursor('ZD', ['SHAPE@', '宗地编码','DLMC','dl']) as cursorA: for curA in cursorA: zdbh = curA[1] dlmc = curA[2] if dlmc == '' or dlmc == ' ' or dlmc == None: curA[3] = zdbh else: str1 = zd[dlmc] curA[3] = str1 cursorA.updateRow (curA) if __name__ == '__main__': try: # 输入宗地shp LZDpoly(r'D:\2work_now\20221026\test\testLZD1.shp') except arcpy.ExecuteError: arcpy.AddMessage(arcpy.GetMessages())