许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ESRI.ArcGIS.AnalysisTools与ESRI.ArcGIS.Geoprocessor:地理处理工具对比

ESRI.ArcGIS.AnalysisTools与ESRI.ArcGIS.Geoprocessor:地理处理工具对比

阅读数 15
点赞 0
article_banner

使用ESRI.ArcGIS.AnalysisTools中的工具(例如:泰森多边形的建立等),使用以下代码:
           Geoprocessor gp = new Geoprocessor();
           gp.OverwriteOutput = true;
           ESRI.ArcGIS.AnalysisTools.CreateThiessenPolygons CTP = new CreateThiessenPolygons(@"https://www.gofarlic.com\AEtestyao\Data\school.shp",
                                        "https://www.gofarlic.com\AEtestyao\Data\CTP.shp");
           CTP.fields_to_copy = "ONLY_FID";          
           gp.Execute(CTP, null);

开始一直得不到结果,然后上网查了很久后终于解决了。一般都会是由于工具未注册导致(the tool is not licensed)。
解决方案为:在主窗体的初始化函数中加入代码,如下:
public Mainform()
       {
           #region 初始化许可
           IAoInitialize m_AoInitialize = new AoInitializeClass();
           esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
           
           licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
           //默认第一个为有效地,之后无效,此级别最高,可用绝大多数功能

           //licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);级别最低
           #endregion
           InitializeComponent();  
       }
关键代码一定要放正确,放到InitializeComponent()后会无效。

原因说明下:系统搭建时,axLicenseControl默认使用的是esriLicenseProductCodeEngine,这个的级别是最低的,导致ESRI.ArcGIS.AnalysisTools中的很多功能无法使用,所以要重新设置。注意:在axLicenseControl上进行右键查属性设置无法使设置生效,故只能加代码。

ArcGIS Engine中调用GP的两种方法

//添加命名空间 using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geoprocessor; //实现button click方法 private void button1_Click(object sender, EventArgs e) { //构造Geoprocessor Geoprocessor gp = new Geoprocessor(); //设置参数 ESRI.ArcGIS.AnalysisTools.Intersect intersect = new ESRI.ArcGIS.AnalysisTools.Intersect(); intersect.in_features = @"F:\foshan\Data\wuqutu_b.shp;F:\foshan\Data\world30.shp"; intersect.out_feature_class = @"E:\intersect.shp"; intersect.join_attributes = "ONLY_FID"; //执行Intersect工具 RunTool(gp, intersect, null); } private void RunTool(Geoprocessor geoprocessor, IGPProcess process, ITrackCancel TC) { // Set the overwrite output option to true geoprocessor.OverwriteOutput = true; try { geoprocessor.Execute(process, null); ReturnMessages(geoprocessor); } catch (Exception err) { Console.WriteLine(err.Message); ReturnMessages(geoprocessor); } } // Function for returning the tool messages. private void ReturnMessages(Geoprocessor gp) { string ms = ""; if (gp.MessageCount > 0) { for (int Count = 0; Count <= gp.MessageCount - 1; Count++) { ms += gp.GetMessage(Count); } }
//1-定义GeoProcessor对象 Geoprocessor gp = new Geoprocessor(); object sev = null; //2-设置参数 gp.OverwriteOutput = true; //3-设置工具箱所在的路径 gp.AddToolbox(@"F:\lib_test\AirportsAndGolf.tbx"); //4-设置输入参数 IVariantArray parameters = new VarArrayClass(); parameters.Add(@"F:\lib_test\地下水重金属数据.xls\Sheet1$"); parameters.Add("`YEAR` = 2009"); parameters.Add("W20111"); parameters.Add(@"F:\lib_test\temp.gdb\tempwww"); //5-执行工具 gp.Execute("ModelAnalysis", parameters, null);


ESRI官方帮助示例:

using ESRI.ArcGIS.Geoprocessor;using ESRI.ArcGIS.AnalysisTools; public void SampleBufferTool(){   // Initialize the geoprocessor.   Geoprocessor GP = new Geoprocessor();   ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new    ESRI.ArcGIS.AnalysisTools.Buffer();   bufferTool.in_features = @"https://www.gofarlic.com\St_Johns\data.mdb\roads_Buffer";  bufferTool.out_feature_class = @"https://www.gofarlic.com\St_Johns\data.mdb\roads";  bufferTool.buffer_distance_or_field = "distance";   GP.Execute(bufferTool, null); }
using ESRI.ArcGIS.Geoprocessor;using ESRI.ArcGIS.esriSystem; public void SampleCalculateBestPathTool(){   // Initialize the geoprocessor.  Geoprocessor GP = new Geoprocessor();   // Add the BestPath toolbox.  GP.AddToolbox(@"C:\SanDiego\BestPath.tbx");   // Generate the array of parameters.  IVariantArray parameters = new VarArrayClass();  parameters.Add(@"C:\SanDiego\source.shp");  parameters.Add(@"C:\SanDiego\destination.shp");  parameters.Add(@"C:\SanDiego\bestpath.shp");   // Execute the model tool by name.  GP.Execute("CalculateBestPath", parameters, null);


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空