Triển khai tham số MultiValue với nhiều cột với Python và ArcGIS Desktop?


10

Tôi đang làm việc trên một kịch bản Python ArcGIS (9.3). Một trong những đầu vào là một danh sách các tính năng. Đối với mỗi tính năng, tôi cần chọn một trường tương ứng. Đặt tham số thành MultiValue sẽ cho một bảng đẹp trong giao diện người dùng cho tất cả các tính năng đang được xử lý. Làm cách nào để thêm một cột khác vào bảng MultiValue để chọn một trường cho mỗi tính năng?

Đăng chéo: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multipl-Columns

Câu trả lời của Esri từ diễn đàn ArcGIS:

Thật không may, giải pháp cho việc này đã được triển khai gần đây cho 10.1 với các đầu vào ValueTable cho các công cụ tập lệnh. Bạn sẽ cần phải có hai tham số đa giá trị với một số xác nhận tùy chỉnh để thực hiện công việc này cho 9.3.1.


Nếu đó là thế hệ của danh sách lựa chọn đa giá trị mà bạn quan tâm - Tôi đã thấy bài đăng trên blog Esri này gần đây, nó có thể hữu ích.
Alex Tereshenkov

Câu trả lời:


1

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:

Giao diện ví dụ

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.

Cài đặt giao diện ban đầu

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 .


0

nếu bạn đang tìm kiếm danh sách thả xuống cho tham số ID trang web, bạn có thể sử dụng mã như sau:

 param.filters[1].list = ['pid', 'id']

Vì vậy, bạn có thể tạo một con trỏ hoặc sử dụng một phương thức khác để đọc tất cả các trường của FC và chuyển chúng, dưới dạng danh sách, cho câu trước đó

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.