Lặp lại tên tệp đầu ra của lớp tính năng bằng ModelBuilder?


11

Tôi đang cố gắng lặp lại một loạt các lớp tính năng (đa giác) trong trình xây dựng mô hình để chuyển đổi một loạt các đa giác thành các trình quét, tuy nhiên, tôi gặp vấn đề với tên tệp đầu ra.

Sau khi chèn công cụ "lớp tính năng lặp" vào cửa sổ trình tạo mô hình và liên kết gdb của tôi lưu trữ tất cả các đa giác làm đầu vào, tính năng đầu ra (bong bóng màu xanh lá cây) sẽ tự động trở thành tên của đa giác đầu tiên của tôi. Kết quả là mô hình mà tôi cố chạy dường như tái diễn với đa giác có tên đó hơn là đi đến đa giác tiếp theo trong danh sách. Các raster đầu ra được tạo, nhưng ghi đè tên tệp đó thay vì tạo một raster mới với một tên mới khớp với các đa giác tiếp theo.

Tôi đang làm gì sai?

Câu trả lời:


10

Đây là mô hình, nó sử dụng thay thế nội tuyến như được mô tả bởi Aaron. Lưu ý đầu ra của công cụ Đa giác thành raster là .. \ fGBD_Scratch.gdb \ ras_ % Value% . Giá trị đến từ iterator, trong trường hợp này được đặt thành FID để phát các hàng duy nhất. Vì vậy, bộ dữ liệu raster đầu tiên sẽ là ras_1, sau đó là ras_2, v.v.

Mô hình


Bạn có chỉ cần thêm "%" ở hai bên của tên được chèn vào đầu ra không? ví dụ% name% _clip?
macdonaw

Có, vì vậy, trong ví dụ của bạn, 'name' là một biến trong mô hình của bạn, thường là một cái gì đó từ một trình vòng lặp.
Hornbydd

1
Có, nhưng tên của bạn không nên bắt đầu bằng% ký ... sử dụng nó theo thứ tự ngược lại, tức là clip_% Tên%
maycca

10

Có một số cách để đối phó với việc đặt tên trong trình xây dựng mô hình. ArcGIS có một phần trợ giúp về vấn đề này: Một chuyến tham quan nhanh về việc sử dụng thay thế biến nội tuyến .

Một cách khéo léo để nhanh chóng tạo các tên duy nhất từ ​​một trình vòng lặp là bằng cách gọi các biến %i%hoặc %n%hệ thống, xuất ra các tệp theo dạng sau: file1, file2, file3, file4 ... Biến %i%hệ thống tham chiếu vị trí danh sách hiện tại, trong khi %n%biến hệ thống tham chiếu các lần lặp mô hình hiện tại. Bạn sẽ áp dụng điều này vào thực tế trong tham số đầu ra của một công cụ bạn đang sử dụng. Ví dụ:

Lớp tính năng đầu ra

C:\temp\out%i%.shp

1

Có vẻ như bạn muốn thực hiện một vài vòng lặp lồng nhau, một cho các lớp tính năng trong không gian làm việc và một cho các tính năng trong mỗi lớp tính năng. Điều này là đau đớn (nhưng có thể ) để làm với ModelBuilder.

Nếu bạn muốn làm bẩn tay với Python (mà tôi chắc chắn khuyên dùng cho những thứ như thế này), đây là một ví dụ để bạn bắt đầu:

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)

Chưa được kiểm tra, nhưng hy vọng bạn có được ý tưởng. Các tập lệnh IMO, Python dễ làm việc hơn nhiều so với các mô hình ModelBuilder cho tất cả các tác vụ ngoại trừ tầm thường nhất.

Đối với tài nguyên học tập Python / ArcPy, không có gì khác ngoài câu hỏi này: một số tài nguyên để học ArcPy là gì?


Các vòng lặp lồng nhau trong xây dựng mô hình là đau khổ. Tránh nếu có thể.
Mox
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.