Memanggil arcpy / python dari .NET?


15

Apakah ada contoh yang tersedia yang menunjukkan bagaimana python dapat diintegrasikan ke dalam .NET ArcGIS Addin atau Extension? Saya memiliki serangkaian skrip python yang ingin saya panggil dari bentuk acara (misalnya klik tombol) di .NET. Saya juga ingin dapat mengatur variabel dalam skrip dari formulir .NET.

Haruskah saya menggigit peluru dan menulis ulang skrip ini dalam .NET, atau apakah ada cara sederhana untuk membungkus kode python?

Jawaban:


25

Ingatlah bahwa Arcpy pada dasarnya adalah pembungkus di sekitar ArcObjects. Tetapi jika Anda hanya mencoba untuk memanggil beberapa skrip Python yang tidak ingin Anda harus menulis ulang, Anda dapat menelurkan proses yang memanggil python dieksekusi dengan args Anda.

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();

Perhatikan bahwa Anda juga dapat melakukan beberapa hal multithreading yang cukup keren dengan ini.


0

Dari Pertanyaan Anda, saya tidak yakin bagaimana menggunakan .NET Anda, tetapi, jika Anda menggunakan ArcGIS 10.1 (atau lebih baru) untuk Desktop, maka saya pikir pendekatan yang lebih sederhana adalah dengan menggunakan Python AddIn :

ArcGIS 10.1 memperkenalkan Python ke daftar bahasa untuk membuat add-in Desktop, memberikan Anda solusi mudah untuk memperluas fungsionalitas desktop. Untuk menyederhanakan pengembangan add-in Python, Anda harus mengunduh dan menggunakan Wisaya Tambah Python untuk mendeklarasikan jenis penyesuaian. Wizard akan menghasilkan semua file yang diperlukan yang diperlukan agar add-in berfungsi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.