Thiết lập danh sách thả xuống trong Tham số của công cụ tập lệnh Python?


10

Tôi đang cố gắng tạo một công cụ từ tập lệnh python mà tôi đã viết sẽ lấy một danh sách tôi đã tạo và sử dụng nó làm menu thả xuống trong công cụ đã hoàn thành làm một trong những đầu vào (ví dụ xem hình ảnh đính kèm):

nhập mô tả hình ảnh ở đây

Danh sách tôi đang sử dụng là một danh sách lớn bao gồm tất cả các thị trấn ở bang Vermont và tôi tạo nó trong tập lệnh từ một bảng (xem mã bên dưới). Tôi nghi ngờ vấn đề của tôi tại thời điểm này chỉ là với việc đặt Công cụ Thuộc tính để lấy danh sách này và sử dụng nó để tạo danh sách thả xuống cho người dùng. Đây là khối mã tạo danh sách để sử dụng trong tham số - có ai thấy bất kỳ vấn đề nào với phần cuối mã này của công cụ không?

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)

Dưới đây là hình ảnh của các thuộc tính Công cụ, với mã xác thực mặc định - tôi có cần thay đổi mã xác thực này không?

Tôi đã tìm kiếm thông tin về việc thay đổi mã xác nhận này, nhưng tôi không thể tìm thấy thông tin về việc sử dụng nó để định dạng danh sách thả xuống.

nhập mô tả hình ảnh ở đây

Câu trả lời:


7

Hãy thử thiết lập mã lớp trình xác nhận công cụ này:

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
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.