Вы можете задать пользовательское поведение для диалогового окна вашего инструмента-скрипта, например, включение или отключение параметров, задание значений по умолчанию, и изменение строковых ключевых слов. С помощью добавления кода Python, вы можете сделать следующее:
- Включить или отключить параметр, основываясь на значениях, содержащихся в других параметрах.
- Изменить фильтр параметра. Используя фильтр поля, вы можете создать список корректных типов поля, таких, как LONG и DOUBLE. Используя текстовый фильтр, вы можете задать список корректных ключевых слов, как показано ниже. Существует шесть типов фильтров: Список значений (Value List), Диапазон (Range), Класс объектов (Feature Class), Файл (File), Поле (Field), и Рабочая область (Workspace).
- Указать значения по умолчанию для параметров, таких, как размер ячейки для растров.
- Настроить предупреждения и сообщения об ошибках, которые появляются в диалоговом окне.
- Поместить параметры в различные категории.
- Изменить описание выходных наборов данных, чтобы использовать их в ModelBuilder.
Как работает проверка
Проверка выполняется в блоке кода Python, который геообработка (geoprocessing) использует, чтобы контролировать изменение диалогового окна инструмента и окна Python, основываясь на вводе данных пользователем. Системные инструменты (предоставляемые Esri) всегда содержат функциональность, позволяющую реагировать на задаваемые пользователем данные и соответственно изменять диалоговое окно инструмента, как описано выше.
Проверка
Проверка (validation) означает проверку всех параметров инструмента на корректность, и предоставление полезных сообщений, если они не корректны. Существует две части проверки:
- Часть, осуществляемая с помощью добавления кода Python.
- Часть, осуществляемая автоматически в ArcGIS. Эта часть проверки называется внутренняя проверка (или базовая проверка), поскольку она является базовой проверкой, выполняемой внутри ArcGIS с помощью геообработки (geoprocessing).
Что делает внутренняя проверка (internal validation):
- Если требуется какой-нибудь параметр, то проверяет, пустой ли он (не введен ранее), и если да, то отправляет сообщение "Требуется значение" ("Value is required") в диалоговое окно инструмента (используя зеленую точку вместо красного Х).
- Проверяет правильность типа введенного пользователем значения (например, введение растра вместо класса объектов, или текстового символа вместо числа).
- Проверяет принадлежность фильтра. Например, если у вас есть фильтр списка значений (Value List filter), содержащий ключевые слова RED, ORANGE, и YELLOW, и вы вводите значение BLUE, вы получите сообщение об ошибке, поскольку BLUE не содержится в фильтре списка значений.
- Проверяет существование входных наборов данных.
- Генерирует путь, используемый по умолчанию, для выходных наборов данных.
- Изменяет описание выходных данных на основе набора правил, содержащихся в специальном объекте Схема (Schema).
- Проверяет существование выходных данных в настройке среды overwriteOutput. Если набор данных существует, и параметр overwriteOutput имеет значение False, выводится ошибка, в противном случае выводится предупреждение.
- Если параметр является Типом поля данных (Field data type), то выполняется проверка на существование поля в связанной таблице.
- Проверяет, чтобы выходной набор данных не совпадал с входным набором данных (если только выходной результат не вычисляется, как, например, в инструменте Добавить поле (Add Field)).
- Для параметров, содержащих типы данных: линейные и единицы площади, устанавливает значения по умолчанию, взятые после обработки соответствующих значений в ArcMap (при запуске в ArcMap).
- Если результатом является покрытие, грид или таблица INFO, проверяет имя файла на ограничение длины в 13 символов для этих наборов данных.
Внутренняя проверка не выполняет следующее (но вы можете сделать это с помощью собственного кода проверки):
- Изменение фильтров на основе взаимодействия с другими параметрами. Например, если пользователь вводит в качестве первого параметра точечный класс объектов, и вы хотите, чтобы диалоговое окно отображало в третьем параметре RED, ORANGE и YELLOW. Если пользователь вводит полигональный класс объектов, вы хотите отображать в третьем параметре BLUE, INDIGO и VIOLET.
- Включение/Отключение параметров.
- Вычисление значений по умолчанию.
- Выполнение взаимодействий любых параметров, специфических для данного инструмента.
Код, который вы добавляете, работает в соответствии с внутренней проверкой, например:
- Вы можете установить набор правил, которые внутренняя проверка использует для изменения описания выходных наборов данных. Эти правила содержатся в объекте Схема (Schema).
- Вы можете изменять и обновлять фильтры перед выполнением внутренней проверки. Используя пример выше, если введен точечный класс объектов, то вы изменяете фильтр на содержание значений RED, ORANGE и YELLOW Внутренняя проверка проверяет введенное пользователем значение на соответствие значениям в фильтре.
И, как было указано, вы можете использовать собственный код проверки для вычисления значений по умолчанию, включения и отключения параметров, и настройки сообщений. Эти типы действий не имеют последствий для внутренней проверки; они влияют только на появление диалогового окна инструмента.