¿Llamar a arcpy / python desde .NET?


15

¿Hay ejemplos disponibles que muestren cómo se puede integrar Python en un complemento o extensión de ArcGIS de .NET? Tengo una serie de scripts de Python a los que me gustaría llamar desde eventos de formulario (por ejemplo, clics de botón) en .NET. También me gustaría poder establecer variables en el script desde un formulario .NET.

¿Debo morder la viñeta y volver a escribir estos scripts en .NET, o hay una manera simple de envolver el código de Python?

Respuestas:


25

Tenga en cuenta que Arcpy es esencialmente un envoltorio alrededor de ArcObjects. Pero si solo está tratando de llamar a algunos scripts de Python que no desea reescribir, puede generar un proceso que llame al ejecutable de Python con sus 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();

Tenga en cuenta que también puede hacer algunas cosas geniales de subprocesamiento múltiple con esto.


0

A partir de su pregunta, no estoy seguro de qué tan casado está con .NET, pero si está utilizando ArcGIS 10.1 (o posterior) para escritorio, creo que un enfoque más simple será utilizar un complemento de Python :

ArcGIS 10.1 presenta Python a la lista de idiomas para crear complementos de escritorio, brindándole una solución fácil para ampliar la funcionalidad del escritorio. Para simplificar el desarrollo de complementos de Python, debe descargar y utilizar el Asistente de complementos de Python para declarar el tipo de personalización. El asistente generará todos los archivos necesarios para que el complemento funcione.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.