Tôi đang cố gắng xây dựng một công cụ ArcPy, trước tiên sẽ yêu cầu người dùng nhập một số thông tin (ID, Tên, Địa chỉ, Zip, v.v.). Giao diện bổ trợ của tôi được hiển thị bên dưới và hy vọng triển khai rằng một khi người dùng nhập ID, nếu tất cả các thông tin liên quan khác (Tên, Địa chỉ, v.v.) tồn tại trong một bảng đã biết khác, chúng có thể được hiển thị trong các khoảng trống sau tại đồng thời, thay vì để người dùng gõ vào mọi thứ.
Nói tóm lại, ArcPy có thể điền biểu mẫu trong giao diện Bổ trợ, không phải trong cửa sổ kết quả không?
Quá trình xác thực hoạt động, nhưng cực kỳ chậm khi tôi chạy con trỏ tìm kiếm trong tệp .dbf có hơn 160.000 bản ghi. Làm cách nào tôi có thể cải thiện mã bên dưới hoặc có giải pháp nào tốt hơn ngoài việc sử dụng công cụ tập lệnh python? Có vẻ như biểu mẫu sẽ đi qua con trỏ một lần nữa ngay cả sau khi tôi điền vào các khoảng trống không liên quan khác.
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