Eu tenho algum código Python que é iniciado a partir de um projeto do ArcMap. Quaisquer associações que o usuário possa ter criado no projeto devem ser removidas para que meu código seja executado. Infelizmente, o código que remove uma junção ... arcpy.RemoveJoin_management ("layer1", "layer2") ... também quebra algumas das propriedades da camada que são críticas para o meu aplicativo (campos destacados, campos somente leitura, etc.).
Se as junções forem removidas clicando com o botão direito do mouse na camada no ArcMap e escolhendo "Remover junções", as propriedades da camada permanecerão intactas.
Se eu detectar que existe uma junção no meu código, simplesmente sairei do código e exibirei uma mensagem de que o usuário deve remover manualmente suas junções antes de tentar executar o código. Então ... Uma junção pode ser detectada programaticamente?
fonte
Respostas:
Pena que não há uma propriedade hasJoin na classe arcpy.Layer . Acho que você pode testar uma junção observando os nomes dos campos. Aqui está uma prova simples de conceito para dados em um geodatabase de arquivo:
fonte
Eu acho que você descobrirá que não há uma maneira à prova de balas para fazer isso com objetos GP; será necessário usar ArcObjects e comtypes. Aqui estão algumas discussões dos fóruns da ESRI sobre as dificuldades na verificação de junções com as ferramentas / objetos padrão do GP: https://geonet.esri.com/thread/20317
fonte