如何使用调用python脚本的c#在arcobjects中设置输入和输出参数?

时间:2012-03-28 15:09:48

标签: c# python arcgis arcobjects arcpy

我编写了一个python脚本来处理ArcGIS数据,并将python代码中的工作空间,输入和输出参数设置为:

env.workspace = arcpy.GetParameterAsText(0)
# input feature class 
inFeatures = arcpy.GetParameterAsText(1)
# output feature class
Transect_featureclass = arcpy.GetParameterAsText(2)

由于我是Visual Studio 2010中使用c#的ArcObjects新手,因此我尝试使用ArcMap Add-in将按钮添加到ArcMap桌面。但是我不知道如何从c#调用这个python脚本,并获得类似文本框弹出窗口的内容并询问有关输入和输出参数路径的信息。因为我直接调用python,所以它不能与python代码中的GetParameterAsText命令一起使用。

如果有人可以帮助解决此案,我非常感谢。提前谢谢。

3 个答案:

答案 0 :(得分:1)

Esri页面的.NET Developer帮助中有一个示例: http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Walkthrough_Consuming_a_geoprocessing_model_tool_in_NET/0001000001sw000000/

完成它,您应该已经学会了如何从ArcMap调用地理处理工具。为此,您必须创建一个包含python脚本的工具箱。这可以使用.NET代码调用(参见演练)。

注意:大部分基本开发内容已经在Esri页面上有详细记录,但有时很难找到; - )

答案 1 :(得分:1)

ArcPy不支持IronPython,它提供错误“无法加载库arcgisscripting”。我认为问题在于IronPython does not support pyd files是否包含在其中的<{3}}。

ESRI为leveraging ArcPy in .net

提供以下示例

答案 2 :(得分:0)

找到了几个选项:

  1. 使用IronPython库直接从C#代码加载Python脚本和调用方法。找到here的每个步骤的示例代码和详细说明的好文章。

  2. 使用Process.Start()使用Python可执行文件

  3. 执行脚本

    首选方法是选项1.它似乎是一个更“完整”的解决方案,允许直接从C#进行Python脚本方法调用,同时还允许异常冒泡。使用选项2,您完全依赖于单独的Python进程来进行错误处理和日志记录。

    我犹豫是否提供选项2,但如果你不能让arcpy模块与IronPython很好地配合,则可能需要它。