Ітерація імен вихідних файлів класу функцій за допомогою ModelBuilder?


11

Я намагаюся повторити ряд класів функцій (полігонів) у конструкторі моделей, щоб перетворити ряд полігонів у растрові, однак у мене виникає проблема з іменами вихідних файлів.

Після вставки інструменту "ітераційний клас функцій" у вікно конструктора моделі та з'єднання мого gdb, що зберігає всі полігони як вхід, функція виводу (зелений міхур) автоматично стає назвою мого першого полігону. В результаті модель, яку я намагаюся запустити, здається, повториться до названого багатокутника, а не переходить до наступного багатокутника у списку. Растрові виводу створюються, але замінюють це ім'я файлу, а не генерують нову растру з новим ім'ям, яке відповідає наступним багатокутникам.

Що я роблю неправильно?

Відповіді:


10

Ось модель, вона використовує вбудовану підстановку, як описано Аароном. Зверніть увагу, що вихід полігону на растровий інструмент є .. \ fGBD_Scratch.gdb \ ras_ % Значення% . Значення надходить від ітератора, який у цьому випадку був встановлений на FID для роздавання унікальних рядків. Отже, перший растровий набір даних буде ras_1, потім ras_2 тощо.

Модель


Ви просто додаєте "%" з будь-якої сторони імені, вставленого у висновку? наприклад,% name% _clip?
macdonaw

Так, у вашому прикладі "ім'я" - це змінна у вашій моделі, як правило, щось із ітератора.
Hornbydd

1
Так, але ваше ім’я не повинно починатися зі знаку% ... використовувати його у зворотному порядку, тобто clip_% Ім'я%
Майкка

10

Існує кілька способів розібратися з називанням у конструкторі моделей. ArcGIS має довідковий розділ щодо цього: Швидкий огляд використання підстановки вбудованої змінної .

Один гладкий спосіб швидкого створення унікальних імен з ітератора - виклик змінних %i%або %n%системи, які виводять файли у такій формі: file1, file2, file3, file4 ... %i%Системна змінна посилається на поточне положення списку, тоді як на %n%змінну системи посилається на поточну ітерацію моделі. Ви застосували це на практиці у вихідному параметрі інструменту, який ви використовуєте. Наприклад:

Вихідний клас функції

C:\temp\out%i%.shp

1

Це здається, що ви хочете зробити пару вкладених циклів, одну для класів функцій у робочій області та одну для особливостей у кожному класі функцій. Це болісно (але можливо ) зробити з ModelBuilder.

Якщо ви хочете забруднити руки Python (що я, безумовно, рекомендую для таких матеріалів), ось приклад для початку роботи:

import arcpy, os

# Your source file geodatabase
input_workspace = r"c:\GISData\input.gdb"

# Your output raster folder
output_workspace = r"c:\GISData\rasters"

# The file extension for the output rasters -- when not saving to a geodatabase, specify .tif for a TIFF file format, .img for an ERDAS IMAGINE file format, or no extension for a GRID raster format.
output_ext = ".img"

# The field used to assign values to the output raster -- hopefully this is the same for all of your feature classes
value_field = "VALUE"

# Note: Instead of hardcoding the above values, you could also use arcpy.GetParameterAsText to allow the user to specify them via script tool parameters

# Set current workspace to the source file geodatabase
arcpy.env.workspace = input_workspace

# Loop over the feature classes
for fc in arcpy.ListFeatureClasses():

  # Get the name of the ObjectID field so we can use it to name the output rasters
  oid_field = arcpy.Describe(fc).OIDFieldName

  # Loop over the features in the current feature class
  for row in arcpy.SearchCursor(fc):

    # Figure out what to name the output raster. In this case we should get something like "c:\GISData\rasters\myFeatureClass_1.img"
    out_raster = os.path.join(output_workspace, "{0}_{1}{2}".format(os.path.basename(fc), row.getValue(oid_field), output_ext))

    # Convert to raster
    arcpy.PolygonToRaster_conversion(row, value_field, out_raster)

Неперевірений, але, сподіваємось, ви отримаєте ідею. ІМО, сценарії Python набагато простіше працювати з моделями ModelBuilder для всіх, крім самих тривіальних завдань.

Що стосується навчальних ресурсів Python / ArcPy, не дивіться далі цього питання: Які існують ресурси для вивчення ArcPy?


Вкладені петлі в конструкторі моделей - нещастя. Уникайте, якщо можливо.
Мокс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.