Estoy trabajando en un script arcpy que establecerá automáticamente valores excluidos, valores de ruptura de clase y etiquetas de ruptura de clase en una serie de capas raster. Una versión simplificada de parte de mi código se puede ver a continuación:
mxd = arcpy.mapping.MapDocument(r'C:\Users\djh\Desktop\GIS Temp\test.mxd')
df = arcpy.mapping.ListDataFrames(mxd)[0]
symbology_lyr = (r'C:\Users\djh\Desktop\GIS Temp\test.lyr')
raster_name = (r'C:\Users\djh\Desktop\GIS Temp\test.gdb\test')
levels = [31.0, 32.0, 33.0, 34.0, 35.0]
class_break_labels = ['31.0 - 32.0', '32.0 - 33.0', '33.0 - 34.0', '> 34.0']
layers = arcpy.mapping.ListLayers(mxd, data_frame=df)
for lyr in layers:
if lyr.isGroupLayer:
for sublyr in lyr:
if sublyr.name == raster_name:
arcpy.ApplySymbologyFromLayer_management(sublyr, symbology_layer)
if sublyr.symbologyType == "RASTER_CLASSIFIED":
sublyr.symbology.excludedValues = '0 - ' + str(levels[0])
sublyr.symbology.classBreakValues = levels[1:]
sublyr.symbology.classBreakLabels = class_break_labels
Cuando llego a la línea Aplicar simbología desde capa, funciona bien y actualiza la simbología en consecuencia, pero cuando incluyo el último bucle 'if', obtengo el siguiente error en la última línea del fragmento anterior:
ValueError: El número de clases de etiquetas no coincide con el número de saltos de clase
Incluí una sentencia print para obtener la diferencia entre las longitudes de levels[1:] y class_break_labels (ambas listas), y para cada iteración era 0, así que no veo cómo es posible que los números no coincidan.
Me he apropiado del último bucle 'if' de esta página de ayuda de Esri .
¿Alguien se ha encontrado con esto antes?