ArcPy có thể điền biểu mẫu trong giao diện Bổ trợ không?


8

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?

nhập mô tả hình ảnh ở đây

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

4
Bạn đã xem xác nhận công cụ tùy chỉnh ? Nó có thể được sử dụng để điền vào các trường dựa trên các trường khác.
Barbarossa

1
Bạn đang sử dụng con trỏ kiểu cũ, bạn muốn sử dụng trình tìm kiếm mới và nhanh hơn trong mô-đun da , điều này sẽ giải quyết vấn đề tốc độ.
Hornbydd

Cảm ơn lời đề nghị của bạn! Tôi chuyển đổi bảng dưới dạng tệp .csv và sử dụng SearchCthon (arcpy.da) và nó hoạt động hoàn hảo!
Cá tuyết năng lượng

Bài viết cũ hơn, nhưng tôi đã gặp một vấn đề tương tự khi tôi đang xây dựng một addin. Bạn sẽ muốn sử dụng hương vị .da của trình tìm kiếm và cũng sử dụng định dạng dữ liệu thân thiện với hệ thống hơn, như csv hoặc xlsx.
COCO

Câu trả lời:


4

Tôi chưa bao giờ sử dụng Python Addins nhưng giao diện bạn mô tả là Script Tool. Một cuộc thảo luận về việc gọi các công cụ Script từ Addins được tìm thấy ở đây . Như @Barbarossa nhận xét ở trên, bạn có thể sử dụng xác thực công cụ để điền các tham số. Trừ khi có một lý do cụ thể để tạo một Addin Python, tôi có thể sẽ dính vào việc tạo một Python Script Tool .


1
@EnergeticCodfish Nếu điều này giải quyết vấn đề của bạn, bạn có thể nhấp vào nút Chấp nhận màu xanh lá cây không?
PolyGeo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.