Коли використовувати ModelBuilder для сценаріїв Python і навпаки?


71

Я новачок в сценаріях Python в ArcGIS, але не новий в ModelBuilder.

Я хотів би знати переваги Python vs ModelBuilder.

Коли нам слід написати сценарій Python для автоматизації ГІС, а не використовувати ModelBuilder?

Які можливості автоматизації Python не можна знайти в ModelBuilder?

Відповіді:


82

Я вважаю, що користувач повинен чітко визначити свої цілі, перш ніж вирішити, який набір інструментів використовувати. Сценарії ModelBuilder та Python мають чудові результати в різних завданнях. Кілька думок:

  1. ModelBuilder не має можливостей відображення, тоді як arcpy.mapping робить.
  2. Python можна використовувати для оптимізації робочих процесів, наприклад, при багатопроцесорному пакеті або при паралельній обробці .
  3. Python дозволяє вкладати петлі та інші зручні ітеративні логічні засоби. Для досягнення подібного результату в ModelBuilder вам доведеться побудувати складні та складні вкладені моделі.
  4. Проста маніпуляція текстом з Python дуже проста, і дуже складна, або неможлива з ModelBuilder.

    наприклад, перейменувати список імен файлів з, наприклад, "m_2010_naip_2310345_nw.img" в "2310345nw.img", можна легко виконати за допомогою os.pathмодуля Python за допомогою модуля.

З іншого боку:

  1. ModelBuilder дуже корисний для швидкого збирання загальних інструментів та усунення необхідності в налагодженні сценаріїв.

  2. ModelBuilder має дуже корисний рекурсивний ітератор, який легко здійснити, щоб прокрутити папки та підпапки.

  3. ModelBuilder досконало візуально та інтуїтивно зображує робочий процес для складних завдань .

  4. ModelBuilder може включати інструменти сценарію Python .


5
Описано відмінності між Python та Model Builder в ArcGIS чітко. Дякую
BBG_GIS

24
Я додам також: 1. ви можете запустити свій скрипт Python за межами ArcMap 2. Ви можете використовувати ArcObjects в Python, 3. Можливо, є деякі різниці швидкості.
Томек


3
+1 ГОЛОВНІ ЛОПИ & arcpy.mapping! Мені подобається можливість робити обчислення в сценарії та додавати їх до атрибутивних таблиць або ще краще до макета карти (наприклад, для кожного типу заболочених земель).
Рой

2
Я читав сценарії пітона для книги ArcGIS. Я також додаю ще кілька можливостей: 1- курсори скриптів дозволяють вам перебирати записи в таблиці, читаючи наявні рядки та вставляючи нові рядки. 2- сценарії можуть використовуватися для обгортання іншого програмного забезпечення, тобто для склеювання аплікації. наприклад, python може використовуватися для доступу до функцій в Microsoft Excel або в статистичному пакеті R. 3-сценарій може бути запущений як автономний сценарій на диску поза ArcGIS. Вам не потрібно запускати ArcMap або ArcCatalog для скрипту, щоб робота. (Сценарії Python для ArcGIS, глава 2, стор. 39)
BBG_GIS

24

Якщо ви працюєте виключно в межах ArcGIS, є кілька міркувань, які я б враховував, намагаючись визначити підхід.

  • Що ви намагаєтеся досягти,
  • Які ваші поточні набори навичок,
  • Чи будете ви ділитися своєю роботою з іншими людьми для використання, навчання чи маніпулювання та
  • Хто ваша цільова аудиторія.

З огляду на ці міркування:

  1. Часто швидше і простіше побудувати процес в ModelBuilder, ніж в Python, якщо частина вашого процесу не може бути повторена в ModelBuilder.
  2. Якщо ви не знаєте Python і не маєте наміру його вивчати, ModelBuilder - це чудовий варіант.
  3. Якщо ви не знаєте Python і хочете навчитися його включати у свій набір навичок, ModelBuilder - це прекрасний спосіб почати зі створення простих моделей, а потім експортувати їх у Python, щоб у вас був попередньо побудований кістяк остаточного процесу. . Цей метод справді дорожчає, оскільки існує багато сторонньої інформації та змінних, які зазвичай створюються в процесі конверсії, але це все ще чудовий спосіб почати навчання.
  4. Якщо ви будуєте інструменти для особистого користування, зазвичай використовуйте той спосіб, яким ви відчуваєте себе найбільш комфортно. Я особисто використовую обидва, залежно від моїх потреб.
  5. Якщо ви плануєте поділитися своїм аналізом з іншими, і хочете поділитися своєю моделлю / сценарієм з іншими людьми, є частиною вашої технологічної документації, модель, як правило, набагато простіше наслідувати та розуміти для людей, які не мають технічних питань.

Напевно, немає відповіді на питання "що краще" для особистого використання, але якщо ви шукаєте довгострокові можливості для працевлаштування, вивчаючи Python, ви виділите себе окремо від тих, хто лише вміє користуватися заздалегідь запрограмованими інструментами, або просто знайте, як використовувати ModelBuilder. Ви також даєте собі можливість вийти за межі Python для ArcGIS (ArcPy) та почати автоматизувати набагато більше завдань та проектів за допомогою інших власних GIS-бібліотек з відкритим кодом, а також багатьох бібліотек, що не є GIS (тобто база даних , маніпулювання зображеннями, статистика тощо).


20

Model Builder - це чудовий і простий у вивченні мову візуального програмування та хороший вхід у GIS-програмування загалом. Але в деяких речах пітон може зробити більше.

Одним із прикладів є інтеграція не-ESRI бібліотек GIS. Майже всі ГІС з відкритим кодом можуть бути адресовані і через python (наприклад, GRASS , Sextante , QGIS , SAGA ). Це мені дуже допомогло, тому що у мене є лише ліцензія ArcView. Тож кожен раз, коли я не можу використовувати певний інструмент геопроцедури в ArcGIS, я переглядаю, які ще варіанти доступні в ГІС з відкритим кодом. Потім я беру ці OpenSource-інструменти і комбіную їх з інструментами ArcGIS або в більший скрипт python, або інтегрую їх у ModelBuilder через менший скрипт python.

Я впевнений, що інші члени можуть назвати більше переваг.


9

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

Крім будь-яких функціональних можливостей, які може не вистачати ModelBuilder, існує також більш фундаментальна дискусія. Загалом, сценарії набагато більше підходять для створення складних робочих процесів. Код обробляється зверху вниз, а складні завдання можна підрозділити на більш дрібні підзадачі, використовуючи, наприклад, функції. або об’єкти. Графічний інструмент, такий як конструктор моделей, як правило, стає великим спагетті.


7

Я частково створюю сценарії Python. Приємніше писати код, ніж возитися з підключенням рядків до ящиків і таких, принаймні для мене.

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

І як згадує @Aaron, ви можете легко налаштувати циклічність в сценарії Python.

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


5

Я виявив, що я, здається, не зациклювався на рішенні більше з конструктором моделей, ніж з написанням пітона. Дещо «чорний ящик» характер розробника моделей для мене ускладнює пошук місця, де знаходиться проблема.

Я також виявив, що можу знайти набагато більше допомоги на python. Я схильний знаходити безліч тупиків і тем про конструктор моделей. Тут також є менший приклад для проходження, де, як і з python, ви, ймовірно, можете знайти невеликі фрагменти більшості частин будь-якого сценарію, який ви пишете.

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