2 votos

Añadir una capa con un color específico al mapa en ArcPy

Tengo un mapa en blanco. Y tengo un shapefile. Me gustaría añadir el shapefile al documento del mapa, cambiar su color a gris y luego guardar el documento del mapa.

Mi plan es hacer una capa del shapefile ( MakeFeatureLayer_management ), añadir la capa resultante al documento del mapa ( mapping.AddLayer ) y luego cambiar su color utilizando ApplySymbologyFromLayer_management .

Este es mi código hasta ahora:

import arcpy, os

### Set directory
arcpy.env.workspace = ...
arcpy.env.overwriteOutput = 1

### Define inputs
yellow = "symbology/yellow.lyr"

# Set map document
mxd_city_year = arcpy.mapping.MapDocument(r"...\blank_map.mxd")
DF = arcpy.mapping.ListDataFrames(mxd_city_year)[0]

# Add layers
arcpy.MakeFeatureLayer_management("states/continental_US.shp", "us")
basis = arcpy.mapping.Layer("us")
arcpy.mapping.AddLayer(DF, basis, "AUTO_ARRANGE")
arcpy.ApplySymbologyFromLayer_management(basis, yellow)

# Save map
mxd_city_year.saveACopy("thresh_" + city + "_" + year + ".mxd")

El código se ejecuta (sin error). Sin embargo, en el documento del mapa resultante el color sigue pareciendo aleatorio.

¿Cuál es mi error?

2voto

Alex Tereshenkov Puntos 13433

El problema es que estás aplicando la simbología no a la capa del mapa, sino sólo a una capa de características.

Primero hay que acceder al objeto de capa de mapa recién añadido utilizando

arcpy.mapping.ListLayers(mxd_city_year, wildcard="us", data_frame=DF)[0]

y luego utilizar esta capa de mapa más adelante en el código:

import arcpy, os

### Set directory
arcpy.env.workspace = r'C:\GIS\Temp'
arcpy.env.overwriteOutput = 1

### Define inputs
yellow = r"symbology/yellow.lyr"

# Set map document
mxd_city_year = arcpy.mapping.MapDocument(os.path.join(arcpy.env.workspace, "blank_map.mxd"))
DF = arcpy.mapping.ListDataFrames(mxd_city_year)[0]

# Add layers
arcpy.MakeFeatureLayer_management("continental_US.shp", "us")
basis = arcpy.mapping.Layer("us")
arcpy.mapping.AddLayer(DF, basis, "AUTO_ARRANGE")

#access newly added layer
map_lyr = arcpy.mapping.ListLayers(mxd_city_year, wildcard="us", data_frame=DF)[0]
arcpy.ApplySymbologyFromLayer_management(map_lyr, yellow)

# Save map
mxd_city_year.saveACopy("out.mxd")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X