Menyiapkan daftar Drop-Down di Parameter alat skrip Python?


10

Saya mencoba membuat alat dari skrip python yang saya tulis yang akan mengambil daftar yang telah saya buat dan menggunakannya sebagai menu drop-down di alat jadi sebagai salah satu input (lihat gambar terlampir misalnya):

masukkan deskripsi gambar di sini

Daftar yang saya gunakan adalah daftar besar yang mencakup semua kota di negara bagian Vermont, dan saya menghasilkannya dalam skrip dari tabel (lihat kode di bawah). Saya menduga masalah saya saat ini adalah hanya dengan menyetel alat Properties untuk mengambil daftar ini dan menggunakannya untuk membuat daftar drop-down bagi pengguna. Berikut ini adalah blok kode yang membuat daftar untuk digunakan dalam parameter - apakah ada yang melihat masalah dengan kode-akhir alat ini?

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)

Berikut adalah gambar dari properti Alat juga, dengan kode validasi default - apakah saya perlu mengubah kode validasi ini?

Saya mencari info tentang cara mengubah kode validasi ini, tetapi saya tidak dapat menemukan info tentang penggunaannya untuk memformat daftar drop-down.

masukkan deskripsi gambar di sini

Jawaban:


7

Coba tetapkan kode kelas validator alat untuk ini:

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.