Ich habe Python-Code, der in einem ArcMap-Projekt gestartet wird. Alle Verknüpfungen, die der Benutzer möglicherweise im Projekt erstellt hat, müssen entfernt werden, damit mein Code ausgeführt werden kann. Leider zerstört der Code, der einen Join entfernt… arcpy.RemoveJoin_management ("layer1", "layer2") ... auch einige der Layereigenschaften, die für meine Anwendung kritisch sind (hervorgehobene Felder, schreibgeschützte Felder usw.).
Wenn Verknüpfungen entfernt werden, indem Sie mit der rechten Maustaste auf die Ebene in ArcMap klicken und "Verknüpfungen entfernen" auswählen, bleiben die Ebeneneigenschaften erhalten.
Wenn ich in meinem Code feststellen kann, dass ein Join vorhanden ist, beende ich den Code einfach und zeige eine Meldung an, dass der Benutzer seine Joins manuell entfernen muss, bevor er versucht, den Code auszuführen. Also ... Kann ein Join programmgesteuert erkannt werden?
quelle
Antworten:
Schade, dass es in der arcpy.Layer-Klasse keine hasJoin-Eigenschaft gibt . Ich denke, Sie können einen Join testen, indem Sie sich die Feldnamen ansehen. Hier ist ein einfacher Proof of Concept für Daten in einer Datei-Geodatabase:
quelle
Ich denke, Sie werden feststellen, dass es keine kugelsichere Möglichkeit gibt, dies mit GP-Objekten zu tun. Sie müssen ArcObjects und comtypes verwenden. Hier einige Diskussionen aus den ESRI-Foren zu den Schwierigkeiten bei der Suche nach Verknüpfungen mit den Standard-GP-Tools / -Objekten: https://geonet.esri.com/thread/20317
quelle