ESRI.ArcGIS.AnalysisTools 与 ESRI.ArcGIS.Geoprocessor
来源:互联网 发布:sqlserver 商业智能 编辑:程序博客网 时间:2024/05/20 22:29
使用ESRI.ArcGIS.AnalysisTools中的工具(例如:泰森多边形的建立等),使用以下代码:
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.CreateThiessenPolygons CTP = new CreateThiessenPolygons(@"D:\AEtestyao\Data\school.shp",
"D:\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()后会无效。
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.CreateThiessenPolygons CTP = new CreateThiessenPolygons(@"D:\AEtestyao\Data\school.shp",
"D:\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 = @"D:\St_Johns\data.mdb\roads_Buffer"; bufferTool.out_feature_class = @"D:\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);
0 0
- ESRI.ArcGIS.AnalysisTools 与 ESRI.ArcGIS.Geoprocessor
- ESRI.ArcGIS.AnalysisTools的使用
- ESRI.ArcGIS.AnalysisTools的使用
- esri.arcgis.gmaps.DynamicMapServiceLayer
- esri.arcgis.controls.hookhelperclass
- ESRI.ArcGIS.DataManagementTools.Append 使用
- ESRI.ArcGIS.esriSystem名称空间问题
- arcgis esri 学习资料网址大全
- ESRI.ArcGIS.RuntimeManager.Bind返回false解决方法
- Arcgis 图例 esri.dijit.legend Legend widget
- 2014Esri全球用户大会之ArcGIS
- ESRI.ArcGIS.esriSystem名称空间问题
- 找不到ESRI.ArcGIS.Utility;的引用
- arcgis二次开发无法引用 ESRI.ArcGIS.DataSourcesFile解决方法
- "类型同时存在于ESRI.ArcGIS.AxMapControl.dll和ESRI.ArcGIS.MapControl.dll中"的错误
- 【2013Esri开发者大会精彩看点】ArcGIS Online与Web地图
- 2008ESRI用户大会问答之ArcGIS部分
- 2008ESRI用户大会问答之ArcGIS Server部分
- bash获取系统内存实际使用量
- Windows 下openssl安装与配置
- 日经春秋 20150122
- mysql select语句中显示行的序号自增i++
- 回答师兄for循环的问题
- ESRI.ArcGIS.AnalysisTools 与 ESRI.ArcGIS.Geoprocessor
- bochs 编译安装
- 基于bootstrap的 按钮-隐藏 案例
- 日经社説 20150122 経営力を高め好循環つくれ
- Convert Sorted List to Binary Search Tree
- 利用织梦dedecms单页功能制作Sitemap.xml地图
- 日经社説 20150122 理想論のオバマ教書で米政治は動くか
- scrum training
- linux 修改文件夹及文件拥有者与群组(1)