Gọi arcpy / python từ .NET?


15

Có bất kỳ ví dụ có sẵn nào cho thấy python có thể được tích hợp vào Addin hoặc Tiện ích mở rộng .NET ArcGIS không? Tôi có một loạt các kịch bản python mà tôi muốn gọi từ các sự kiện biểu mẫu (ví dụ: nhấp vào nút) trong .NET. Tôi cũng muốn có thể đặt các biến trong tập lệnh từ một biểu mẫu .NET.

Tôi có nên cắn viên đạn và viết lại các tập lệnh này bằng .NET hay không, có cách nào đơn giản để bọc mã python không?

Câu trả lời:


25

Hãy nhớ rằng Arcpy về cơ bản là một trình bao bọc xung quanh ArcObjects. Nhưng nếu bạn chỉ đang cố gắng gọi một số tập lệnh Python mà bạn không muốn phải viết lại, bạn có thể tạo ra một quy trình gọi con trăn có thể thực thi được bằng các đối số của bạn.

var startInfo = new ProcessStartInfo() {
   CreateNoWindow = false,
   UseShellExecute = false,
   FileName = pathToPythonRuntime,
   WindowStyle = ProcessWindowStyle.Hidden,
   Arguments = pathToYourPythonScriptYouDoNotWantToRewrite+" "+yourOtherArgsEtc
 };
var exeProcess= Process.Start(startInfo);
//If you need synchronous execution you can do this
exeProcess.WaitForExit();

Lưu ý rằng bạn cũng có thể thực hiện một số công cụ đa luồng khá thú vị với điều này.


0

Từ câu hỏi của bạn, tôi không chắc bạn đã kết hôn với .NET như thế nào, nhưng, nếu bạn đang sử dụng ArcGIS 10.1 (hoặc phiên bản mới hơn) cho Máy tính để bàn, thì tôi nghĩ cách tiếp cận đơn giản hơn sẽ là sử dụng Python AddIn :

ArcGIS 10.1 giới thiệu Python vào danh sách các ngôn ngữ để tác giả bổ trợ Desktop, cung cấp cho bạn một giải pháp dễ dàng để mở rộng chức năng của máy tính để bàn. Để đơn giản hóa việc phát triển bổ trợ Python, bạn phải tải xuống và sử dụng Trình hướng dẫn bổ trợ Python để khai báo loại tùy chỉnh. Trình hướng dẫn sẽ tạo tất cả các tệp cần thiết để bổ trợ hoạt động.

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.