3

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

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

mxd.saveACopy("C:\\MAPS\\map2.mxd")
0

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. – gomapping May 1 '13 at 22:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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