ArcPy修改欄位值
阿新 • • 發佈:2019-02-02
修改欄位值(註冊版本時需要開啟編輯)
file_names=('BOUAN','BOULK','BOUNT','BOUPT','CTRLK','CTRPT','HYDAN','HYDLK','HYDNT','HYDPT','PIPAN','PIPLK','PIPNT','PIPPT','RESAN','RESLK','RESNT','RESPT','ROAAN','ROALK','ROANT','ROAPT','TERAN','TERLK','TERNT','TERPT','VEGAN','VEGLK','VEGNT','VEGPT')
... target_folder = 'D:\T20161202'
... symbolRef_field='SYMBOLREF'
... where_clause= u"GlobalID IS NOT NULL"
... fields = ['GLOBALID','SymbolRef']
... arcpy.env.workspace=r'Database Connections/Connection to Orcl.sde'
... workspace = arcpy.env.workspace
... editor = arcpy.da.Editor(workspace)
... sde_datasets = arcpy.ListDatasets()
... for sde_dataset in sde_datasets:
... sde_ds_names = sde_dataset.split('.')
... sde_ds_user = sde_ds_names[0]
... if sde_ds_user=='GYJCCH':
... for sde_fc in arcpy.ListFeatureClasses(feature_dataset=sde_dataset):
... print sde_fc
... sde_fc_names = os.path.split(sde_fc)
... sde_fc_fullnames = sde_fc_names[1].split('.')
... sde_fc_name = sde_fc_fullnames[1]
... sde_fc_shortname = sde_fc_name[-5:]
... if sde_fc_shortname in file_names and sde_fc_name[0:10]=='DLG_K_CGY_':
... file_name_ext = sde_fc_shortname+'.txt'
... file_path = os.path.join(target_folder,file_name_ext)
... print file_path
... if os.path.exists(file_path):
... open_file=open(file_path,'r')
... editor.startEditing(False,True)
... editor.startOperation()
... updateCursor = arcpy.da.UpdateCursor(sde_fc,fields,where_clause,None)
... for row in updateCursor:
... for file_line in open_file:
... guid_sub = file_line[0:38]
... if guid_sub == row[0]:
... symbolref_value = file_line[39:-1]
... row[1]=symbolref_value
... updateCursor.updateRow(row)
... print ('Updated : GlobaldID = {0}, SymbolRef = {1}'.format(guid_sub,symbolref_value))
... del updateCursor
... editor.stopOperation()
... editor.stopEditing(True)
備註:未註冊歸檔時不需要editor