从.NET调用arcpy / python?


15

是否有任何可用的示例说明如何将python集成到.NET ArcGIS Addin或Extension中?我想从.NET中的表单事件(例如按钮单击)调用一系列python脚本。我还希望能够从.NET表单中在脚本中设置变量。

我应该咬紧牙关,然后在.NET中重新编写这些脚本,还是有一种简单的方法来包装python代码?

Answers:


25

请记住,Arcpy本质上是ArcObjects的包装。但是,如果您只是想调用一些不需要重写的Python脚本,则可以生成一个使用args调用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加载项向导声明自定义类型。该向导将生成该外接程序正常工作所需的所有必需文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.