Ответ на этот вопрос - да и нет. Можно с некоторым усилием сделать все в Python, что вы могли бы сделать в .Net, но легко и возможно - две совершенно разные вещи. После этого простейшая интерпретация - нет , надстройки Python не могут делать столько же, сколько надстройки .Net. Однако задачи, которые могут выполнять надстройки Python , намного проще и быстрее реализовать и протестировать.
С чисто технической точки зрения ArcGIS Desktop Add-In Framework предлагает следующие функциональные возможности:
- Четко определенная схема на основе XML для описания ряда общих точек и компонентов интеграции рабочего стола: кнопок, панелей инструментов, меню, инструментов, меню и расширений из нескольких элементов, а также способа их простого декларативного соединения из ваш код на рабочий стол ArcGIS
- Формат файла и структура файла (
.esriaddin
) для распространения кода настройки рабочего стола.
- Установлен механизм установки, проверки и кэширования
.esriaddins
, поэтому, если исходный файл установленной надстройки был изменен, он перезагрузит измененный файл в локальный кэш надстройки рабочего стола.
- Набор механизмов безопасности и аутентификации для кода в надстройках: цифровая подпись
.esriaddin
файлов, административный контроль того, какой уровень аутентификации требуется для разрешения установки надстройки.
Чего не хватает платформе надстроек, так это любому формальному договору о поведении или функциональности за кнопками и т. Д. При установке .Net SDK для ArcGIS вы получаете интеграцию Visual Studio в форме мастеров надстроек в диалоговых окнах управления проектами. , документация, фрагменты кода, привязки ArcObjects и т. д. Поэтому, как только вы пройдете точки входа, которые предоставляет инфраструктура надстроек, .Net Add-In позволяет вам проделать оставшуюся часть пути с API-интерфейсами ArcObjects, которые также поставляются в комплекте с , а также содержит библиотеку фрагментов кода общих задач, которые уже можно использовать, В ArcGIS нет такого SDK разработчика Python: все функциональные возможности Python доступны через arcgisscripting / arcpy и уже включены в продукт. Таким образом, когда .Net SDK поставляется в виде крупной загрузки, наиболее близкой вещью в Python является относительно небольшая загрузка Мастера надстроек.
С другой стороны, Python является способным потреблять / реализации COM - интерфейсов , но с использованием COM из Python не связан с какой - либо ArcGIS SDK или документирована в справочной системе ArcGIS. Если вы новичок в разработке в ArcGIS, этого должно быть достаточно для входа, чтобы оттолкнуть вас, если вы действительно не знаете, что делаете. Вы можете сделать COM в Python здесь, но он достаточно близок к Turing Tarpit , так что трудно оправдать затраченное время, если вы не являетесь пользователем уровня эксперта, уже знакомым с входами и выходами COM и ArcObjects.
Я бы посоветовал вам посмотреть, что вы можете сделать с arcpy . Вы можете автоматизировать множество задач, таких как вызов инструментов геообработки и выполнение пакетных операций с документами карты , а также надстройки Python, позволяющие использовать некоторые четко определенные приемники событий и некоторые диалоговые элементы управления в дополнение к базовым возможностям arcpy. Если вы не можете придумать способ выполнить свою задачу в Python на основе того, что написано в документации (вам нужно какое-то сложное взаимодействие с пользовательским интерфейсом или подключиться к событиям, не представленным в мастере надстроек Python, или использовать что-то, доступное только в ArcObjects) , затем сделайте свою разработку в .Net Add-In.
Извините, это более нюанс, чем резкий ответ «да» или «нет», но он должен дать вам некоторое представление о том, следует ли вам идти по пути Python или .Net в вашей надстройке.
Полагаю, мне следует добавить это раскрытие: я разработал и разработал большую часть специфичных для Python функций для надстроек в ArcGIS.