¿Agregar shapefile o clase de entidad como capa en ArcGIS Desktop usando Python / ArcPy?

20

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

Lo mejor que puedo hacer hasta ahora es agregar un archivo layer 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. (De manera equivalente: convierta un shapefile en un archivo de capa sin abrirlo, pero preferiría no hacerlo).

    
pregunta Tom W 05.01.2011 - 21:35

2 respuestas

29

Esto es lo que encontré funcionó:

import arcpy
from arcpy import env

# 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(path_to_shapefile_or_feature_class)

# add the layer to the map at the bottom of the TOC in data frame 0
arcpy.mapping.AddLayer(df, newlayer,"BOTTOM")

El marco de datos (variable df) en el que este código colocará la nueva capa es el primer marco de datos en el documento de mapa. También tenga en cuenta que este código agrega los datos como una nueva capa en la parte inferior de la tabla de contenido. También puede usar las otras opciones de disposición, que son "AUTO_ARRANGE" y "TOP".

    
respondido por el Kenton W 22.07.2011 - 19:10
10

Crear capa de entidades (gestión de datos) enlace

Lo probé en la ventana de Python de ArcMap y se agrega directamente a mi mapa (no tuve que obtener mi marco de datos y llamar a AddLayer).

arcpy.MakeFeatureLayer_management('r:/temp/a.shp','test')

    
respondido por el Jay Cummins 05.01.2011 - 21:52

Lea otras preguntas en las etiquetas