Add case for symbol code only; draw line symbol colors
This commit is contained in:
parent
cfcc9bdfd7
commit
18f5ca5aa5
1 changed files with 94 additions and 107 deletions
|
@ -378,7 +378,7 @@ class FeatureRenderer:
|
||||||
# Print message if symbol could not be found
|
# Print message if symbol could not be found
|
||||||
if not symbol_found:
|
if not symbol_found:
|
||||||
messages.AddMessage(
|
messages.AddMessage(
|
||||||
f"Could not find symbol {symbol_key} for {leg_id}"
|
f"Could not find symbol in gallery {symbol_key}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add user defined labels
|
# Add user defined labels
|
||||||
|
@ -393,27 +393,76 @@ class FeatureRenderer:
|
||||||
|
|
||||||
# Retrieve stroke symbol properties
|
# Retrieve stroke symbol properties
|
||||||
stroke_symbol_props = {}
|
stroke_symbol_props = {}
|
||||||
for group in cim_lyr.renderer.groups:
|
if layer_shape_type == "Polygon":
|
||||||
for unique_value_class in group.classes:
|
for group in cim_lyr.renderer.groups:
|
||||||
if unique_value_class.values[0].fieldValues[0] != "<Null>":
|
for unique_value_class in group.classes:
|
||||||
leg_id = str(
|
if (
|
||||||
unique_value_class.values[0].fieldValues[0]
|
unique_value_class.values[0].fieldValues[0]
|
||||||
)
|
!= "<Null>"
|
||||||
else:
|
|
||||||
leg_id = None
|
|
||||||
|
|
||||||
stroke_symbol_props[leg_id] = {
|
|
||||||
"color": None,
|
|
||||||
"width": None,
|
|
||||||
}
|
|
||||||
|
|
||||||
for (
|
|
||||||
symbol_layer
|
|
||||||
) in unique_value_class.symbol.symbol.symbolLayers:
|
|
||||||
if isinstance(
|
|
||||||
symbol_layer,
|
|
||||||
arcpy.cim.CIMSymbols.CIMSolidStroke,
|
|
||||||
):
|
):
|
||||||
|
leg_id = str(
|
||||||
|
unique_value_class.values[0].fieldValues[0]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
leg_id = None
|
||||||
|
|
||||||
|
stroke_symbol_props[leg_id] = {
|
||||||
|
"color": None,
|
||||||
|
"width": None,
|
||||||
|
}
|
||||||
|
|
||||||
|
for (
|
||||||
|
symbol_layer
|
||||||
|
) in unique_value_class.symbol.symbol.symbolLayers:
|
||||||
|
if isinstance(
|
||||||
|
symbol_layer,
|
||||||
|
arcpy.cim.CIMSymbols.CIMSolidStroke,
|
||||||
|
):
|
||||||
|
if leg_id in outline_codes:
|
||||||
|
# Set user defined outline color
|
||||||
|
outline_code = outline_codes[leg_id]
|
||||||
|
color_value = get_symbol_color(outline_code)
|
||||||
|
color = (
|
||||||
|
arcpy.cim.CreateCIMObjectFromClassName(
|
||||||
|
"CIMCMYKColor", "V3"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
color.values = color_value["CMYK"]
|
||||||
|
stroke_symbol_props[leg_id]["color"] = color
|
||||||
|
else:
|
||||||
|
if symbol_layer.color:
|
||||||
|
# Set color as it was before
|
||||||
|
stroke_symbol_props[leg_id][
|
||||||
|
"color"
|
||||||
|
] = symbol_layer.color
|
||||||
|
else:
|
||||||
|
# Set default color
|
||||||
|
color = arcpy.cim.CreateCIMObjectFromClassName(
|
||||||
|
"CIMCMYKColor", "V3"
|
||||||
|
)
|
||||||
|
color.values = [40, 40, 40, 10, 100]
|
||||||
|
stroke_symbol_props[leg_id][
|
||||||
|
"color"
|
||||||
|
] = color
|
||||||
|
|
||||||
|
if draw_outlines:
|
||||||
|
if symbol_layer.width:
|
||||||
|
# Set width as it was before
|
||||||
|
stroke_symbol_props[leg_id][
|
||||||
|
"width"
|
||||||
|
] = symbol_layer.width
|
||||||
|
else:
|
||||||
|
# Set default width
|
||||||
|
stroke_symbol_props[leg_id][
|
||||||
|
"width"
|
||||||
|
] = DEFAULT_LINE_WIDTH
|
||||||
|
else:
|
||||||
|
stroke_symbol_props[leg_id]["width"] = 0
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
# In case the layer did not have a stroke symbol layer or outline color
|
||||||
|
if not stroke_symbol_props[leg_id]["color"]:
|
||||||
if leg_id in outline_codes:
|
if leg_id in outline_codes:
|
||||||
# Set user defined outline color
|
# Set user defined outline color
|
||||||
outline_code = outline_codes[leg_id]
|
outline_code = outline_codes[leg_id]
|
||||||
|
@ -424,65 +473,21 @@ class FeatureRenderer:
|
||||||
color.values = color_value["CMYK"]
|
color.values = color_value["CMYK"]
|
||||||
stroke_symbol_props[leg_id]["color"] = color
|
stroke_symbol_props[leg_id]["color"] = color
|
||||||
else:
|
else:
|
||||||
if symbol_layer.color:
|
# Set default color
|
||||||
# Set color as it was before
|
color = arcpy.cim.CreateCIMObjectFromClassName(
|
||||||
stroke_symbol_props[leg_id][
|
"CIMCMYKColor", "V3"
|
||||||
"color"
|
)
|
||||||
] = symbol_layer.color
|
color.values = [40, 40, 40, 10, 100]
|
||||||
else:
|
stroke_symbol_props[leg_id]["color"] = color
|
||||||
# Set default color
|
|
||||||
color = (
|
|
||||||
arcpy.cim.CreateCIMObjectFromClassName(
|
|
||||||
"CIMCMYKColor", "V3"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
color.values = [40, 40, 40, 10, 100]
|
|
||||||
stroke_symbol_props[leg_id]["color"] = color
|
|
||||||
|
|
||||||
|
if not stroke_symbol_props[leg_id]["width"]:
|
||||||
if draw_outlines:
|
if draw_outlines:
|
||||||
if symbol_layer.width:
|
stroke_symbol_props[leg_id][
|
||||||
# Set width as it was before
|
"width"
|
||||||
stroke_symbol_props[leg_id][
|
] = DEFAULT_LINE_WIDTH
|
||||||
"width"
|
|
||||||
] = symbol_layer.width
|
|
||||||
else:
|
|
||||||
# Set default width
|
|
||||||
stroke_symbol_props[leg_id][
|
|
||||||
"width"
|
|
||||||
] = DEFAULT_LINE_WIDTH
|
|
||||||
else:
|
else:
|
||||||
stroke_symbol_props[leg_id]["width"] = 0
|
stroke_symbol_props[leg_id]["width"] = 0
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
# In case the layer did not have a stroke symbol layer or outline color
|
|
||||||
if not stroke_symbol_props[leg_id]["color"]:
|
|
||||||
if leg_id in outline_codes:
|
|
||||||
messages.AddMessage("Add color")
|
|
||||||
# Set user defined outline color
|
|
||||||
outline_code = outline_codes[leg_id]
|
|
||||||
color_value = get_symbol_color(outline_code)
|
|
||||||
color = arcpy.cim.CreateCIMObjectFromClassName(
|
|
||||||
"CIMCMYKColor", "V3"
|
|
||||||
)
|
|
||||||
color.values = color_value["CMYK"]
|
|
||||||
stroke_symbol_props[leg_id]["color"] = color
|
|
||||||
else:
|
|
||||||
# Set default color
|
|
||||||
color = arcpy.cim.CreateCIMObjectFromClassName(
|
|
||||||
"CIMCMYKColor", "V3"
|
|
||||||
)
|
|
||||||
color.values = [40, 40, 40, 10, 100]
|
|
||||||
stroke_symbol_props[leg_id]["color"] = color
|
|
||||||
|
|
||||||
if not stroke_symbol_props[leg_id]["width"]:
|
|
||||||
if draw_outlines:
|
|
||||||
stroke_symbol_props[leg_id][
|
|
||||||
"width"
|
|
||||||
] = DEFAULT_LINE_WIDTH
|
|
||||||
else:
|
|
||||||
stroke_symbol_props[leg_id]["width"] = 0
|
|
||||||
|
|
||||||
new_groups = []
|
new_groups = []
|
||||||
for group in cim_lyr.renderer.groups:
|
for group in cim_lyr.renderer.groups:
|
||||||
for unique_value_class in group.classes:
|
for unique_value_class in group.classes:
|
||||||
|
@ -505,7 +510,7 @@ class FeatureRenderer:
|
||||||
color_value = code_components["color"]
|
color_value = code_components["color"]
|
||||||
symbol_color_value = code_components["symbol_color"]
|
symbol_color_value = code_components["symbol_color"]
|
||||||
|
|
||||||
has_color = False
|
has_background_color = False
|
||||||
for (
|
for (
|
||||||
symbol_layer
|
symbol_layer
|
||||||
) in unique_value_class.symbol.symbol.symbolLayers:
|
) in unique_value_class.symbol.symbol.symbolLayers:
|
||||||
|
@ -516,14 +521,14 @@ class FeatureRenderer:
|
||||||
)
|
)
|
||||||
|
|
||||||
if color_value:
|
if color_value:
|
||||||
# Update colors
|
# Update background colors
|
||||||
if layer_shape_type == "Polygon":
|
if layer_shape_type == "Polygon":
|
||||||
if isinstance(
|
if isinstance(
|
||||||
symbol_layer,
|
symbol_layer,
|
||||||
arcpy.cim.CIMSymbols.CIMSolidFill,
|
arcpy.cim.CIMSymbols.CIMSolidFill,
|
||||||
):
|
):
|
||||||
update_color(symbol_layer, color_value)
|
update_color(symbol_layer, color_value)
|
||||||
has_color = True
|
has_background_color = True
|
||||||
|
|
||||||
if isinstance(
|
if isinstance(
|
||||||
symbol_layer,
|
symbol_layer,
|
||||||
|
@ -536,23 +541,8 @@ class FeatureRenderer:
|
||||||
stroke_symbol_props[leg_id]["color"]
|
stroke_symbol_props[leg_id]["color"]
|
||||||
)
|
)
|
||||||
|
|
||||||
elif layer_shape_type == "Polyline":
|
|
||||||
if isinstance(
|
|
||||||
symbol_layer,
|
|
||||||
arcpy.cim.CIMSymbols.CIMSolidStroke,
|
|
||||||
):
|
|
||||||
update_color(symbol_layer, color_value)
|
|
||||||
has_color = True
|
|
||||||
elif layer_shape_type == "Point":
|
|
||||||
if isinstance(
|
|
||||||
symbol_layer,
|
|
||||||
arcpy.cim.CIMSymbols.CIMMarker,
|
|
||||||
):
|
|
||||||
update_color(symbol_layer, color_value)
|
|
||||||
has_color = True
|
|
||||||
|
|
||||||
# Draw symbol background colors
|
# Draw symbol background colors
|
||||||
if not has_color and color_value:
|
if not has_background_color and color_value:
|
||||||
if layer_shape_type == "Polygon":
|
if layer_shape_type == "Polygon":
|
||||||
# Add fill symbol layer
|
# Add fill symbol layer
|
||||||
fill_symbol = arcpy.cim.CIMSolidFill()
|
fill_symbol = arcpy.cim.CIMSolidFill()
|
||||||
|
@ -574,20 +564,6 @@ class FeatureRenderer:
|
||||||
unique_value_class.symbol.symbol.symbolLayers.append(
|
unique_value_class.symbol.symbol.symbolLayers.append(
|
||||||
stroke_symbol
|
stroke_symbol
|
||||||
)
|
)
|
||||||
elif layer_shape_type == "Polyline":
|
|
||||||
# Add stroke symbol layer
|
|
||||||
stroke_symbol = arcpy.cim.CIMSolidStroke()
|
|
||||||
update_color(stroke_symbol, color_value)
|
|
||||||
unique_value_class.symbol.symbol.symbolLayers.append(
|
|
||||||
stroke_symbol
|
|
||||||
)
|
|
||||||
elif layer_shape_type == "Point":
|
|
||||||
# Add marker symbol layer
|
|
||||||
marker_symbol = arcpy.cim.CIMMarker()
|
|
||||||
update_color(marker_symbol, color_value)
|
|
||||||
unique_value_class.symbol.symbol.symbolLayers.append(
|
|
||||||
marker_symbol
|
|
||||||
)
|
|
||||||
|
|
||||||
# Regroup items
|
# Regroup items
|
||||||
if heading_field:
|
if heading_field:
|
||||||
|
@ -638,6 +614,9 @@ def update_color(symbol_layer, color_value):
|
||||||
|
|
||||||
|
|
||||||
def update_symbol_layer_colors(symbol_layer, symbol_color_value):
|
def update_symbol_layer_colors(symbol_layer, symbol_color_value):
|
||||||
|
if isinstance(symbol_layer, arcpy.cim.CIMSymbols.CIMSolidStroke):
|
||||||
|
update_color(symbol_layer, symbol_color_value)
|
||||||
|
|
||||||
if isinstance(
|
if isinstance(
|
||||||
symbol_layer,
|
symbol_layer,
|
||||||
arcpy.cim.CIMSymbols.CIMCharacterMarker,
|
arcpy.cim.CIMSymbols.CIMCharacterMarker,
|
||||||
|
@ -675,6 +654,14 @@ def get_code_components(code):
|
||||||
"symbol_key": "",
|
"symbol_key": "",
|
||||||
"symbol_color": {},
|
"symbol_color": {},
|
||||||
}
|
}
|
||||||
|
if code_len == 7:
|
||||||
|
return {
|
||||||
|
"color": {},
|
||||||
|
"symbol_key": code[0:7],
|
||||||
|
"symbol_color": {
|
||||||
|
"CMYK": [0, 0, 0, 100, 100],
|
||||||
|
},
|
||||||
|
}
|
||||||
elif code_len == 10:
|
elif code_len == 10:
|
||||||
return {
|
return {
|
||||||
"color": {},
|
"color": {},
|
||||||
|
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue