Зачем изучать / использовать Python Toolboxes поверх Python Script Tools? [закрыто]

25

Я написал несколько наборов инструментов Python (которые впервые появились в ArcGIS 10.1), но мне еще предстоит решить, следует ли / когда мне их писать, а не инструменты сценариев Python в стандартном наборе инструментов.

Я подумал, что интерактивная справка может просветить меня, когда она предваряет некоторые точки:

После создания инструменты в наборе инструментов Python дают много преимуществ

Однако все перечисленные пять преимуществ, по-видимому, заключаются в невозможности использовать Python для написания инструментов, и ни одно из них не указывает на преимущество наборов инструментов Python над инструментами сценариев Python.

Вот два преимущества, о которых я могу думать:

  • Теперь я могу написать «чистый» инструмент Python в одном скрипте Python без необходимости подключать его к отдельно создаваемому диалогу с его валидацией инструмента, которая выглядит так, как будто она была прикреплена, но я счастлив быть прагматичным, а не чистым в этом отношении.
  • Теперь я мог бы использовать код (Python или любой другой язык, способный писать текстовые файлы) для автоматизации написания наборов инструментов Python, но мне еще не приходилось сталкиваться с требованием сделать это

Я пропускаю убедительные аргументы, которые привели Esri к предоставлению возможности Python Toolbox, и если да, то что это?

PolyGeo
источник

Ответы:

34

Эти два очень, очень близки по функциональности, но не полностью эквивалентны.

Общее для обоих

  • Включает в себя набор инструментов с уникальным псевдонимом для идентификации
  • Можете позвонить из arcpy
  • Получите диалоговое окно инструмента геообработки (по сути полный интерфейс) бесплатно для каждого инструмента
  • Может хранить весь код Python в одном файле (встраивать исходный код инструмента TBX, удерживая всю реализацию в одном PYT) и распространять по электронной почте или через общие сетевые диски
  • Всегда работайте в режиме переднего плана для настольных приложений. Установка «Всегда запускать на переднем плане» в коде ArcPy?

Уникально для файлов TBX:

  • Может включать ссылки на системные наборы инструментов, пользовательские инструменты COM и пользовательские инструменты .Net
  • Инструменты Model Builder могут быть включены в набор инструментов
  • Документация по инструменту хранится в файле .tbx
  • Простой интерфейс мастера для настройки параметров и выполнения кода проверки
  • Запустить Python Script в свойстве Process tool
  • Недостаток: непрозрачный двоичный формат, более новые версии файлов TBX должны быть явно сохранены как более старые версии для работы в предыдущих версиях программного обеспечения, пользовательский интерфейс может быть обоюдоострым мечом, так как вам нужно переключаться между страницами свойств, чтобы увидеть, пропустили ли вы настройка (например, относительные пути)

Уникально для Python Toolbox:

  • Простой текст, поэтому наборы инструментов можно обрабатывать так же, как и любой другой код (полезно в средах, где используются хорошие инструменты контроля версий, поскольку вы можете проследить историю его разработки - посмотрите, сколько проектов в GitHub использовалось PYTболее TBX).
  • Получите больше контроля над определенными типами параметров (а именно, вы можете создавать составные типы данных и определять схемы таблиц значений)
  • Свойство isLicensed можно использовать для отключения инструмента, если продукт («ArcInfo») или расширение («пространственный») недоступны.
  • Документация по инструменту хранится в файлах XML в той же папке, что и .pyt
  • Недостаток: отсутствие пользовательского интерфейса мастера для настройки параметров инструмента, значительно больший объем кода поддержки в Python превращает разработку Toolbox в более формальную задачу разработки программного обеспечения, чем просто добавление сценария реализации. Перезагрузка pyt для загрузки изменений во время разработки может быть медленной, если pyt большой (этого можно избежать, помещая инструменты в другие файлы и импортируя их, чтобы их не нужно было перекомпилировать).

Некоторое время назад, когда я работал над моими первыми дюжинами или около того PYTнаборов инструментов, я был взволнован тем, насколько сложно было впервые настроить его PYT, поэтому я разработал инструмент под названиемtbx2pyt . Он возьмет TBXнабор инструментов и преобразует его PYTс минимальной потерей кода. На самом деле, PYTчто полномочия это было первым TBX. Это может быть хорошим способом перевода существующих инструментов в формат Python Toolbox, если вы того пожелаете. По крайней мере, это позволяет настроить параметры ваших инструментов с помощью пользовательского интерфейса перед переключением на код.

Джейсон Шайрер
источник
15

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

Один очевидный недостаток, который я прочитал, - это невозможность смешивать / сопоставлять модели и скрипты на панели инструментов Python, как вы можете на стандартной пользовательской панели инструментов.

RyanDalton
источник
11

Моя главная причина склоняться к наборам инструментов python - это контроль версий и управление исходным кодом (см. Применение контроля версий к моделям ArcGIS ), за которыми очень внимательно следит возможность использовать редактор кода / IDE с дополнением табуляции, регулярными выражениями, библиотеками фрагментов, и т.п.

Однако, как отмечает Райан Далтон , тем самым вы теряете возможность использовать Model Builder и инструменты старого стиля - если только вы не захотите приложить усилия для построения модели в обычном режиме, а затем экспортировать в python и затем переписать, чтобы соответствовать в .pyt. (Если вы сделаете это, взгляните на Рекомендации по организации наборов инструментов Python (.pyt) в ArcGIS ). В настоящее время этот недостаток достаточно велик, и я пока серьезно не использую наборы инструментов Python.

Если у вас есть существующие наборы инструментов, которые вы хотите преобразовать в .pyt, вам может пригодиться частичный конвертер tbxtopyt Джейсона Шайрера .

Что касается "неотразимого случая"? часть вопроса: если у вас уже есть какие-то возможности для разработки программного обеспечения, да, безусловно. Если вы похожи на меня, вы 3 части ГИС-технологий / аналитик и 1 часть или меньше питониста, не так уж и много. (По крайней мере, пока - я действительно надеюсь, что этот двоичный или другой характер этих двух подходов изменится в ближайшем будущем.)

Мэтт Уилки
источник