Search code examples
pythonarcgisarcpy

How do I add a shapefile in ArcGIS via python scripting?


I am trying to automate various tasks in ArcGIS Desktop (using ArcMap generally) with Python, and I keep needing a way to add a shape file to the current map. (And then do stuff to it, but that's another story).

The best I can do so far is to add a layer file to the current map, using the following ("addLayer" is a layer file object):

def AddLayerFromLayerFile(addLayer):
 import arcpy
 mxd = arcpy.mapping.MapDocument("CURRENT")
 df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
 arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE")
 arcpy.RefreshActiveView()
 arcpy.RefreshTOC()
 del mxd, df, addLayer

However, my raw data is always going be shape files, so I need to be able to open them. (Equivantly: convert a shape file to a layer file wiothout opening it, but I'd prefer not to do that).


Solution

  • Variable "theShape" is the path of the shape file to be added.

    import arcpy
    import arcpy.mapping
    # get the map document 
    mxd = arcpy.mapping.MapDocument("CURRENT")  
    
    # get the data frame 
    df = arcpy.mapping.ListDataFrames(mxd,"*")[0]  
    
    # create a new layer 
    newlayer = arcpy.mapping.Layer(theShape)  
    
    # add the layer to the map at the bottom of the TOC in data frame 0 
    arcpy.mapping.AddLayer(df, newlayer,"BOTTOM")
    
    # Refresh things
    arcpy.RefreshActiveView()
    arcpy.RefreshTOC()
    del mxd, df, newlayer