У меня есть некоторый код Python, который запускается из проекта ArcMap. Любые объединения, которые пользователь, возможно, создал в проекте, должны быть удалены, чтобы мой код работал. К сожалению, код, который удаляет соединение… arcpy.RemoveJoin_management («layer1», «layer2»)… также нарушает некоторые свойства слоя, которые важны для моего приложения (выделенные поля, поля только для чтения и т. Д.).
Если объединения удаляются, если щелкнуть правой кнопкой мыши слой в ArcMap и выбрать «Удалить объединения», свойства слоя останутся без изменений.
Если я могу обнаружить, что соединение существует из моего кода, я просто выйду из кода и покажу сообщение, что пользователь должен вручную удалить свои объединения перед попыткой выполнения кода. Итак ... Может ли соединение быть обнаружено программно?
источник
Ответы:
Жаль, что в классе arcpy.Layer нет свойства hasJoin . Я думаю, что вы можете проверить соединение, посмотрев на имена полей, хотя. Вот простое доказательство концепции данных в файловой базе геоданных:
источник
Я думаю, вы обнаружите, что не существует пуленепробиваемого способа сделать это с объектами GP, вам нужно использовать ArcObjects и comtypes. Вот некоторые обсуждения на форумах ESRI о трудностях проверки соединений с помощью стандартных инструментов / объектов GP: https://geonet.esri.com/thread/20317
источник