Я нашел в справке ESRI .NET:
питон
Все приложения ArcGIS Desktop содержат встроенный язык сценариев, называемый Python. Многие области ArcGIS, особенно геообработка, доступны через упрощенные интерфейсы прикладного программирования (API) Python, что позволяет легко создавать и автоматизировать общие задачи. Сценарии Python легко доступны и могут быть созданы без внешней среды разработки. Существует множество общедоступных модулей Python, ориентированных на такие области, как наука, инженерия и математика. Несмотря на все свои сильные стороны, Python не подходит для любой задачи программирования. Хотя охват улучшается, не все области ArcGIS в настоящее время открыты для Python. Кроме того, опыт редактирования и отладки в Python не такой сложный и простой в использовании, как в коммерческих средах разработки, таких как Visual Studio.Наконец, вы не можете прослушивать и отвечать на события ArcGIS, реализовывать интерфейс COM или подключаться к множеству точек расширения COM ESRI с помощью Python.
а в справке ArcGIS Desktop:
ArcGIS 10.1 вводит Python в список языков для создания надстроек Desktop, предоставляя вам простое решение для расширения функциональности рабочего стола. Чтобы упростить разработку надстроек Python, вы должны загрузить и использовать мастер надстроек Python, чтобы объявить тип настройки. Мастер сгенерирует все необходимые файлы, необходимые для работы надстройки.
Если надстройки Python и .NET имеют одинаковую функциональность? Означает ли это, что в Python я могу делать то же самое, что и .NET?
источник
implement a COM interface, or plug into ESRI’s many COM extensibility points using Python
Это странно. Python может нормально работать с COM.Ответы:
Ответ на этот вопрос - да и нет. Можно с некоторым усилием сделать все в Python, что вы могли бы сделать в .Net, но легко и возможно - две совершенно разные вещи. После этого простейшая интерпретация - нет , надстройки Python не могут делать столько же, сколько надстройки .Net. Однако задачи, которые могут выполнять надстройки Python , намного проще и быстрее реализовать и протестировать.
С чисто технической точки зрения ArcGIS Desktop Add-In Framework предлагает следующие функциональные возможности:
.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.
источник
Одним из недостатков разработки надстроек в .NET является то, что в каждой новой версии ArcGIS используется другая несовместимая версия ArcObjects и другая несовместимая версия Visual Studio. Двоичные файлы, сгенерированные надстройками .NET, обычно совместимы с более поздними версиями ArcGIS, но только если вы не хотите вносить какие-либо изменения в вашу надстройку в версии ArcGIS более поздней, чем та, в которой она была изначально разработаны.
Я разработал надстройку .NET для загрузки слоев данных TIGER / Line Census Bureau на карту в ArcGIS 10.0, и двоичная надстройка все еще работает в ArcGIS 10.4. К сожалению, когда я захотел внести изменения в Надстройку, я попытался перенести решение в версию Visual Studio, совместимую с ArcGIS 10.4, и меня переполнило огромное количество сообщений об ошибках из-за несовместимых вызовов ArcObjects и функций Visual Studio.
Разработка надстроек в Python предполагает использование ArcPy вместо ArcObjects, поэтому документация становится более доступной, и процесс пересмотра кода для новой версии ArcGIS должен быть намного проще.
Основным недостатком использования Python вместо .NET является то, что создание интерфейса с графическим интерфейсом в Python намного сложнее. Пакеты, такие как wxPython, могут быть использованы, но есть много трудностей, чтобы заставить их работать в ArcGIS. Пользовательский интерфейс Toolbox гораздо более ограничен, чем диалоговые окна, которые могут быть встроены в .NET.
источник
Вы смотрите на среду рабочего стола, поэтому .NET, безусловно, вариант. Однако теперь вы будете ограничены в возможностях .NET, поскольку большая часть ArcGIS Server доступна для работы на нескольких платформах.
Мои два цента: если вы делаете глубокую работу с пользовательским интерфейсом, я бы предложил .NET, так как вы можете легко поднять пользовательский интерфейс. Если вы на самом деле просто пишете сценарии и используете более глубокие части анализа ArcGIS Python, вы сможете намного быстрее перейти на сервер (или в «облако»).
источник