J'ai du code Python qui est lancé à partir d'un projet ArcMap. Toutes les jointures que l'utilisateur peut avoir créées dans le projet doivent être supprimées pour que mon code s'exécute. Malheureusement, le code qui supprime une jointure… arcpy.RemoveJoin_management ("layer1", "layer2") ... casse également certaines des propriétés de couche qui sont essentielles pour mon application (champs en surbrillance, champs en lecture seule, etc.).
Si les jointures sont supprimées en cliquant avec le bouton droit sur la couche dans ArcMap et en choisissant «Supprimer les jointures», les propriétés de la couche restent intactes.
Si je peux détecter qu'une jointure existe à partir de mon code, je quitterai simplement le code et afficherai un message indiquant que l'utilisateur doit supprimer manuellement ses jointures avant d'essayer d'exécuter le code. Alors… Une jointure peut-elle être détectée par programme?
la source
Réponses:
Dommage qu'il n'y ait pas de propriété hasJoin sur la classe arcpy.Layer . Je pense que vous pouvez tester une jointure en regardant les noms de champs. Voici une preuve de concept simple pour les données d'une géodatabase fichier:
la source
Je pense que vous constaterez qu'il n'y a pas de moyen pare-balles de le faire avec des objets GP, vous devrez utiliser ArcObjects et comtypes. Voici quelques discussions des forums ESRI sur les difficultés à vérifier les jointures avec les outils / objets GP standard: https://geonet.esri.com/thread/20317
la source