¿Cómo agrego un shapefile en ArcGIS a través de scripts de python?

Estoy tratando de automatizar varias tareas en ArcGIS Desktop (generalmente con ArcMap) con Python, y sigo necesitando una forma de agregar un archivo de forma al mapa actual. (Y luego hazle cosas, pero esa es otra historia).

Lo mejor que puedo hacer hasta ahora es agregar un archivo de capa al mapa actual, usando lo siguiente (“addLayer” es un objeto de archivo de capa):

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 

Sin embargo, mis datos sin procesar siempre serán archivos de forma, por lo que necesito poder abrirlos. (Equivante: convierta un archivo de forma en un archivo de capa sin abrirlo, pero preferiría no hacerlo).

La variable “theShape” es la ruta del archivo de forma que se va a agregar.

 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 

Recientemente luché con una tarea similar, e inicialmente utilicé el método para identificar el documento de mapa, identificar el dataframe, crear una capa y agregar la capa al documento de mapa. Curiosamente, todo esto se puede lograr utilizando lo siguiente siempre que se llame desde el documento de mapa actual.

 # import modules import arcpy # create layer in TOC and reference it in a variable for possible other actions newLyr = arcpy.MakeFeatureLayer_managment( in_features, out_layer )[0] 

Make Feature Layer requiere dos entradas, las entidades de entrada y la capa de salida. Las entidades de entrada pueden ser cualquier tipo de capa o clase de entidad. Esto incluye shapefiles. Capa de salida es el nombre de la capa que aparecerá en la tabla de contenido.

Además, Make Feature Layer puede aceptar una cláusula where para crear una consulta de definición en el momento de la creación. Por lo general, así es como lo implemento, cuando necesito crear muchas capas con diferentes consultas de definición rápidamente.

Finalmente, en el fragmento de código anterior, aunque no es necesario, demostré cómo rellenar una variable con el resultado de la herramienta de salida para que la capa pueda manipularse en la tabla de contenido utilizando arcpy.mapping si es necesario más adelante en el script. . Cada herramienta devuelve un objeto de resultado. Se puede acceder a la salida del objeto de resultado utilizando el método getOutput, pero también se puede acceder al mismo usando el índice de la propiedad de resultado que le interesa, en este caso la salida ubicada en el índice 0.