Take the 2-minute tour ×

Is it possible to assign the same symbol to multiple layers of the same geometry type within an ArcMap document in one operation?

For example, I was hoping to:

  1. Select multiple layers in the TOC
  2. Click on the symbol "patch" or right-click an get to the "Symbol Selector".
  3. Apply the same symbol to all selected layers.

Obviously that doesn't work, or I wouldn't be asking. I found an old 2003 posting that talks about how to do this with VBA code. Can this type of operation be done from the GUI in 10.x, or am I just out of luck?

share|improve this question
You could make a really simple script tool using applySymbologyFromLayer. All you'd have to do is drag and drop the layers into the dialog box. –  Roy Oct 1 '12 at 17:23
If you create a lyr file of multiple layers and drag it in (or add it from the add data button) it will apply all symbology, and labeling settings that are saved in the lyr. Note that you don't apply it to existing layers but bring them in again with this method. –  Brad Nesom Oct 1 '12 at 19:39
@BradNesom- Thanks for the suggestion but I am specifically talking about altering the symbology of multiple layers that are already in the TOC. Basically applying a "Template" of symbology from one (existing) layer inthe TOC to many other (existing) layers in the TOC. –  RyanDalton Oct 1 '12 at 20:05
add comment

3 Answers

up vote 6 down vote accepted

Just prior to @Aaron s message, I used the information from @Roy to create my own solution that I could incorporate into am ArcToolbox script. See below:

# Import modules
import arcpy

#Get the current Map Document
mxd = arcpy.mapping.MapDocument("CURRENT")

# Script arguments
Template_Layer = arcpy.GetParameterAsText(0)
LayerList = arcpy.GetParameterAsText(1)
Layers_to_Symbolize = LayerList.split(";")

# Process: Apply Symbology From Layer
for UpdateLayer in Layers_to_Symbolize:
    arcpy.AddMessage("Updating: " + UpdateLayer)

# Refresh the Table of Contents to reflect the change

#Delete the MXD from memory
del mxd

I could see this concept as a potential tool for a 10.1 Python Add-in on the toolbar.

share|improve this answer
+1 Thanks for sharing this very useful script. –  Aaron Oct 1 '12 at 18:26
add comment

There is a similar post on GISse with a programmatic solution here.

Also, ArcGIS help 10.1 has some great information on combining categories and organizing categories into groups

share|improve this answer
I'm embarassed that question didn't come up in my search. Thank you for pointing me to it. –  RyanDalton Oct 1 '12 at 18:17
add comment

I've come up with a pretty simple way to enable multiple layer symbology all at once using the toolbox linked below. After you've added this toolbox, drag and drop the single symbology layer and then drag and drop all the layers you want to apply the symbology to (targets). General rules about matching geo-type (lines, points, polys) likely apply here. Once the tool has run, it will appear as nothing happened. Refresh your display (F5) - display will update with matching symbology. Click on a layer to view it's properties and click "OK" and the TOC symbol will update.

Download the Zip file for the toolbox here.

Here's the script if that is easier:

import arcpy

# Script arguments
Target_Layers = arcpy.GetParameterAsText(0)
if Target_Layers == '#' or not Target_Layers:
Target_Layers = "LayersToBeChanged" # provide a default value if unspecified

Symbology_Layer = arcpy.GetParameterAsText(1)
if Symbology_Layer == '#' or not Symbology_Layer:
Symbology_Layer = "SymbologyLayer" # provide a default value if unspecified

# Local variables:
Output_Symbology = Symbology_Layer

# Process: Apply Symbology From Layer (3)
arcpy.ApplySymbologyFromLayer_management(Target_Layers, Symbology_Layer)

Hopefully it works for you too. Zach

share|improve this answer
add comment

Your Answer


