5 votos

Ventana de Python vs Toolbox script en ArcGIS for Desktop?

Mi pregunta es similar a Añadir capa en la sesión actual usando ARCPY . Mi script funciona en la ventana de ArcMap python pero no como script en toolbox. Estoy ejecutando ArcGIS 10.0 SP4. El script se da a continuación, y el error dice que falla en la línea 3, "CreateObject no puede abrir el documento del mapa"

import arcpy
import arcpy.mapping as map
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
updateLayer = arcpy.mapping.ListLayers(mxd, "SectionClip",df)[0]
arcpy.MakeFeatureLayer_management(updateLayer,"SectionInner2")
sourceLayer = arcpy.mapping.ListLayers(mxd,"SectionInner",df)[0]
newupdateLayer = arcpy.mapping.ListLayers(mxd, "SectionInner2",df)[0]
arcpy.ApplySymbologyFromLayer_management(newupdateLayer,sourceLayer)
newupdateLayer.showLabels = True
for lyr in map.ListLayers(mxd):
    if lyr.name == "SectionInner2":
        lyr.showLabels = True
        for lblclass in lyr.labelClasses:
            lblclass.expression = '"%s" & [SECTION] & "%s"' % ("<CLR red='0' green='0' blue='0'>""<FNT size='12'>""<BOL>", "</BOL>""</FNT>""</CLR>")
            lblclass.showClassLabels = True

arcpy.RefreshActiveView()
mxd.save()

No puedo actualizar a ArcGIS 10.1 en breve, por lo que la opción de utilizar un complemento de python no está disponible.

4 votos

¿Tienes marcadas las opciones "Ejecutar siempre en primer plano" y "Ejecutar Python script en proceso"?

2 votos

Creo que la razón por la que @blah238 hace su pregunta está bien descrita en la ayuda en línea bajo el título Referenciar un documento cartográfico en disco o utilizar la palabra clave CURRENT dentro de ArcMap

0 votos

¿Te ayudó la sugerencia de @blah238? Si es así, háganoslo saber para que pueda ser transferida a una respuesta que pueda aceptar.

7voto

Ashwin Puntos 16

Lo único que veo en tu código que podría causar este problema es que estás poniendo el valor del MXD en "ACTUAL", lo cual está bien... SI tienes un MXD abierto (ejecutando la herramienta script desde ArcMap).

Pude hacer que su código fallara con la misma respuesta si intentaba ejecutar el código desde la aplicación independiente de ArcCatalog. ¿Es eso lo que estabas haciendo?

Captura de pantalla utilizando ArcCatalog para ejecutar una herramienta script enter image description here

Si su problema era intentar ejecutar el script desde ArcCatalog independiente, tiene dos opciones para ejecutar su script.
1. Ejecute la herramienta script desde la pestaña Catálogo dentro de ArcMap enter image description here

2. Aplicación Establezca el parámetro MXD como una ruta de acceso a un MXD válido

arcpy.mapping.MapDocument(r"c:\path\to\your\map.mxd")

Puedes leer más detalles sobre el uso de la clase arcpy.Mapping.MapDocument aquí

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