Я пытаюсь перебрать серию классов объектов (полигонов) в конструкторе моделей, чтобы преобразовать серию полигонов в растры, однако у меня возникла проблема с именами выходных файлов.
После вставки инструмента «Iterate Feature Class» в окно построителя модели и связывания моего GDB, хранящего все полигоны в качестве входных данных, выходной объект (зеленый пузырь) автоматически становится именем моего первого полигона. В результате модель, которую я пытаюсь запустить, кажется, возвращается к названному многоугольнику, а не к следующему многоугольнику в списке. Выходные растры создаются, но перезаписывают это имя файла, а не генерируют новый растр с новым именем, соответствующим последующим полигонам.
Что я делаю не так?
источник
Есть несколько способов справиться с именами в конструкторе моделей. ArcGIS имеет раздел справки по этому вопросу: краткий обзор использования встроенной замены переменных .
Одним из простых способов быстрого создания уникальных имен из итератора является вызов системных переменных
%i%
или%n%
, которые выводят файлы в следующей форме: file1, file2, file3, file4 ...%i%
Системная переменная ссылается на текущую позицию списка, а%n%
системная переменная ссылается на текущую модель итерации. Вы бы применили это на практике в выходном параметре используемого вами инструмента. Например:Выходной класс объектов
источник
Похоже, вы хотите сделать пару вложенных циклов, один для классов пространственных объектов в рабочей области, а другой для пространственных объектов в каждом классе пространственных объектов. Это больно (но возможно ) делать с ModelBuilder.
Если вы хотите испачкать руки Python (что я определенно рекомендую для подобных вещей), вот пример для начала:
Не проверено, но, надеюсь, вы поняли идею. IMO, со скриптами Python работать гораздо проще, чем с моделями ModelBuilder для всех, кроме самых тривиальных задач.
Что касается учебных ресурсов Python / ArcPy, посмотрите не далее, чем этот вопрос: Каковы некоторые ресурсы для изучения ArcPy?
источник