Tôi đã tìm ra cách để làm điều này mặc dù theo cách khá đơn giản. Tôi muốn tạo một tham số đa giá trị trong đó tôi thêm nhiều FeatureLayers và sau đó chọn trường ID cho mỗi lớp. Tôi đã làm cho nó hoạt động nhưng tôi không thể làm việc làm thế nào để đưa trường vào danh sách thả xuống, vì vậy người dùng phải nhập tên trường theo cách thủ công. Đây là giao diện:
Nếu bất cứ ai đã cố gắng giải quyết vấn đề này hoặc một số chuyên gia từ ESRI ban phước cho chúng tôi với kiến thức của họ, tôi rất muốn tìm hiểu làm thế nào để biến cột thứ hai (ID trang web) của tôi thành một danh sách cụ thể. Nếu bạn muốn xem một ví dụ về điều này, hãy xem công cụ Tạo TIN .
Dù sao để tạo giao diện này, tôi tạo một công cụ kịch bản và thêm một tham số của lớp tính năng loại và đặt nó thành một đa trị liệu như dưới đây.
Sau đó tôi nhấp vào tab Xác thực ở trên cùng và sau đó là nút Chỉnh sửa. Vì tham số này là tham số thứ 6 trong công cụ tập lệnh của tôi, tôi đã cập nhật đoạn mã sau:
def initializeParameters(self):
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
# Get the 6th parameter
param = self.params[6]
param.datatype = "Value Table"
param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]
return
Điều này đặt lại giao diện vào bảng nhiều cột mà tôi muốn. Khi bạn sử dụng GetParameterAsText, nó sẽ trả về như sau bằng ví dụ của tôi:
pipeline pid;Dredging did
Tôi đã thực hiện một số nghiên cứu thêm và đã tạo ra công cụ bằng hộp công cụ python. Nó hoạt động rất tốt nhưng có một hạn chế nếu bạn quay lại và chọn một ID khác. Tôi đã đăng mã trên GeoNet ở đây .