2014-11-22 6 views
0

Model Builder에서 다중 값 반복과 관련된 이상한 문제가 있습니다. 모델의 일부분은 Generating a multivalue choice list 예를 기반으로합니다.다중 값 문자열 반복

내가하려는 것은 사용자가 일부를 선택할 수있는 필터링 된 레이어 목록을 표시하는 것입니다. 이를 위해 1 입력 다중 값 문자열 매개 변수 및 1 파생 다중 값 모든 값 매개 변수가있는 스크립트 도구를 사용하고 있습니다.
그런 다음 선택한 반복 레이어 값 (다중 값 변수)은 각 반복 값이 계산 값에 사용되는 다중 값 반복에서 사용됩니다. 레이어는 ToolValidator에서 필터링됩니다.

이제 다중 값 반복은 값을 반복하지 않습니다. 대신 하나의 루프 만 실행하고 선택된 모든 레이어 이름이 세미콜론으로 구분 된 문자열 인 하나의 값을 전달합니다. 스크립트 도구 주요 모델에서 전달 된 다중를 사용

ToolValidator의 UpdateParameters 코드

if not self.params[0].altered: 
    mxd = arcpy.mapping.MapDocument("CURRENT") 
    dataframe = arcpy.mapping.ListDataFrames(mxd)[0] 
    layers = set() 
    for lyr in arcpy.mapping.ListLayers(mxd, "", dataframe): 
    if lyr.visible == True: 
     desc = arcpy.Describe(lyr.name) 
     if desc.dataType == "RasterLayer": 
     layers.add(desc.name) 
    self.params[0].filter.list = sorted(layers) 
    self.params[0].values = sorted(layers) 
    return 

서브 모델. 여기 enter image description here

는 도구의 출력 enter image description here

사람이 이상한 행동에 대한 설명을 가지고 있습니까? 내가 뭘 잘못하고있어?

답변

0

나는 그것을 마침내 발견했습니다. 파생 된 출력 매개 변수의 속성 "획득"은 스크립트 도구에서 입력 매개 변수로 설정해야했습니다.

스크립트 도구의 매개 변수 :

  1. 표시 이름 : 입력 Raster의, 데이터 형식 : 문자열, 유형 : 필수, 다중 값 :

  2. 표시 이름 예 : 출력의 Raster, 데이터 형식 : 값, 유형 : 다중 값, 파생 : 예로부터 획득 : Input_Rasters

스크립트 도구의 스크립트 코드 :

import arcpy 
input_rasters = arcpy.GetParameterAsText(0) 
arcpy.SetParameter(1, input_rasters)