下面是详细讲解“C#调用python.exe使用arcpy方式”的完整攻略。
一、前置准备
在 C# 中调用 Python 脚本需要借助于 Process 类,同时需要安装好 python 的开发环境以及第三方库 arcpy。
安装 arcpy:
- 安装 ArcGIS Desktop 或者 ArcGIS Engine。
- 执行 ArcGIS Desktop 安装路径下的 python 文件夹安装 arcpy,比如在我的电脑上是:
C:\Python27\ArcGIS10.3\python.exe
。 - 配置 arcpy 的
PYTHONPATH
环境变量,使其能在 Python 解释器中正确地 import。比如在我的电脑上是:C:\Program Files (x86)\ArcGIS\Desktop10.3\bin\Python27\ArcGIS10.3
。
二、C# 调用 Python
在 C# 中调用 Python 脚本可以采用以下两种方式:
1. 直接调用 python.exe
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "python.exe";
start.Arguments = "C:\\path\\to\\your\\python_script.py arg1 arg2 arg3";
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
其中,start.Arguments
指定要执行的 Python 脚本及其参数。
2. 调用 IronPython
IronPython 是一种 Python 语言的 .NET 实现。因此,可以直接在 C# 中调用 IronPython 实现 Python 脚本的执行。
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
try
{
var source = engine.CreateScriptSourceFromFile(@"C:\path\to\your\python_script.py");
source.Execute(scope);
var result = scope.GetVariable<string>("result");
Console.Write(result);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
三、使用 arcpy
下面提供两个示例,演示如何在 C# 中调用使用 arcpy 的 Python 脚本。
1. 使用 arcpy 读取 Shapefile 数据
Python 脚本:(路径为 C:\path\to\your\read_shapefile.py
)
import arcpy
# 获取 Shapefile 的路径
shapefile = arcpy.GetParameterAsText(0)
# 打开 Shapefile
cursor = arcpy.da.SearchCursor(shapefile, ["SHAPE@XY", "Name"])
# 遍历 Shapefile 中的每个要素
for row in cursor:
print(row[0], row[1])
C# 代码:
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "python.exe";
start.Arguments = string.Format("\"C:\\path\\to\\your\\read_shapefile.py\" {0}", shapeFilePath);
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
2. 使用 arcpy 运行 ArcGIS Model
Python 脚本:(路径为 C:\path\to\your\run_model.py
)
import arcpy
# 获取 ArcGIS Model 的路径
model = arcpy.GetParameterAsText(0)
# 获取 Model 中要素的路径
input_fc = arcpy.GetParameterAsText(1)
# 运行 Model
arcpy.ImportToolbox(r"C:\path\to\your\model.tbx")
result = arcpy.RunModel(model, {"Input_Features": input_fc})
# 获取 Model 的输出
output_fc = result.getOutput(0)
print(output_fc)
C# 代码:
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "python.exe";
start.Arguments = string.Format("\"C:\\path\\to\\your\\run_model.py\" {0} {1}", modelPath, inputFeatureClassPath);
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
以上就是使用 C# 调用 Python 脚本并使用 arcpy 的完整攻略和两个示例。希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#调用python.exe使用arcpy方式 - Python技术站