Wywoływanie arcpy / python z .NET?

15

Czy są dostępne przykłady pokazujące, w jaki sposób można zintegrować Pythona z dodatkiem lub rozszerzeniem .NET ArcGIS? Mam serię skryptów python, które chciałbym wywoływać ze zdarzeń formularza (np. Kliknięć przycisków) w .NET. Chciałbym również móc ustawić zmienne w skrypcie z formularza .NET.

Czy powinienem ugryźć punktor i ponownie napisać te skrypty w .NET, czy też istnieje prosty sposób na owinięcie kodu python?

Radar
źródło

Odpowiedzi:

25

Należy pamiętać, że Arcpy jest zasadniczo otoczką ArcObjects. Ale jeśli próbujesz wywołać niektóre skrypty Pythona, których nie chcesz przepisywać, możesz odrodzić proces, który wywołuje plik wykonywalny Pythona za pomocą argumentów.

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

Zauważ, że możesz przy tym robić całkiem fajne rzeczy wielowątkowe.

klapa Londyn
źródło
0

Z twojego pytania nie jestem pewien, jak bardzo jesteś przywiązany do platformy .NET, ale jeśli używasz ArcGIS 10.1 (lub nowszej wersji) dla komputerów stacjonarnych, to myślę, że prostszym podejściem będzie użycie Addhon AddIn :

ArcGIS 10.1 wprowadza Python na listę języków do tworzenia dodatków Desktop, zapewniając łatwe rozwiązanie rozszerzające funkcjonalność pulpitu. Aby uprościć rozwój dodatków Python, musisz pobrać i użyć Kreatora dodatków Python, aby zadeklarować rodzaj dostosowania. Kreator wygeneruje wszystkie wymagane pliki niezbędne do działania dodatku.

PolyGeo
źródło