Ich versuche, ein ArcPy-Tool zu erstellen, das den Benutzer auffordert, zuerst einige Informationen (ID, Name, Adresse, Postleitzahl usw.) einzugeben. Meine Add-In-Oberfläche wird unten gezeigt und ich hoffe zu implementieren, dass, sobald der Benutzer die ID eingibt, alle anderen verwandten Informationen (Name, Adresse usw.) in einer anderen bekannten Tabelle vorhanden sind, sie in den folgenden Leerzeichen unter angezeigt werden können zur gleichen Zeit, anstatt den Benutzer alles eingeben zu lassen.
Kurz gesagt, kann ArcPy Formulare in der Add-In-Oberfläche und nicht im Ergebnisfenster ausfüllen?
Die Validierung funktioniert, ist aber extrem langsam, wenn ich einen Suchcursor in einer DBF mit mehr als 160.000 Datensätzen ausführe. Wie kann ich den folgenden Code verbessern oder gibt es eine bessere Lösung als die Verwendung des Python-Skript-Tools? Es scheint, dass das Formular den Cursor erneut durchlaufen wird, selbst nachdem ich andere nicht verwandte Lücken ausgefüllt habe.
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