I have a Shapefile and a list in .csv which contains two columns with names:
- "Old_name" which contains the old names that already exist in the attribute table of the previously mentioned Shapefile; and
- "New_name" which contains the updated name.
How can I do this either on ArcGIS, QGIS or with python?
Based on this question I need to use the UpdateCursor
function, but how can I use the list in this function?
Answer
Assuming the csv is ready to be consumed by arcpy as a table with two columns named OLD_NAME
and NEW_NAME
, and following the example provided in the question to get to the source shp in the UpdateCursor
.
#create a dictionary of the csv to join to the shapefile
#r[0] is the first item passed to the SearchCursor and used to join to shp
#r[1] is the second item and used for the update
csvDict= dict([(r[0], (r[1])) for r in arcpy.da.SearchCursor(my_csv, ["OLD_NAME","NEW_NAME"])])
with arcpy.da.UpdateCursor(my_shp, ["OLD_NAME","NEW_NAME"]) as cursor:
for row in cursor:
joinFieldValue = row[0] #this is "OLD_NAME" on the shapefile
if row[0] in csvDict: #check to see if old_name exists in new
row[1] = csvDict[joinFieldValue]
else:
row[1] = row[0] #new name is same as the old name
cursor.updateRow(row)
del cursor, row
No comments:
Post a Comment