Python 스크립트 도구의 매개 변수에서 드롭 다운 목록을 설정 하시겠습니까?


10

내가 작성한 목록을 가져 와서 완성 된 도구의 드롭 다운 메뉴로 입력으로 사용하는 파이썬 스크립트에서 도구를 작성하려고합니다 (예 : 첨부 된 이미지 참조).

여기에 이미지 설명을 입력하십시오

내가 사용하고있는 목록은 버몬트 주에있는 모든 도시를 포함하는 큰 목록이며, 테이블에서 스크립트로 생성합니다 (아래 코드 참조). 현재 내 문제는 도구 속성을 설정 하여이 목록을 가져 와서 사용자를위한 드롭 다운 목록을 만드는 것입니다. 다음은 매개 변수에 사용할 목록을 작성하는 코드 블록입니다.이 도구의 코드 엔드에 문제가있는 사람이 있습니까?

import arcpy
arcpy.env.workspace = "Z:\\OPS\\TechnicalServices\\Culverts\\GetCulverts\\GetCulverts.gdb"
towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex"
arcpy.MakeFeatureLayer_management(towns,"towns_lyr")

NameList = []
NameListArray = set()
rows = arcpy.SearchCursor("towns_lyr")
for row in rows:
    value = row.getValue("TOWNNAME")
if value not in NameListArray:
    NameList.append(value)
town = NameList

town = arcpy.GetParameterAsText(0)

다음은 기본 유효성 검사 코드와 함께 도구 속성의 이미지입니다.이 유효성 검사 코드를 변경해야합니까?

이 유효성 검사 코드를 변경하는 방법에 대한 정보를 찾았지만 드롭 다운 목록의 형식을 지정하기 위해 해당 코드를 사용하는 방법에 대한 정보를 찾을 수 없습니다.

여기에 이미지 설명을 입력하십시오

답변:


7

도구 검사기 클래스 코드를 다음과 같이 설정하십시오.

import arcpy
class ToolValidator(object):
  """Class for validating a tool's parameter values and controlling
  the behavior of the tool's dialog."""

  def __init__(self):
    """Setup arcpy and the list of tool parameters."""
    self.params = arcpy.GetParameterInfo()

  def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""
    return

  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parameter
    has been changed."""
    towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex"
    rows = arcpy.SearchCursor(towns)
    self.params[0].filter.list = sorted(list(set(r.getValue('TOWNNAME') for r in rows)))
    del rows
    return

  def updateMessages(self):
    """Modify the messages created by internal validation for each tool
    parameter.  This method is called after internal validation."""
    return
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.