Saya mencoba membuat alat ArcPy, yang akan meminta pengguna untuk memasukkan beberapa informasi (ID, Nama, Alamat, Zip, dll.) Terlebih dahulu. Antarmuka add-in saya diperlihatkan di bawah ini, dan berharap untuk mengimplementasikannya setelah pengguna memasukkan ID, jika semua info terkait lainnya (Nama, Alamat, dll.) Ada di tabel lain yang diketahui, mereka dapat ditampilkan di tempat kosong berikut di pada saat yang sama, alih-alih membiarkan pengguna mengetik semuanya.
Singkatnya, bisakah ArcPy mengisi formulir di antarmuka Add-in, bukan di jendela hasil?
Validasi berfungsi, tetapi sangat lambat ketika saya menjalankan kursor pencarian di .dbf yang memiliki lebih dari 160.000 catatan. Bagaimana saya dapat memperbaiki kode di bawah ini, atau adakah solusi yang lebih baik selain menggunakan alat skrip python? Tampaknya formulir akan melewati kursor lagi bahkan setelah saya mengisi kekosongan yang tidak terkait lainnya.
import arcpy, datetime
import os
import sys
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()
fc = "C:\\test\\vectorDBO.dbf"
field = "PARCEL"
cursor = arcpy.SearchCursor(fc)
row = cursor.next()
n = 0
while row:
if row.getValue("PARCEL") == self.params[0].value:
self.params[1].value = row.getValue("LASTNM")
self.params[3].value = row.getValue("ADDRESS")
self.params[4].value = row.getValue("CITY")
self.params[6].value = row.getValue("ZIPCODE")
break
row = cursor.next()
def initializeParameters(self):
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
self.params[10].value = datetime.datetime.now()
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."""
return
def updateMessages(self):
"""Modify the messages created by internal validation for each tool
parameter. This method is called after internal validation."""
return
sumber
Jawaban:
Saya tidak pernah menggunakan Python Addins tetapi antarmuka yang Anda gambarkan adalah Script Tool. Diskusi tentang memanggil alat Script dari Addins ditemukan di sini . Seperti komentar @Barbarossa di atas, Anda dapat menggunakan validasi alat untuk mengisi parameter. Kecuali ada alasan khusus untuk membuat Python Addin, saya mungkin akan tetap membuat Python Script Tool .
sumber