Chamando arcpy / python do .NET?

15

Existem exemplos disponíveis que mostram como o python pode ser integrado a um complemento ou extensão do .NET ArcGIS? Eu tenho uma série de scripts python que gostaria de chamar de eventos de formulário (por exemplo, cliques no botão) no .NET. Eu também gostaria de poder definir variáveis ​​no script a partir de um formulário .NET.

Devo morder o marcador e reescrever esses scripts no .NET, ou existe uma maneira simples de quebrar o código python?

Radar
fonte

Respostas:

25

Lembre-se de que o Arcpy é essencialmente um invólucro do ArcObjects. Mas se você está apenas tentando chamar alguns scripts Python que não deseja reescrever, pode gerar um processo que chama o executável python com seus argumentos.

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

Observe que você também pode fazer coisas multithreading bem legais.

valveLondon
fonte
0

Na sua pergunta, não tenho certeza de como você está conectado ao .NET, mas, se você estiver usando o ArcGIS 10.1 (ou posterior) para Desktop, acho que uma abordagem mais simples será usar um Python AddIn :

O ArcGIS 10.1 apresenta ao Python a lista de idiomas para a criação de suplementos de área de trabalho, fornecendo uma solução fácil para estender a funcionalidade da área de trabalho. Para simplificar o desenvolvimento de suplementos do Python, você deve baixar e usar o Assistente de Suplemento do Python para declarar o tipo de personalização. O assistente irá gerar todos os arquivos necessários para o suplemento funcionar.

PolyGeo
fonte