Які плюси та мінуси надбудови Python vs .NET надбудови до ArcGIS for Desktop?


11

Я знайшов довідку ESRI .NET:

Пітон

Усі програми ArcGIS Desktop містять вбудовану мову сценарію під назвою Python. Багато областей ArcGIS, зокрема геопроцесори, доступні через спрощені інтерфейси програмування Python (API), що полегшує створення та автоматизацію загальних завдань. Сценарії Python легко ділитися і можуть створюватися без зовнішнього середовища розробки. Існує безліч модулів Python для публічного домену, орієнтованих на такі сфери, як наука, інженерія та математика. При всіх своїх сильних сторонах Python не підходить для кожного завдання програмування. Хоча охоплення покращується, наразі не всі області ArcGIS піддаються Python. Крім того, досвід редагування та налагодження в Python не такий складний чи простий у використанні, як ті, що входять до комерційних середовищ розробки, таких як Visual Studio.Нарешті, ви не можете слухати і реагувати на події ArcGIS, реалізовувати COM-інтерфейс або підключатись до багатьох точок розширення ESRI за допомогою Python.

і в довідці ArcGIS Desktop:

ArcGIS 10.1 вводить Python до списку мов для створення надбудов на робочому столі, надаючи просте рішення для розширення функціональності робочого столу. Щоб спростити розробку надбудов Python, ви повинні завантажити та використовувати майстер надбудови Python для оголошення типу налаштування. Майстер генерує всі необхідні файли, необхідні для роботи надбудови.

Якщо додатки Python та .NET мають однаковий функціонал? Чи означає це, що я можу зробити те ж саме в Python як .NET ??


Звідки йдеться про те, що "Python та .NET мають однакові функції для створення надбудови"?
PolyGeo

Вибачте, я погано висловлюю те, що я маю на увазі (я
оновлюю

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonЦе дивно. Python може чудово працювати з COM.
Nathan W

Дійсно, я створив (тривіальні) додатки Python, які використовують ArcObjects через комтити. Однак я не намагався реалізувати COM-інтерфейси в Python. Я не впевнений, чи можливо це чи наскільки складно це було б порівняно з .NET. Крім того, жоден тип надбудови не дозволяє автоматичну реєстрацію в COM, тому деякі більш досконалі речі краще обслуговуватись із традиційним COM-компонентом, який може бути зареєстрований його інсталятором або (ESRI) RegAsm.
blah238

1
Це не ArcGIS, але саме так я створив інтерфейс COM, використовуючи Python для MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks, я б сказав, що тоді простіше. NET: )
Nathan W

Відповіді:


24

Відповідь на це питання - так і ні. Можна зробити певні зусилля, щоб зробити все в Python, що ви могли зробити в. Net, але легко і можливо - це дві дуже різні речі. Після цього найпростіша інтерпретація - ні , надбудови Python не можуть робити стільки, скільки .Net Add-Ins. Однак завдання надбудови Python, які можна виконати, набагато простіше та швидше реалізувати та протестувати.

З чисто технічної точки зору, платформа ArcGIS Desktop надбудовами пропонує такі функціональні можливості:

  • Чітко визначена схема на основі XML для опису серії загальних точок інтеграції на робочому столі та компонентів: кнопки, панелі інструментів, меню, інструменти, багатоповерхові меню та розширення, а також спосіб їх легкого з'єднання декларативним способом із ваш код на робочий стіл ArcGIS
  • Формат файлу та структура файлу ( .esriaddin) для розповсюдження коду налаштування робочого столу.
  • Встановлено механізм встановлення, перевірки та кешування .esriaddins, тож якщо вихідний файл вбудованої надбудови змінився, він перезавантажить змінений файл у локальний кеш надбудови надбудови.
  • Набір механізмів захисту та аутентифікації коду в Add-Ins: цифрове підписання .esriaddinфайлів, адміністративний контроль над рівнем аутентифікації, необхідний для дозволу встановлення надбудови.

Тут не вистачає будь-якого формального договору про поведінку або функціональність за кнопочками і т. Д. При встановленні .Net SDK для ArcGIS ви отримуєте інтеграцію Visual Studio у вигляді майстрів надбудови в діалогах управління проектами. , документація, фрагменти коду, прив'язки ArcObjects і т. д. Отже, коли ви проходите повз пункти входу, передбачені рамкою надбудови, додаток .Net дозволяє пройти решту шляху з API ArcObjects, з яким він також постачається в комплекті , а також містить бібліотеку фрагментів коду загальних завдань, які вже використовуються. У ArcGIS немає такого пакета програмного забезпечення для розробників Python: вся функціональність Python із відкритими через arcgisscripting / arcpy і вже входить у продукт. Отже, там, де .Net SDK поставляється як велике завантаження, найближчим моментом у Python є порівняно невелике завантаження майстра надбудови.

З іншого боку, Python є здатним споживати / реалізації COM - інтерфейсів , але з використанням COM з Python не пов'язаний з якою - або ArcGIS SDK або документована в довідковій системі ArcGIS. Якщо ви новачок у ArcGIS, це має бути достатньою перешкодою для входу, щоб відштовхнути вас, якщо ви дійсно не знаєте, що робите. Ви можете зробити COM в Python тут, але це досить близько до Тьюрінга Тарпіта, що важко виправдати витрачений час, якщо ви не користувач на рівні експертів, який уже знайомий з надходженнями COM і ArcObjects.

Я рекомендую вам поглянути на те, що ви можете зробити з arcpy . Ви можете автоматизувати безліч завдань, таких як виклик інструментів Geoprocessing та виконання пакетної маніпуляції з картографічними документами , а додатки Python дозволяють вам використовувати певні чітко визначені раковини подій та деякі елементи діалогового керування на додаток до базових можливостей arcpy. Якщо ви не можете придумати спосіб виконання своєї задачі в Python, виходячи з того, що йдеться в документації (вам потрібна складна взаємодія з користувальницьким інтерфейсом або підключення до подій, які не піддаються впливу майстра надбудови Python, або використовувати щось доступне лише в ArcObjects) , тоді зробіть свою розробку в додатку .Net.

Вибачте, це більш нюанс, ніж важкий і швидкий відповідь "так" або "ні", але це має дати вам деяке значення щодо того, чи слід їхати по маршруту Python або .Net у вашому додатку.

Я вважаю, що слід додати це розкриття: я розробив і розробив більшу частину специфічної функції Python для надбудов в ArcGIS.


Цікаво, чи ця відповідь з 2013 року та Desktop 10.1 ще є актуальною. Наприклад, схоже, що надбудови python тепер називаються наборами інструментів python? Інші можливості, можливо, змінилися і в бібліотеках Python, і в SDK.
інтохо

2

Одним з недоліків розробки Add-Ins в .NET є те, що кожна нова версія ArcGIS використовує іншу несумісну версію ArcObjects та іншу несумісну версію Visual Studio. Бінарні файли, згенеровані надбудовами .NET, як правило, сумісні з більш пізніми версіями ArcGIS, але лише якщо ви не хочете вносити будь-які зміни у свій надбудову у версії ArcGIS пізніше тієї, в якій він був спочатку розвинені.

Я розробив надбудову .NET для завантаження шарів даних Бюро перепису TIGER / Line Data на карту в ArcGIS 10.0, а двійковий надбудова все ще працює в ArcGIS 10.4. На жаль, коли я хотів внести зміни в надбудову, я спробував ввести рішення у версію Visual Studio, сумісну з ArcGIS 10.4, і мене заполонила величезна кількість повідомлень про помилки через несумісні виклики до ArcObjects та функції Візуальна студія.

Розробка надбудови в Python передбачає використання ArcPy замість ArcObjects, тому документація є більш доступною, а процес перегляду коду для нової версії ArcGIS повинен бути набагато простішим.

Основним недоліком використання Python замість .NET є те, що створити інтерфейс GUI в Python набагато складніше. Такі пакети, як wxPython, можна використовувати, однак у ArcGIS існує багато труднощів. Інтерфейс користувача Toolbox значно обмежений, ніж діалогові вікна, які можна вбудувати в .NET.


1

Ви дивитесь на робоче середовище, тому .NET, безумовно, є варіантом. Однак ви обмежитеся тим, що можете робити з .NET тепер, коли більша частина сервера ArcGIS доступна для роботи на декількох платформах.

Мої два центи: Якщо ви робите глибоку роботу інтерфейсу, я б запропонував .NET, оскільки ви можете злегка зрушити інтерфейс користувача. Якщо ви справді просто розробляєте сценарії та використовуєте більш глибокий аналіз частин ArcGIS Python, ви зможете набагато простіше перейти на Сервер (або "хмару").

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.