Когда использовать ModelBuilder поверх сценариев Python и наоборот?

71

Я новичок в скриптах Python в ArcGIS, но не новичок в ModelBuilder.

Я хотел бы знать преимущества Python по сравнению с ModelBuilder.

Когда нам следует писать сценарий Python для автоматизации ГИС, а не использовать ModelBuilder?

Какие возможности автоматизации Python мы не можем найти в ModelBuilder?

BBG_GIS
источник

Ответы:

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
Я читаю сценарии Python для книги ArcGIS. Я также добавил еще несколько возможностей: 1-скриптовые курсоры позволяют циклически проходить по записям в таблице, читать существующие строки и вставлять новые строки. 2 - Сценарии могут использоваться, чтобы обернуть другое программное обеспечение, то есть, чтобы склеить приложение. например, python может использоваться для доступа к функциям в Microsoft Excel или в статистическом пакете R. 3-A скрипт может быть запущен как отдельный скрипт на диске вне 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 for ArcGIS (ArcPy) и начать автоматизировать гораздо больше задач и проектов с помощью других проприетарных и ГИС-библиотек с открытым исходным кодом, а также многих не-ГИС-библиотек (т. Е. Базы данных). , манипуляции с изображениями, статистика и т. д.).

RyanDalton
источник
20

Model Builder - отличный и простой в освоении язык визуального программирования и хороший вход в ГИС-программирование в целом. Но в некоторых случаях Python может сделать больше.

Одним из примеров является интеграция ГИС-библиотек не-ESRI. Почти все ГИС с открытым исходным кодом могут быть адресованы через Python (например, GRASS , Sextante , QGIS , SAGA ). Это мне очень помогло, потому что у меня есть только лицензия ArcView. Поэтому каждый раз, когда я не могу использовать определенный инструмент геообработки в ArcGIS, я смотрю, какие другие опции доступны в Open Source GIS. Затем я беру эти инструменты OpenSource и объединяю их с инструментами ArcGIS либо в более крупном скрипте Python, либо интегрирую их в ModelBuilder через меньший скрипт Python.

Я уверен, что другие участники могут назвать больше преимуществ.

Мартин
источник
9

При использовании Python и ArcGIS вы получаете всю функциональность Python в дополнение к тому, что вы уже имели в ArcGIS. Если вам нужна такая сила и гибкость, зависит от ваших пожеланий. Кроме того, знакомство с языком программирования, таким как Python, и его использование на самом деле требует времени. Если эти инвестиции того стоят, решать только вам. Тем не менее, для серьезной обработки данных реальный язык сценариев является очень хорошим дополнением в вашем арсенале.

Помимо любой функциональности, которую может пропустить ModelBuilder, существует также более фундаментальное обсуждение. В общем, сценарии гораздо более подходят для создания сложных рабочих процессов. Код обрабатывается сверху вниз, и сложные задачи можно подразделить на более мелкие подзадачи, используя, например, функции. или объекты. Графический инструмент, такой как конструктор моделей, имеет тенденцию превращаться в большие спагетти.

Пол Химстра
источник
7

Я неравнодушен к созданию скриптов Python. Писать код веселее, чем возиться с подключением линий к блокам и тому подобным, по крайней мере для меня.

Что действительно хорошо в скриптах Python, так это то, что вы можете запланировать выполнение ваших скриптов в удобное для вас время. Если у вас есть сценарий, выполнение которого занимает некоторое время или его необходимо запускать в нерабочее время, это действительно удобно. Вы можете увидеть пример того, как запланировать сценарий здесь .

И, как упоминает @Aaron, вы можете легко настроить цикл в скрипте Python.

Если вы только начинаете использовать сценарии Python, вы можете создать модель с помощью Model Builder и экспортировать ее как сценарий Python. Я делаю это иногда, если мне трудно понять, как использовать несколько инструментов в скрипте. Это может помочь вам понять, как составлять сценарии.

Пэтти Юла
источник
5

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

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

Rex
источник