Установка параметров инструмента-скрипта

Практически все инструменты имеют параметры, и вы задаете их значения в диалоговом окне или внутри скрипта. При запуске инструмента значения параметров отправляются в исходный код инструмента. Инструмент считывает эти значения и продолжает работу.

Более подробно о параметрах см. Понятие параметров инструмента-скрипта.

Параметры инструмента-скрипта могут быть установлены при помощи мастера Добавить скрипт (Add Script). Кроме того, для добавления, удаления и изменения параметров инструмента-скрипта служит диалоговое окно Свойства (Properties). Для того чтобы открыть свойства инструмента-скрипта, щелкните правой кнопкой мыши инструмент-скрипт, выберите Свойства (Properties), а затем перейдите на закладку Параметры (Parameters).

Независимо от того, где задаются параметры: в мастере Добавить скрипт (Add Script) или диалоговом окне Свойства (Properties), процедура установки одинакова и описана ниже.

Для добавления нового параметра щелкните первую пустую ячейку в столбце Отображаемое имя (Display Name) и введите имя параметра. Это имя будет отображаться на диалоговом окне инструмента, и оно может содержать пробелы. В синтаксисе Python имя параметра будет совпадать с отображаемым именем, только пробелы будут заменены нижними подчеркиваниями (_).

Создание нового параметра

После ввода отображаемого имени параметра выберите для него тип данных, щелкнув ячейку в столбце Тип данных (Data Type), как показано ниже.

Определение типа данных для параметра

Для каждого параметра можно установить дополнительные свойства, как показано ниже.

Свойства параметра

Свойство

Описание

Тип

Доступны значения Required (Обязательный), Optional (Необязательный) и Derived (Производный). Derived (Производный) означает, что пользователь инструмента не вводит значения параметра. Производные типы всегда являются выходными параметрами.

Направление

Варианты: Входное (Input) или Выходное (Output). Если тип параметра – производный, его направление всегда будет выходным.

Многозначные

Многозначность имеет значение Да (Yes), если необходим список значений, и Нет (No), если необходимо одиночное значение.

По умолчанию (Default) или Схема (Schema)

Значение по умолчанию для параметра. Когда тип данных параметра является либо набором пространственных данных, либо набором записей, параметр По умолчанию (Default) заменяется параметром Схема (Schema).

Параметры среды

Если значение параметра по умолчанию подставляется из параметров среды, это свойство должно содержать имя нужного параметра среды.

Фильтр

Если в качестве значений параметра необходимо вводить только определенные значения или типы наборов данных, то можно задать фильтр. Существует шесть типов фильтров, а какой тип фильтра можно выбрать зависит от типа данных параметра.

Получено из (Obtained from)

Это свойство применимо к производным выходным параметрам, а также к типам данных с входным параметром. Для производных выходных параметров свойство Получено из (Obtained from) может указывать на параметр, содержащий определение выходных данных. Для входных параметров свойство Получено из (Obtained from) указывает на параметр, содержащий информацию, необходимую для входных данных.

Символы.

Это свойство применимо только к выходным параметрам. Его значение – местоположение файла слоя (.lyr), содержащего символы для отображения выходных данных.

Свойства параметра

Тип

Для этого свойства имеется три варианта:

ПримечаниеПримечание:

Если инструмент-скрипт имеет производные выходные данные, следует задать значение производного выходного параметра в скрипте при помощи функции SetParameterAsText().

Все инструменты должны иметь выходные данные

Все инструменты-скрипты должны иметь выходные параметры, чтобы они могли использоваться в приложении ModelBuilder. Основной принцип ModelBuilder – соединение выходных данных одних инструментов с входными данными других, и если инструмент-скрипт не имеет выходного параметра, он не очень пригоден для построения модели. В крайнем случае, выходным параметром может быть логическая переменная, указывающая на успешное (или нет) завершение работы инструмента.

Производные выходные данные, изменяющие входной параметр

На рисунке ниже показан гипотетический инструмент-скрипт Обновить значения полей (Update Field Values), используемый в ModelBuilder. (Допустим, что этот инструмент, Обновить значения полей (Update Field Values), предназначен для исследования содержимого нескольких известных текстовых полей и исправления опечаток в них.) Инструмент Обновить значения полей (Update Field Values) не создает новый класс пространственных объектов, а обновляет значения полей во входном классе объектов.

Инструмент без выходных данных в ModelBuilder

На рисунке ниже показано корректное определение параметров для инструмента Обновить значения полей, где Обновить значения полей имеет выходной параметр (класс пространственных объектов) с Типом, заданным как производный. Поскольку для этого инструмента выходные данные совпадают с входными, свойство Получено из (Obtained from) указывает на входной параметр. (В свойстве Получено из (Obtained from) стоит имя этого параметра – отображаемое имя, в котором пробелы заменены нижними подчеркиваниями.)

Инструмент с производными выходными данными

Производные выходные данные, не изменяющие входной параметр

На рисунке ниже показан другой инструмент, в котором выходные данные являются производными, но при этом они не получены из входного параметра (Свойство Получено из (Obtained from) оставлено пустым). В этом примере гипотетический инструмент Отправка данных в хранилище (Post Data to Repository) копирует входной класс пространственных объектов в известную рабочую область (хранилище), затем добавляет поле даты/времени и заполняет его.

Выходные производные данные, полученные не из входного параметра

Установка выходного значения

На примере, рассмотренном выше, обратите внимание, что инструмент Скопировать объекты (Copy Features) является пустым (имеет белый, а не желтый цвет). Так происходит потому, что переменная Выходные объекты (Output features), хотя и отмечена зеленым, пока не содержит значения, так как имя и местоположение выходных объектов неизвестно до запуска инструмента. В этом случае в скрипте должно быть указано выходное значение при помощи функции ArcPy SetParameterAsText(). Функция SetParameterAsText() задаст значение выходного параметра либо при помощи текстовой строки, либо при помощи объекта, например, таблицы значений.

Есть возможность указать значение выходного параметра до запуска инструмента при помощи кода проверки.

Более подробно о проверке инструментов

Рассмотрим пример кода с функцией SetParameterAsText(), предназначенный для описанного выше скрипта Отправка данных в хранилище (Post Data to Repository).

# Post data to Repository - copies the input features to the
#  current repository, adding and populating a date
#  field
#

# Import system modules and arcpy
#
import sys
import string
import os
import arcpy

# Get the value of the input parameter
#
inFC = arcpy.GetParameterAsText(0)

# Create the pathname to the output feature class.
#  1) get the name of the feature class
#  2) remove any file extension, such as ".shp"
#     (we're copying to a geodatabase which doesn't
#      allow file extensions, like .shp)
#
fcName = os.path.basename(inFC) 
fcName = os.path.splitext(fcName)[0]
repository = "e:/repository/featuredata.gdb"
outFC = os.path.join(repository, fcName)

# Copy the input to the output, add the date field
#
arcpy.CopyFeatures_management(inFC, outFC)
arcpy.AddField_management(outFC, "PostDate", "DATE")

# Create a locale-specific string containing the current date 
#  and time, then calculate it into the PostDate field, adding
#  the required quotes around the postTime string.
#
import time
postTime = time.strftime("%x %X")
arcpy.AddMessage(postTime)
qPostTime = "\"" + postTime + "\""
arcpy.CalculateField_management(outFC, "PostDate", qPostTime)

# Set output parameter
#
arcpy.SetParameterAsText(1, outFC)

Выходные значения вместо данных

Вышеприведенные примеры иллюстрируют получение производных наборов данных. Тем не менее, некоторые скрипты имеют не выходные данные, а выходные значения, например инструмент Посчитать строки (Get Count), который получает на выходе целое число типа Long, равное числу строк в таблице. Использование выходных значений вместо данных встречается довольно часто. Могут потребоваться и собственные скрипты, выполняющие анализ нескольких наборов данных, связанных отношением, и выдающие результат в виде нескольких чисел или вовсе в виде одного логического значения, указывающего на успешное или неуспешное прохождение проверки.

Выходные параметры, содержащие типы данных, соответствующие значениям (например, типы Long (длинное целое) или Boolean (логическое значение)), всегда являются производными, а не обязательными.

Направление

В данном свойстве определяется, представляет ли параметр входные данные для инструмента или выходные.

Если тип параметра – производный, то направление параметра автоматически задается как выходное.

Многозначные

Если необходимо, чтобы параметр работал со списком значений, а не с одним значением, установите для свойства Многозначность (MultiValue) значение Да (Yes).

В диалоговых окнах инструментов для работы с множественными значениями могут применяться два различных элемента пользовательского интерфейса. Эти элементы показаны ниже.

Оба типа многозначных элементов управления проиллюстрированы ниже.

Многозначные элементы управления

Многозначные значения передаются в скрипт в виде строк, разделенных точками с запятой. Из этого рисунка видно, что если бы пользователь выбрал все типы дорог, для параметра было бы установлено значение Interstates;Primary roads;Secondary roads. Для разбиения строки с разделителями применяется метод Python split(), как показано ниже в примере.

roadTypes = arcpy.GetParameterAsText(0)
roadTypeList = roadTypes.split(";")

# Process each road type
#
for rType in roadTypeList:
  # rType contains an individual road type string (ex: "Interstates")
  # 
  arcpy.AddMessage("Processing: " + rType)

По умолчанию

Значению по умолчанию будет присваиваться содержимое параметра, когда открыто диалоговое окно инструмента скрипта. Это же значение будет использовано, если для параметра в скрипте вводится #. Если не задано значение свойства По умолчанию (Default), то при открытии диалогового окна скрипта значение параметра будет пустым. Если вы укажете для этого свойства какое-либо значение, то свойство Параметра среды (Environment) будет деактивировано. Для активации свойства Параметр среды (Environment) следует очистить свойство По умолчанию (Default).

Схема

Если тип данных входного параметра – Набор объектов (Feature Set) или Набор записей (Record Set), необходимо указать местоположение схемы, определяющей поля и тип геометрии вводимых пространственных объектов. Схема может быть либо классом пространственных объектов, либо таблицей, либо файлом слоя (.lyr).

О наборах объектов и наборах записей

Типы Feature Set (Набор объектов) и Record Set (Набор записей) позволяют выполнять ввод данных интерактивно. Feature Set (Набор объектов) позволяет пользователю скрипта интерактивно создавать пространственные объекты в ArcMap, щелкая на карте. Record Set (Набор записей) позволяет пользователю интерактивно создавать строки в простой таблице.

Наборы объектов и наборы записей

Для получения более подробной информации по наборам объектов и записей, перейдите по указанным ниже ссылкам.

Тема

Описание

FeatureSet и RecordSet

В данном разделе рассказывается, как в Python используются объекты FeatureSet (Набор объектов) и RecordSet (Набор записей).

Использование средств интерактивного ввода объектов и записей

В данном разделе рассказывается, как использовать элементы управления Набор объектов (Feature Set) и Набор записей (Record Set).

Разделы с информацией по наборам объектов и наборам записей

Среда

Можно установить значение параметра по умолчанию равным значению параметра среды, щелкнув правой кнопкой на ячейке рядом со словами Параметр среды (Environment) и выбрав имя нужного параметра среды. Как только выбран параметр среды, свойство По умолчанию (Default) будет игнорироваться. Для использования свойства По умолчанию (Default) вместо свойства Параметр среды (Environment), следует очистить свойство Параметр среды (Environment), выбрав из ниспадающего списка пустой элемент.

Выбор параметра среды

Фильтр

Если в качестве значений параметра необходимо вводить только определенные значения или типы наборов данных, то можно задать фильтр. Щелкните ячейку рядом со словом Фильтр (Filter) и выберите подходящий фильтр из ниспадающего списка. Откроется диалоговое окно, где следует указать значения для выбранного фильтра. Существует шесть типов фильтров, а какой тип фильтра можно выбрать зависит от типа данных параметра.

Тип фильтра

Значения

Список значений

Список строковых или числовых значений. Используется со следующими типами данных параметра: String (Строковый), Long (Длинное целое), Double (с двойной точностью) и Boolean (Логический).

Диапазон

Минимальное и максимальное значение. Используется с типами данных Long (Длинное целое) и Double (С двойной точностью).

Класс пространственных объектов

Список возможных типов классов пространственных объектов: "Point" (Точка), "Multipoint" (Мультиточка), "Polyline" (Полилиния), "Polygon" (Полигон), "MultiPatch" (Мультипатч), "Sphere" (Сфера), "Annotation" (Аннотация) и "Dimension" (Размер). В фильтре можно задать несколько значений.

Файл

Список суффиксов файлов, например, ".txt", ".e00", ".ditamap".

Поле

Список возможных типов полей: Short (Короткое целое), Long (Длинное целое), Single (Вещественное с одной точностью), Double (С двойной точностью), Text (Текст), Date (Дата), OID (Идентификатор объекта), Geometry (Геометрия), Blob (Большой двоичный объект), Raster (Растр), GUID (Глобальный уникальный идентификатор), GlobalID (Глобальный идентификатор) и XML. В фильтре можно задать несколько значений.

Рабочая область

Список возможных типов рабочей области: File System (Файловая система), Local Database (Локальная база данных) или Remote Database (Удаленная база данных). Может быть задано более одного значения.

Тип и значения фильтра

Как правило, можно выбрать только один тип фильтра. Два варианта имеется только для типов данных Long и Double – это Value List (Список значений) и Range (Диапазон).

Кроме того, фильтры можно настраивать программным способом с использованием Python, настроив класс ToolValidator инструмента скрипта.

Список значений

Фильтр списка значений оптимален при определении набора ключевых слов. Многие инструменты уже имеют предопределенный набор ключевых слов, например параметр Тип поля (Field Type) для инструмента Добавить поле (Add Field) или параметр Соединить атрибуты (Join Attributes) для многих инструментов в Группе инструментов наложения (Overlay toolset).

Фильтр списка значений может использоваться для данных типа Long и Double. Для этих типов вводятся допустимые числовые значения.

Если необходимо, чтобы пользователь имел возможность выбрать более одного значения, установите для свойства Multivalue значение Yes (Да).

Фильтр списка значений может использоваться для логического типа данных. Для типа данных Boolean (Логический) Список значений содержит два значения: истина и ложь. Истинное значение (true) всегда идет в списке первым. Эти значения используются в командной строке при установке значения. См., например, ключевые слова Add Field (Добавить поле) и {NULLABLE | NON_NULLABLE}, используемые для свойства IsNullable.

Диапазон

Для параметров с типом данных Long (Длинное целое) и Double (С двойной точностью) может быть установлен фильтр диапазона. У фильтров диапазона два значения: минимум и максимум. Первым в списке идет минимальное значение. Диапазон является инклюзивным, то есть в него входят минимальное и максимальное значения.

Класс пространственных объектов

В данном фильтре выберите одно или несколько значений фильтра. Входные классы объектов будут сравниваться со значениями, установленными в фильтре. Например, если в фильтре установлен только тип Points (Точки), в качестве значений параметра пользователь может вводить только классы точеных пространственных объектов.

Файл

Фильтр файлов содержит список допустимых суффиксов файлов, таких как txt (простой текстовый файл) или csv (значения, разделенные запятыми). Можно использовать любое расширение. Совсем не обязательно, чтобы приложение ArcGIS распознавало расширение. Расширение может иметь любую длину и не должно содержать точек.

Определение фильтра файлов

Поле

В фильтре поля задаются допустимые типы полей: "Short" (Короткое целое), "Long" (Длинное целое), "Single" (С одной точностью), "Double" (С двойной точностью), "Text" (Тест), "Date" (Дата), "OID", "Geometry" (Геометрия), "Blob" (Большой двоичный объект), "Raster" (Растр), "GUID" (Глобальный уникальный идентификатор), "GlobalID" (Глобальный идентификатор), "XML". В фильтре можно задать несколько значений.

Рабочая область

В фильтре рабочей области указываются типы допустимых рабочих областей на входе. Существует три значения:

  • Файловая система

    Папка на диске, используемая для хранения шейп-файлов, покрытий, таблиц INFO и гридов

  • Локальная база данных

    Персональная или файловая база геоданных

  • Удаленная база данных

    Подключение базы данных ArcSDE

Получено из

Свойство Получено из (Obtained from) имеет два предназначения:

Свойство «Получено из» для типа данных Поле

Задать свойство Получено из (Obtained from) можно только для определенных входных параметров, как показано в таблице ниже.

Тип входных данных

Типы данных Получено из

Описание

Поле или выражение SQL

Таблица

Таблица, содержащая поля

Элемент INFO или выражение INFO

Таблица INFO

Таблица INFO, содержащая элементы

Класс пространственных объектов покрытия

Покрытие

Покрытие, содержащее объекты

Единицы площади и длины

Набор геоданных (GeoDataset)

Географический набор данных, используемый для определения единиц по умолчанию

Система координат

Рабочая область

Рабочая область, используемая для определения системы координат по умолчанию

Настройки иерархии Network Analyst

Набор сетевых данных

Набор сетевых данных, содержащий информацию об иерархии

Таблица геостатистических значений

Геостатистический слой

Слой анализа, содержащий таблицы

Типы данных Получено из

Символы

Если на выходе инструмента возвращается набор классов пространственных объектов, растр, TIN или слой сетевых данных для дополнительного модуля ArcGIS Network Analyst , то можно указать расположение файла слоя (.lyr) в свойстве Символы (Symbology). Если инструмент запускается из ArcMap, ArcGlobe или ArcScene, и включена опция Добавить к изображению результаты операций геообработки (Add results of geoprocessing operations to the display), то будут отображаться выходные результаты и прорисовка выполняется с использованием условных обозначений, определенных в файле слоя условных обозначений.

ВниманиеВнимание:

Файл слоя считывается каждый раз при запуске инструмента. Если файл слоя не удается обнаружить (так как он был перемещен или удален), будут использоваться условные обозначения по умолчанию.

Связанные темы

5/10/2014