4 votos

Obtener el Alias de Campo de una capa, desde un documento de Mapa

Tengo un muy simple script, que bucea a través de todas las capas en un mxd y bucea a través de los campos, e imprime el Nombre de Alias para el campo, pero estoy teniendo algunos problemas, parece estar imprimiendo el alias de campo de la clase de característica (en SDE) no el valor que he cambiado en el documento del mapa...

Aquí está el script

import os, arcpy

myMxdFolder = r"D:\Maps"
count = 0

for mxd in os.listdir(myMxdFolder):
    #print mxd
    if mxd.endswith(".mxd"):
        #if mxd.startswith("COMPASS") or mxd.startswith("COLGIS"):
        if mxd.startswith("COLGIS_City_Occupiers.mxd"):
            mxdoc = arcpy.mapping.MapDocument(myMxdFolder + os.sep + mxd)
            filePath =  mxdoc.filePath
            print filePath
            for lyr in arcpy.mapping.ListLayers(mxdoc):
                desc = arcpy.Describe(lyr)
                print lyr.name
                fields = desc.fields
                for field in fields:
                    print field.aliasName

La salida es

OBJECTID
UPRN
ADDRESS
OCCUPIER
SHAPE

pero los Aliases en el documento del mapa que he puesto son:

OBJECTID
HIGHLIGHT::UPRN
Address
Occupier
SHAPE

y eso es lo que esperaba, ¿se ha perdido un truco en alguna parte del código?

1voto

Free Wildebeest Puntos 1548

Lamentablemente, creo que su respuesta se puede encontrar en este extracto de este documento de ayuda de ESRI sobre Capa

No todas las propiedades de las capas son accesibles a través del objeto Capa. Hay muchas propiedades disponibles en el cuadro de diálogo ArcMap Layer Properties que no están expuestas al entorno de scripting de Arcpy (por ejemplo, rangos de escala, propiedades de visualización, alias de campo, simbología, etc.). etc.). La función UpdateLayer permite reemplazar todas las propiedades de las capas disponibles en el cuadro de diálogo de propiedades de capa de ArcMap utilizando un archivo capa (.lyr) que contiene las personalizaciones.

Se refiere específicamente a field aliases y el Layer Properties diálogo.

Esto podría ser algo que valga la pena presentar una idea al Ideas de ArcGIS sitio.

0voto

UnkwnTech Puntos 21942

Como ha dicho Get Spatial el objeto Layer no parece capaz de llegar a los alias de campo pero si se utiliza el Campo con ListFields o Describe entonces parece que sí proporciona acceso a ellos.

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