В ModelBuilder реализована логика, позволяющая узнавать, каким образом инструмент изменит данные, до запуска инструмента. Такое поведение требуется для того, чтобы иметь возможность продолжать построение соответствующей процедуры после добавления в нее того или иного инструмента, изменяющего данные. Лучшей иллюстрацией использования такого поведения служит работа с инструментами Добавить поле (Add Field) и Вычислить поле (Calculate Field) в приведенном ниже примере. Если новое поле добавлено с помощью инструмента Добавить поле (Add Field), обновленная выходная переменная инструмента Добавить поле (Add Field) будет содержать новое поле. Если открыт инструмент Вычислить поле (Calculate Field), новое поле появится даже в том случае, если инструмент Добавить поле (Add Field) еще не выполнялся. Это требуется для того, чтобы разрешить задавать другие параметры инструмента Вычислить поле (Calculate Field) и чтобы рабочий процесс модели продолжил работу без запуска инструмента Добавить поле (Add Field).
Хотя ModelBuilder имеет возможность просчитывать для большинства инструментов, какие изменения они будут вносить в данные, еще до запуска этих инструментов, по некоторым инструментам ModelBuilder не может прогнозировать производные данные или создаваемые ими значения. В этих случаях производные выходные данные нельзя будет обновлять, что бы позволило вносить в них изменения до запуска инструмента. Такие данные называются неполными производными данными.
Использование неполных производных данных
Если какой-то процесс создает неполные производные данные, и при этом присутствует необходимость использовать эти данные в качестве входных для других процессов, предусмотрено два варианта преодоления этого ограничения:
- Ввести значение. Если известно, какие именно изменения пропали в неполных производных данных, можно вручную ввести значения параметра в диалоговом окне инструмента.
- Запустить процесс. Процесс, создающий неполные производные данные, можно запустить отдельно в ModelBuilder. После запуска процесса производные данные становятся полными.
Ввод значения вручную
Инструмент Создать таблицу (Create Table) добавляет в новую таблицу поле Field1, однако это новое поле не появится в списке полей, которые можно удалить с помощью инструмента Удалить поле (Delete Field). Инструмент Создать таблицу (Create Table) создает неполные производные данные. В конечном счете поле Field1 можно удалить из таблицы, но оно не входит в автоматически создаваемый список полей, которые можно удалить из таблицы.
- Поскольку известно, что поле Field1 будет присутствовать в таблице после запуска инструмента Создать таблицу (Create Table), добавьте вручную в список удаляемых полей поле Field1, нажав кнопку Добавить поле (Add Field) в диалоговом окне инструмента Удалить поле (Delete Field).
- После добавления поля Field1 в список удаляемых полей, появится предупреждение о том, что поля Field1 не существует. Это предупреждение можно проигнорировать, так как к тому времени, когда будет запущен инструмент Удалить поле (Delete Field), поле Field1 уже будет существовать.
Запуск процесса
- В ModelBuilder можно запускать отдельные процессы. Для этого необходимо выбрать инструмент, щелкнуть его правой кнопкой мыши и нажать Запустить (Run).
Некоторые инструменты, создающие неполные производные данные
Например, инструмент Импорт из обменного файла (Import From Interchange File) считывает обменный файл (.e00), содержащий данные покрытий. Этот инструмент не сможет определять имена, атрибуты или тип геометрии наборов данных до тех пор, пока он не будет запущен. Многие другие инструменты из набора Конвертация (Conversion) также создают неполные производные данные.
Неполные производные данные на выходе выдают все инструменты-скрипты за исключением тех, которые были запрограммированы с помощью класса Валидатора инструмента с целью обновления определения переменной производных данных. Дополнительные сведения см. в разделе Настройка поведения инструмента-скрипта.
Например, инструмент Разбить (Split), который создает новые классы пространственных объектов в рабочей области, не знает количество имен классов пространственных объектов, которые будут созданы до запуска инструмента. Это считается неполными производными данными.
Или, к примеру, инструмент Создать таблицу (Create Table), который автоматически добавляет определенные поля в зависимости от типа выходной таблицы (база геоданных, .dbf или INFO), не знает имена полей, добавленных инструментом до его запуска. Это считается неполными производными данными.