1. 程式人生 > >ArcPy修改欄位值

ArcPy修改欄位值

修改欄位值(註冊版本時需要開啟編輯) 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