Tengo un código Python que se inicia desde un proyecto de ArcMap. Cualquier combinación que el usuario haya creado en el proyecto debe eliminarse para que se ejecute mi código. Desafortunadamente, el código que elimina una unión ... arcpy.RemoveJoin_management ("layer1", "layer2") ... también rompe algunas de las propiedades de capa que son críticas para mi aplicación (campos resaltados, campos de solo lectura, etc.).
Si las uniones se eliminan haciendo clic con el botón derecho en la capa en ArcMap y eligiendo "Eliminar uniones", las propiedades de la capa quedan intactas.
Si puedo detectar que existe una unión desde mi código, simplemente saldré del código y mostraré un mensaje que el usuario debe eliminar manualmente sus uniones antes de intentar ejecutar el código. Entonces ... ¿Se puede detectar un Join mediante programación?
fuente
Respuestas:
Lástima que no haya una propiedad hasJoin en la clase arcpy.Layer . Sin embargo, creo que puedes probar una unión mirando los nombres de los campos. Aquí hay una prueba de concepto simple para los datos en una geodatabase de archivos:
fuente
Creo que descubrirá que no hay una forma a prueba de balas para hacer esto con los objetos GP, deberá usar ArcObjects y comtypes. Aquí hay una discusión de los foros de ESRI sobre las dificultades para verificar las uniones con las herramientas / objetos GP estándar: https://geonet.esri.com/thread/20317
fuente