网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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实现-创新互联
网址分享:http://bjjierui.cn/article/dhepjo.html

其他资讯