2

I am new to python, and have not successfully coded an Update Cursor. I am unable to understand the documentation.

I have a geodatabase table of wells that i have built using python. I now want to loop through each row and update a field. the table contains a field called 'MD' which is type double and contains a depth value. I need to look at a second field called 'FM_Name' for two text strings that indicate the TOP and BOTTOM of a certain perforation zone. So, the cursor would loop though the rows which are sorted in ascending order, and update 'FM_Name' field with the word "Perf" in between the TOP and BOTTOM for each well.

This table has over 50K records, representing roughly 300 wells, so i really dont want to do this by hand.

Here is the table

PolyGeo
65.5k29 gold badges115 silver badges349 bronze badges
asked Sep 16, 2016 at 14:25

1 Answer 1

5

This code should do the work you need to get done. Make sure the table is sorted as you expect. There is a GP tool Sort that can do that for you.

import arcpy
fc = r'C:\ArcGIS\Default.gdb\wells'
with arcpy.da.UpdateCursor(fc,['MD','FM_Name']) as upd_cur:
 for row in upd_cur: #start iterating rows in the table
 if row[1] == 'TOP': #if the FM_NAME column is 'TOP', then:
 row = upd_cur.next() #take next row in the table
 while row[1] != 'BOTTOM': #if the FM_NAME column is not 'BOTTOM', then:
 row[1] = 'PERF' #set the FM_NAME column to be 'PERF'
 upd_cur.updateRow(row) #update the row (writing changes)
 row = upd_cur.next() #take next row and jump back to the 'while' line

I have made some comments in the code so you will be able to catch up.

The results in the attribute table in ArcMap:

enter image description here

answered Sep 16, 2016 at 14:45
2
  • 2
    @CaseyP., no problem at all! This scenario is somewhat more difficult to code comparing to a plain "all rows" update. Take your time to learn arcpy. Btw, there is a great list of resources for this - gis.stackexchange.com/questions/53816/…. Commented Sep 16, 2016 at 15:55
  • I will certainly check those links out. thank you for your time and help! Commented Sep 16, 2016 at 18:05

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.