Виклик 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();

Зауважте, що і з цим ви можете зробити кілька цікавих багатопотокових записів.


0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.