C#中的arcpy方式怎么利用python.exe实现-创新互联

C#中的arcpy方式怎么利用python.exe实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联公司专注于漠河企业网站建设,成都响应式网站建设公司,商城建设。漠河网站建设公司,为漠河等地区提供建站服务。全流程按需制作,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

背景

环境:ArcGis10.2.2。C#开发程序一直以来以调用Desktop的python环境(32位)来做数据处理分析。但是数据量大时,出现了内存资源不够的情况。因此决定换成使用64位python环境。

遇到问题

C#通过Process.Start()去调用64位python.exe,在Debug模式下毫无问题,但是直接运行exe就报错Process finished with exit code -1073741819 (0xC0000005)。指向异常。

分析问题

后来发现是由于arcpy模块导致的,去掉这个模块的内容就能运行,import arcpy就运行不起来。既然使用arcpy做数据处理,如果连import arcpy都不行,那还做个屁啊。于是开始寻找程序Debug模式下和Run模式下的区别。

程序中使用ProcessStartInfo类启动的python.exe的进程,那问题基本就出自这里了。附上检测代码:

var start = new ProcessStartInfo
{
 WorkingDirectory = Environment.CurrentDirectory,
 FileName = sInterpreterPath,
 UseShellExecute = false,
 ErrorDialog = true,
 CreateNoWindow = true,
 RedirectStandardOutput = true,
 RedirectStandardInput = true,
 Arguments = sParam
};
using (Process process = Process.Start(start))
{
 var a = start.Environment;
 var b = a.Keys.ToList();
 b.Sort();
 var sss = "";
 foreach (var it in b)
 {
 sss = $"{sss}\n{it}------->{a[it]}";
 }
 sss = sss.Trim();
 using (StreamReader reader = process.StandardOutput)
 {
 var sResult = "";
 while (!reader.EndOfStream)
 {
 sResult = $"{sResult} \n {reader.ReadLine()}";
 }
 sResult = sResult.Trim();
 MessageBox.Show(sResult);
 }
 MessageBox.Show("ExitCode is " + process.ExitCode);
}

网页题目:C#中的arcpy方式怎么利用python.exe实现-创新互联
浏览地址:https://www.cdcxhl.com/article20/dhepjo.html

成都网站建设公司_创新互联,为您提供网站设计标签优化搜索引擎优化外贸建站App设计网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管