Вызов arcpy / python из .NET?

15

Есть ли доступные примеры, показывающие, как Python может быть интегрирован в .NET ArcGIS Addin или Extension? У меня есть ряд скриптов Python, которые я хотел бы вызвать из событий формы (например, нажатие кнопок) в .NET. Я также хотел бы иметь возможность устанавливать переменные в сценарии из формы .NET.

Должен ли я прикусить пулю и переписать эти сценарии в .NET, или есть простой способ обернуть код Python?

радиолокационный
источник

Ответы:

25

Имейте в виду, что Arcpy по сути является оболочкой для ArcObjects. Но если вы просто пытаетесь вызвать некоторые скрипты Python, которые вам не нужно переписывать, вы можете запустить процесс, который вызывает исполняемый файл python с вашими аргументами.

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

Обратите внимание, что с этим вы также можете сделать несколько крутых многопоточных приложений.

valveLondon
источник
0

Исходя из вашего вопроса, я не уверен, насколько вы привязаны к .NET, но если вы используете ArcGIS 10.1 (или более позднюю версию) для рабочего стола, то я думаю, что более простым подходом будет использование Python AddIn :

ArcGIS 10.1 вводит Python в список языков для создания надстроек Desktop, предоставляя вам простое решение для расширения функциональности рабочего стола. Чтобы упростить разработку надстроек Python, вы должны загрузить и использовать мастер надстроек Python, чтобы объявить тип настройки. Мастер сгенерирует все необходимые файлы, необходимые для работы надстройки.

PolyGeo
источник