I have a Shapefile:

  • C:\DATA\points.shp

A layer file:

  • C:\SYMBOLOGY\symbology.lyr

And a map document:

  • C:\MAPS\map.mxd

How can I add points.shp to map.mxd with the properties of symbology.lyr all using python?


2 Answers 2


I just tested this and it worked!

The layer file that I added, and then changed the data source of, was saved from a layer called dummy that pointed at a dummy.shp file.

import arcpy

mxd = arcpy.mapping.MapDocument("C:\\MAPS\\map.mxd")
df = arcpy.mapping.ListDataFrames(mxd,"Layers")[0]

addLayer = arcpy.mapping.Layer("C:\\SYMBOLOGY\\symbology.lyr")
arcpy.mapping.AddLayer(df, addLayer)
lyr = arcpy.mapping.ListLayers(mxd,"dummy",df)[0]

print lyr.name
print lyr.dataSource

lyr.replaceDataSource("C:\\DATA\\", "SHAPEFILE_WORKSPACE", "points")
lyr.name = "points"

print lyr.dataSource
print lyr.name


I haven't tested this out, but the easiest way should be to simply rename (or copy) symbology.lyr to points.lyr (the same basename as your shapefile). Generally speaking, when you load a shapefile into ArcMap that has a similarly name Layer file, the symbology of the layer "follows" the raw data (shapefile) and is applied on load.

  • Yes, but symbology.lyr is a generic file for many maps and really I just need to do exactly what is outlined above. This is just a small part of a bigger task to automate map creation. Thanks anyways though.
    – jtgis
    Commented May 1, 2013 at 22:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.