1

When running this Code:

import arcpy 
from arcpy import env
import os
#Specify the map document and the data frame
mxd = arcpy.mapping.MapDocument(r"G:\\PythonCode\\mxd_test.mxd")
env.workspace = r"G:\\LoopTest.gdb"
#output file folder
outPath = r"G:\Mxd_MapAutomation\\Test4\\"
FCs = arcpy.ListFeatureClasses()
# loop through all Featurecalsses in env.workspace
for FCLASS in FCs:
 #Skip all Text. OID and Geometry Fields - unfortunately WID, Shape Area etv is still included
 AllFields = [f.name for f in arcpy.ListFields(FCLASS)]
 LeaveOutField = [f.name for f in arcpy.ListFields(FCLASS,field_type='String')]
 LeaveOutField.extend([f.name for f in arcpy.ListFields(FCLASS,field_type='Geometry')])
 LeaveOutField.extend([f.name for f in arcpy.ListFields(FCLASS,field_type='OID')])
 attrlist = [x for x in AllFields if x not in LeaveOutField]
 # layer which has to change the attribute field
 flayer = arcpy.mapping.ListLayers(mxd, "*")
 featurelayer = flayer[7]
 # text element that has to change (e.g. title...)
 title = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "map_title")[0]
 for attr in attrlist:
 # change value field
 featurelayer.symbology.valueField = attr
 # change tilte
 title.text = attr
 # update view
 arcpy.RefreshActiveView()
 arcpy.RefreshTOC()
 # export as jpeg
 outJPEG = os.path.join(outPath, FCLASS + "_" + attr + ".jpg")
 arcpy.mapping.ExportToJPEG(mxd, outJPEG, "PAGE_LAYOUT", 200, 200, 300, False, "24-BIT_TRUE_COLOR", 90, False)
del mxd

I get following error:

 Traceback (most recent call last):
 File "G:/DDP_loop_Code.py", line 35, in <module>
 featurelayer.symbology.valueField = attr
 File "C:\Program Files (x86)\ArcGIS\Desktop10.1\arcpy\arcpy\arcobjects\_base.py", line 87, in _set
 return setattr(self._arc_object, attr_name, cval(val))
ValueError: hhfishing

and I have no idea why.. the code basically runs through all FC in the GDB. It does it correctly with the first FeatureClass and stops with the error in the second Feature Class. Even if I would put in other Feature Classes the Error would appear in the same way. All the fields are either float or integer and the field where the error appears is not different to any other field where the code works on..

asked Jun 11, 2015 at 4:45
6
  • 2
    Where exactly are you getting the error? Commented Jun 11, 2015 at 4:50
  • 1
    What's the precise error message and line number in relation to the code snippet that you have provided? Please edit it into your question. Commented Jun 11, 2015 at 5:09
  • 1
    It seems to me that your layer probably has a UniqueValuesRenderer so setting a field other than int (long/short) into the .valueField is going to cause pain.. is this correct? Without the exact error message (like @PolyGeo said) I can't be certain; the information contained in the wording is important so it needs to be a verbatim copy. The only way to get around this is to ensure that every layer has an integer symbology field... is the field you're trying to use the same name for every feature class? or is it always the -5th element like you have? Commented Jun 11, 2015 at 5:23
  • The error that you have included is only part of what I was expecting, and unfortunately the least useful part. Can you please try running your code from an IDE like IDLE and provide us with the whole error - in particular the bit that tells us the line number of your script and what it was executing when it errored. Commented Jun 11, 2015 at 7:05
  • It is actually much more informative which has enabled me to start to answer your question, and to see if that question can start to become more focussed. Commented Jun 11, 2015 at 8:17

1 Answer 1

2

I ran the test code below using ArcGIS 10.3.1 for Desktop:

import arcpy
mxd = arcpy.mapping.MapDocument("C:\\temp\\temp.mxd")
featurelayer = arcpy.mapping.ListLayers(mxd, "Animals_Insects")[0]
attr = 'hhsericiculture'
featurelayer.symbology.valueField = attr
print "Works for field hhsericiculture"
attr = 'pct_ahhwinsect_raising'
featurelayer.symbology.valueField = attr
print "Gets error before getting here"

I saw the first print statement appear, as expected, but I also saw the second which means that the error you describe was not encountered on the line before.

These are my field definitions:

  • hhsericiculture

enter image description here

  • pct_ahhwinsect_raising

enter image description here

and my symbology settings for the layer:

enter image description here

I think you should double-check whether I am running an identical test to yours. If so, perhaps this is a version difference between your 10.1 and my 10.3.1.

As an afterthought I wonder whether your field has any null values in it - I know that mine does not - and it might explain why you are getting a ValueError rather than another type of error.

answered Jun 11, 2015 at 8:11
6
  • I updated my question, still couldn't figure out the error. Commented Jun 19, 2015 at 8:08
  • I suspect that there are null values in your hhfishing field now. Commented Jun 19, 2015 at 8:39
  • there are but they need to be <null>.. is this process not possible with null-values? Commented Jun 22, 2015 at 4:49
  • You should be able to apply a definition query to your layer to leave just those which are non null. Commented Jun 22, 2015 at 5:20
  • do I do this with if foo is None: ? or is it more a code like this? gis.stackexchange.com/questions/90736/… ? Commented Jun 23, 2015 at 3:16

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.