การตั้งค่ารายการแบบหล่นลงในพารามิเตอร์ของเครื่องมือสคริปต์ Python หรือไม่


10

ฉันกำลังพยายามสร้างเครื่องมือจากสคริปต์ python ที่ฉันเขียนซึ่งจะสร้างรายการที่ฉันสร้างขึ้นและใช้เป็นเมนูแบบเลื่อนลงในเครื่องมือเสร็จเป็นหนึ่งในอินพุต (ดูรูปที่แนบมาตัวอย่าง):

ป้อนคำอธิบายรูปภาพที่นี่

รายการที่ฉันใช้เป็นรายการขนาดใหญ่ที่มีเมืองทั้งหมดในรัฐเวอร์มอนต์และฉันสร้างมันในสคริปต์จากตาราง (ดูรหัสด้านล่าง) ฉันสงสัยว่าปัญหาของฉันในขณะนี้เป็นเพียงการตั้งค่าคุณสมบัติเครื่องมือเพื่อใช้รายการนี้และใช้เพื่อสร้างรายการแบบหล่นลงสำหรับผู้ใช้ นี่คือบล็อกของรหัสที่สร้างรายการเพื่อใช้ในพารามิเตอร์ - มีใครเห็นปัญหาใด ๆ ของการใช้รหัสนี้หรือไม่?

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)

นี่คือรูปภาพของคุณสมบัติ Tool ด้วยรหัสตรวจสอบความถูกต้องเริ่มต้น - ฉันจำเป็นต้องแก้ไขรหัสตรวจสอบนี้หรือไม่

ฉันค้นหาข้อมูลเกี่ยวกับการแก้ไขรหัสตรวจสอบนี้ แต่ไม่พบข้อมูลเกี่ยวกับการใช้รหัสเพื่อจัดรูปแบบรายการแบบหล่นลง

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


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.