2 votos

Listas, pero excluye los nombres de grupos/nombres de conjuntos de datos de características con Arcpy

Estoy buscando una manera de recorrer todas las clases de características (capas de características) dentro de un mxd, para luego utilizar algunas herramientas de geoprocesamiento en ellas. Antes de ejecutar estos geoprocesos, el script necesita cambiar estas clases de características a una determinada versión de trabajo.

Tengo el script funcionando como quiero excepto para los grupos o conjuntos de datos de características. Con el bucle piensa que estos nombres de grupos o conjuntos de datos de características son una capa propia y, por lo tanto, intenta cambiar a una versión de trabajo, no hace falta decir que el script falla y me quedo sin datos cambiados.

En el caso de las clases de características agrupadas, esto es bastante fácil, eliminar el grupo. Sin embargo, esto no funciona para los conjuntos de datos de características.

Mi pregunta es: ¿Existe una forma de "desagrupar" los conjuntos de datos de características o, mejor aún, de omitir los nombres de los grupos/conjuntos de datos de características en el script?

Mi script tal y como está ahora:

import arcpy
import arcpy.mapping

Project_number = arcpy.GetParameterAsText(0)

arcpy.env.overwriteOutput = True
inWorkspace = "G:/ZN_KGD@pkgd.sde"
parentVersion = "ZN_KGD_DIENSTVERSIE"

# Execute CreateVersion
arcpy.CreateVersion_management(inWorkspace, parentVersion, "ExPimp_{}".format(Project_number), "PUBLIC")

mxd = arcpy.mapping.MapDocument("G:\\zn\\NM\\GGB\\Applicaties-Admin\\Kerngis\\ExpImp\\{}\\{}.mxd".format(Project_number, Project_number))  # Uses your currently open MXD
for df in arcpy.mapping.ListDataFrames(mxd, ''): # Loop through dataframes
    for lyr in arcpy.mapping.ListLayers(mxd, '', df): # Loop through layers

         arcpy.ChangeVersion_management (lyr.name,
                                            "TRANSACTIONAL",
                                        "ZN_KGD.Export_{}".format(Project_number))

Estoy trabajando con ArcMap 10.3.1 He intentado la solución dada a continuación en todas las formas posibles que puedo imagen, sin suerte. Como mi conocimiento de python/arcpy es muy limitado en el mejor de los casos, ¿sería posible explicar el proceso de pensamiento detrás de él?

2voto

Hameno Puntos 129

Puede utilizar el isGroupLayer para identificar las capas de grupo para ignorarlas. Para ignorar las capas de conjuntos de datos de características se puede utilizar la propiedad dataSource para evaluar la ruta de las capas e ignorar las que tienen un nivel extra de profundidad siendo las capas del conjunto de datos de características dentro de la base de datos.

mxd = arcpy.mapping.MapDocument("G:\\zn\\NM\\GGB\\Applicaties-Admin\\Kerngis\\ExpImp\\{}\\{}.mxd".format(Project_number, Project_number))  # Uses your currently open MXD
for df in arcpy.mapping.ListDataFrames(mxd, ''): # Loop through dataframes
    for lyr in arcpy.mapping.ListLayers(mxd, '', df): # Loop through layers
        if not lyr.isGroupLayer:
            fcString = lyr.dataSource.split('.gdb\\')[1]
            fcOnly = fcString.find('\\')
            if fcOnly == -1:
                arcpy.ChangeVersion_management (lyr.name,
                                            "TRANSACTIONAL",
                                        "ZN_KGD.Export_{}".format(Project_number))

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