I am trying to figure out a solution to an field calculation problem. What I'm trying to do is automatically (using either ArcPy or the Field Calculator) generate sequential numbers, beginning at 1, in a new blank integer field (called 'Point_ID') for every recurrence of a value in a second field (called 'Line_ID'). The sorting of the sequential values in the second field ('Line_ID') will be based on the order in a third field ('FID'). Can anyone help me do this? I am very green when it comes to advanced field calculations and ArcPy (and Python in general, for that matter). So your explicitness is much appreciated.
Another way to put it: there are duplicate values in the Line_ID field. I would like to create a new field that counts up for every duplicate occurrence in the Line_ID field, with the sort order based on the FID field. So, if there are nine values in the Line_ID field that have the value "A," the new Point_ID field will go from 1 to 9, with the order based on the sort on FID.
Answer
I'm not sure how green you are, so here are "pretty explicit" instructions...
- Open up Field Calculator on the Point_ID field
- At the top, choose the "Python" parser
- Click the checkbox beside "Show Codeblock"
In the "Pre-Logic script code", paste the following code...
prevFieldValue = ''
counter = 1
def GetDuplicateCounter(myFieldValue):
global prevFieldValue
global counter
if myFieldValue == prevFieldValue:
counter += 1
else:
counter = 1
prevFieldValue = myFieldValue
return counterIn the "Point_ID = " box, type in
GetDuplicateCounter(!Line_ID!)
Note: If your Line_ID field is not a string field, then change the first line of code to prevFieldValue = 0
or something similar...
No comments:
Post a Comment