4 votos

Ver todas las combinaciones en cualquier MXD capa en un solo lugar?

Tengo un MXD con cerca de cincuenta capas, y sé que hay una tabla que se unió a al menos uno, posiblemente más, de esas capas. Pero no sé de qué :)

Sé que me pueden buscar fácilmente en una capa específica para encontrar lo que (si alguno) se une a la que tiene. Sin embargo, hay una manera de conseguir un MXD-amplia visión de combinaciones que se puede hacer una lista de todas las capas con une, y lo que se unió a? (Siempre fui fan de los accesos directos...)

9voto

Alex Tereshenkov Puntos 13433

Probablemente como para envolver este código en Python agregar-en el que usted puede poner en un botón en la interfaz de usuario de ArcMap.

No hay ninguna manera de saber el uso de arcpy si una capa tiene alguna de las combinaciones, sin embargo, esto será visible si usted explorar sus campos. Después de unirse a está establecido, cada campo se antepone con el nombre de la capa en el formulario layer_name.field_name. Si hay un punto (.) en el campo nombre y, a continuación, la capa tiene la combinación.

for lyr in arcpy.mapping.ListLayers(arcpy.mapping.MapDocument('current')):
  if len([f.name for f in arcpy.ListFields(lyr)][0].split('.')) > 1:
    print lyr

Teóricamente, incluso el acceso a la OID debería ser suficiente (si tienes muchos niveles para pasar, no podría tomar tiempo extra listado de todos los campos). Así que, simplemente limitar el tipo de campo;

for lyr in arcpy.mapping.ListLayers(arcpy.mapping.MapDocument('current')):
  if len([f.name for f in arcpy.ListFields(lyr, field_type='OID')][0].split('.')) > 1:
    print lyr

Para obtener el nombre de la tabla combinada (la que ves debajo de la Une Y Relaciona ficha de diálogo Propiedades de Capa de la ventana), sería necesario para iterar a través de los campos de cada capa que se une y encontrar el único conjunto de datos de nombres en los nombres de campos.

for lyr in arcpy.mapping.ListLayers(arcpy.mapping.MapDocument('current')):
    if len([f.name for f in arcpy.ListFields(lyr, field_type='OID')][0].split('.')) > 1:
        print lyr
        print set([f.name.split('.')[0] for f in arcpy.ListFields(lyr)])

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