1

I'm trying to use an if statement in the field calculator: This is what the code looks like in Python:

a= 2 
FacilityID= !FACILITYID! 
if a%2==0:
   MH_ID_Calc=FacilityID[0:6]
else:
   MH_ID_Calc=FacilityID[7:14]

print MH_ID_Calc

06M244

so I tried to run that in ArcGIS field calculator:

def myCalc(FID,FACID):
if FID%2==0:
return FACID[0:6]
else:
return FACID[7:14]



myCalc( !FID! !FACILITYID!)

But it fails each time.

6
  • Welcome to GIS SE! As a new user please take the tour to learn about our focused Question and Answer format. Please check your indentation - there are no indents in your field calculator code above, but python needs the indents. Also double-check that you've selected the Python Parser in field calculator.
    – Midavalo
    Commented Feb 1, 2017 at 20:52
  • 1
    What happens when you run the field calculator? There should be result messages under Geoprocessing > Results
    – Midavalo
    Commented Feb 1, 2017 at 20:53
  • Check out this question and answer which probably makes this a duplicate.
    – mkennedy
    Commented Feb 1, 2017 at 21:18
  • 3
    myCalc(!FID!, !FACILITYID!)? There's a comma missing when you call the function
    – Bjorn
    Commented Feb 1, 2017 at 21:43
  • Please edit your question to include the error message.
    – Aaron
    Commented Feb 1, 2017 at 22:33

1 Answer 1

1

As others have already commented, the parameters of the function call in your expression should be comma separated:

myCalc(!FID!, !FACILITYID!)

And you must use correct indentation with Python (unlike other languages, this is part of Python syntax, and it will not work if the indentation is not correct):

def myCalc(FID,FACID):
    if FID%2==0:
        return FACID[0:6]
    else:
        return FACID[7:14]

Ie, anywhere that a line ends with a colon (:) represents a new code block and the next line should be indented further. All lines within a block must have exactly the same indentation, unless they are part of a sub-block, in which case, they must have the exact same indentation as the other lines a the same level of that sub-block.

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.