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.

Midavalo
30k11 gold badges53 silver badges108 bronze badges
asked Feb 1, 2017 at 20:20
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. Commented Feb 1, 2017 at 20:52
  • 1
    What happens when you run the field calculator? There should be result messages under Geoprocessing > Results Commented Feb 1, 2017 at 20:53
  • Check out this question and answer which probably makes this a duplicate. Commented Feb 1, 2017 at 21:18
  • 3
    myCalc(!FID!, !FACILITYID!)? There's a comma missing when you call the function Commented Feb 1, 2017 at 21:43
  • Please edit your question to include the error message. 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.

answered Mar 31, 2017 at 0:57

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.