if lyr.symbology.classValues == "M1": lyr.symbology.classLabels = "Test"
import arcpy mxd = arcpy.mapping.MapDocument(r"Z:\Test.mxd") lyr = arcpy.mapping.ListLayers(mxd, "Soil Map Units_temp")[0] smuList = [] rows = arcpy.da.SearchCursor(lyr, ["SMU"]) for row in rows: smuList.append(row[0]) if lyr.symbologyType == "UNIQUE_VALUES": lyr.symbology.classValues = smuList lyr.symbology.showOtherValues = False # this is my pseudo code. In essence, this is what I want to do. Update the classLabel based on the values from classValues if lyr.symbology.classValues == "M1": lyr.symbology.classLabels = "Test"
import arcpy
def int_if_you_can(x):
return int(x) if x % 1.0 == 0 else x
#Reference layer and update to Unique Value renderer using layer file
mxd = arcpy.mapping.MapDocument("current")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr100 = arcpy.mapping.ListLayers(mxd, "interval_100")[0]
lyrFile = arcpy.mapping.Layer(r"C:\Active\ArcPY\Users\SteveLynch\interval_100.lyr")
arcpy.mapping.UpdateLayer(df,lyr100,lyrFile)
#Apply source data to layer
sym = lyr100.symbology
sym.addAllValues()
#Generate unique list of lables
classList = []
labelList = []
with arcpy.da.SearchCursor(lyr100, ("mean_cont", "low_cont", "high_cont"), sql_clause=(None,"ORDER BY mean_cont")) as rows:
for row in rows:
lowCont = str(int_if_you_can(row[1]))
highCont = str(int_if_you_can(row[2]))
if not lowCont + " - " + highCont in labelList:
classValue = in_if_you_can(row[0])
classList.append(classValue)
label = lowCont + " - " + highCont
labelList.append(label)
#Update layer with new label classes
sym.classValues = classList
sym.classLabels = labelList
arcpy.RefreshActiveView()
I just did something similar for a colleague. Here is the complete code snippet. Just like you suggest, I build two empty lists and append the unique values to them. Note, I'm using the new da.SearchCursor at 10.1.import arcpy def int_if_you_can(x): return int(x) if x % 1.0 == 0 else x #Reference layer and update to Unique Value renderer using layer file mxd = arcpy.mapping.MapDocument("current") df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] lyr100 = arcpy.mapping.ListLayers(mxd, "interval_100")[0] lyrFile = arcpy.mapping.Layer(r"C:\Active\ArcPY\Users\SteveLynch\interval_100.lyr") arcpy.mapping.UpdateLayer(df,lyr100,lyrFile) #Apply source data to layer sym = lyr100.symbology sym.addAllValues() #Generate unique list of lables classList = [] labelList = [] with arcpy.da.SearchCursor(lyr100, ("mean_cont", "low_cont", "high_cont"), sql_clause=(None,"ORDER BY mean_cont")) as rows: for row in rows: lowCont = str(int_if_you_can(row[1])) highCont = str(int_if_you_can(row[2])) if not lowCont + " - " + highCont in labelList: classValue = in_if_you_can(row[0]) classList.append(classValue) label = lowCont + " - " + highCont labelList.append(label) #Update layer with new label classes sym.classValues = classList sym.classLabels = labelList arcpy.RefreshActiveView()
Jeff