Mam trochę kodu Python, który jest uruchamiany z projektu ArcMap. Wszelkie sprzężenia, które użytkownik mógł utworzyć w projekcie, muszą zostać usunięte, aby mój kod działał. Niestety kod, który usuwa złączenie… arcpy.RemoveJoin_management („layer1”, „layer2”)… również łamie niektóre właściwości warstwy, które są krytyczne dla mojej aplikacji (podświetlone pola, pola tylko do odczytu itp.).
Jeśli łączenia są usuwane poprzez kliknięcie warstwy prawym przyciskiem myszy w ArcMap i wybranie „Usuń połączenia”, właściwości warstwy pozostają nienaruszone.
Jeśli mogę wykryć, że istnieje sprzężenie z mojego kodu, po prostu wyjdę z kodu i wyświetli komunikat, że użytkownik musi ręcznie usunąć swoje sprzężenia przed próbą uruchomienia kodu. Więc… Czy sprzężenie można wykryć programowo?
źródło
Odpowiedzi:
Szkoda, że nie ma właściwości hasJoin w klasie arcpy.Layer . Myślę, że możesz przetestować złączenie, patrząc na nazwy pól. Oto prosty dowód koncepcji danych w geobazie pliku:
źródło
Myślę, że przekonasz się, że nie ma kuloodpornego sposobu na zrobienie tego z obiektami GP, będziesz musiał użyć ArcObjects i comtypes. Oto dyskusja z forów ESRI na temat trudności w sprawdzaniu połączeń za pomocą standardowych narzędzi / obiektów GP: https://geonet.esri.com/thread/20317
źródło