Tại sao phải tìm hiểu / sử dụng Python Toolboxes trên Python Script Tools? [đóng cửa]


25

Tôi đã viết một vài Hộp công cụ Python (mới ở ArcGIS 10.1), nhưng vẫn chưa quyết định liệu tôi có nên viết chúng thay vì Python Script Tools trong hộp công cụ tiêu chuẩn hay không.

Tôi nghĩ rằng Trợ giúp trực tuyến có thể khai sáng cho tôi khi nó mở đầu một số điểm chấm bằng:

Khi được tạo, các công cụ trong hộp công cụ Python cung cấp nhiều lợi thế

Tuy nhiên, tất cả năm ưu điểm được liệt kê dường như là không thể sử dụng Python để viết các công cụ và dường như không có gì chỉ định một lợi thế của Python Toolboxes so với Python Script Tools.

Hai lợi thế mà tôi có thể nghĩ đến là:

  • Bây giờ tôi có thể viết một công cụ Python "thuần túy" trong một tập lệnh Python duy nhất mà không cần nối nó với một hộp thoại được ủy quyền riêng với Xác thực Công cụ của nó trông giống như nó đã được xử lý nhưng tôi rất vui khi thực dụng hơn là về mặt này
  • Bây giờ tôi có thể sử dụng mã (Python hoặc bất kỳ ngôn ngữ nào có khả năng viết tệp văn bản) để tự động hóa việc viết các hộp công cụ Python nhưng tôi vẫn chưa bắt gặp một yêu cầu để làm điều này

Tôi có nhìn ra trường hợp hấp dẫn khiến Esri cung cấp khả năng của Python Toolbox không và nếu có thì đó là gì?

Câu trả lời:


34

Hai là rất, rất gần về chức năng nhưng không hoàn toàn tương đương.

Chung cho cả hai

  • Bao gồm một bộ công cụ với bí danh duy nhất để nhận dạng
  • Có thể gọi từ Arcpy
  • Nhận hộp thoại công cụ Geoprocessing (về cơ bản là UI đầy đủ) miễn phí cho mỗi công cụ
  • Có thể giữ tất cả mã Python trong một tệp (nhúng nguồn công cụ TBX, giữ tất cả việc thực hiện trong một PYT) và phân phối qua email hoặc các ổ đĩa mạng chung
  • Luôn chạy trong cài đặt nền trước cho các ứng dụng máy tính để bàn. Đặt "Luôn chạy trong nền trước" trong mã ArcPy?

Duy nhất cho các tệp TBX:

  • Có thể bao gồm các tham chiếu đến các hộp công cụ hệ thống, công cụ COM tùy chỉnh và công cụ .Net tùy chỉnh
  • Công cụ Model Builder có thể được bao gồm trong hộp công cụ
  • Tài liệu công cụ được lưu trữ bên trong tệp .tbx
  • UI trình hướng dẫn dễ dàng để thiết lập các tham số và thực hiện mã xác nhận
  • Chạy Python Script trong thuộc tính công cụ Process
  • Nhược điểm: Định dạng nhị phân mờ, các phiên bản mới hơn của tệp TBX cần được lưu rõ ràng dưới dạng phiên bản cũ hơn để hoạt động trong các phiên bản trước của phần mềm, giao diện người dùng có thể là con dao hai lưỡi khi bạn phải chuyển đổi giữa các trang thuộc tính để xem nếu bạn bỏ lỡ thiết lập (như đường dẫn tương đối)

Duy nhất cho các hộp công cụ Python:

  • Văn bản đơn giản, vì vậy các toolbox thể được điều trị giống như bất kỳ mã khác (hữu dụng trong các môi trường nơi kiểm soát sửa đổi tốt dụng cụ được sử dụng như bạn có thể theo dõi lịch sử phát triển của nó - nhìn vào bao nhiêu dự án trên GitHub sử dụng PYThơn TBX.)
  • Có nhiều quyền kiểm soát hơn đối với các loại tham số nhất định (cụ thể là bạn có thể thực hiện kiểu dữ liệu tổng hợp và xác định lược đồ của bảng giá trị)
  • Thuộc tính isLicensed có thể được sử dụng để vô hiệu hóa một công cụ nếu một sản phẩm ("ArcInfo") hoặc tiện ích mở rộng ("không gian") không khả dụng.
  • Tài liệu công cụ được lưu trữ trong các tệp XML trong cùng thư mục với .pyt
  • Nhược điểm: Không có UI trình hướng dẫn để định cấu hình các tham số công cụ, mã giàn giáo nhiều hơn đáng kể trong Python, biến việc phát triển Hộp công cụ thành nhiều nhiệm vụ phát triển phần mềm chính thức hơn là chỉ cần thêm tập lệnh triển khai. Tải lại một pyt để tải các thay đổi trong khi phát triển có thể chậm nếu pyt lớn (điều này có thể tránh được bằng cách đặt các công cụ trong các tệp khác và nhập để chúng không cần phải biên dịch lại).

Cách đây một thời gian, khi tôi đang làm việc với hàng tá PYThộp công cụ đầu tiên của mình, tôi đã bối rối khi thấy nó rắc rối đến mức nào khi thiết lập PYTlần đầu tiên, vì vậy tôi đã phát triển một công cụ được gọitbx2pyt . Nó sẽ lấy một TBXhộp công cụ và chuyển đổi nó thành một PYTmã bị mất tối thiểu. Trong thực tế, PYTsức mạnh đó là lần đầu tiên a TBX. Đây có thể là một cách tốt để chuyển các công cụ hiện có sang định dạng Hộp công cụ Python nếu bạn mong muốn. Ít nhất, nó có thể thiết lập các tham số của công cụ của bạn bằng giao diện người dùng trước khi chuyển sang mã.


15

Phần trợ giúp có tiêu đề So sánh các hộp công cụ Python và hộp tùy chỉnh có một so sánh khá tốt về lý do tại sao bạn có thể chọn cái này, mặc dù tôi tò mò muốn nghe những ưu điểm / nhược điểm của "thế giới thực" từ những người có kinh nghiệm trong việc tạo ra Hộp công cụ Python.

Một nhược điểm rõ ràng mà tôi đọc được là không có khả năng trộn / khớp các mô hình & tập lệnh trong Hộp công cụ Python, như bạn có thể trong Hộp công cụ tùy chỉnh tiêu chuẩn.


11

Lý do số một của tôi khi nghiêng về các hộp công cụ python là để kiểm soát phiên bản và quản lý mã nguồn (xem Áp dụng kiểm soát phiên bản cho Mô hình ArcGIS ), theo dõi rất chặt chẽ bằng cách có thể sử dụng trình soạn thảo mã / IDE với hoàn thành tab, biểu thức chính quy, thư viện đoạn trích, v.v.

Tuy nhiên, như Ryan Dalton lưu ý , bằng cách đó, bạn sẽ mất khả năng sử dụng Trình tạo mô hình và Công cụ kiểu cũ - trừ khi bạn sẵn sàng nỗ lực xây dựng mô hình như bình thường và sau đó xuất sang python và sau đó viết lại cho phù hợp vào .pyt. (Nếu bạn làm điều này, hãy xem Hướng dẫn tổ chức Hộp công cụ Python (.pyt) trong ArcGIS ). Hiện tại nhược điểm này đủ lớn để tôi bắt tay vào sử dụng các hộp công cụ python một cách nghiêm túc.

Nếu bạn có các hộp công cụ hiện có mà bạn muốn chuyển đổi sang .pyt, bạn có thể thấy trình chuyển đổi một phần tbxtopyt của Jason Scheirer hữu ích.

Đối với "trường hợp hấp dẫn?" một phần của câu hỏi: nếu bạn đã có một số chương trình phát triển phần mềm, chắc chắn là có. Nếu như tôi, bạn là 3 phần Công nghệ / Phân tích GIS và 1 phần hoặc ít hơn pythonista, không quá nhiều. (Ít nhất là chưa - Tôi thực sự hy vọng bản nhị phân này hoặc bản chất khác của hai cách tiếp cận sẽ thay đổi trong một bản phát hành trong tương lai gần.)

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.