首先将GP服务的工具箱放到程序中
1.在程序工程中添加GP工具箱
//定义GeoProcessor对象
Geoprocessor gp = new Geoprocessor();
//IGeoProcessor2 gp = new GeoProcessorClass();
//设置参数
gp.OverwriteOutput = true;
//设置工具箱所在的路径()
string strPath = System.Windows.Forms.Application.StartupPath;
gp.AddToolbox(strPath + "\\JGTool.tbx");
2.设置参数
IVariantArray parameters = new VarArrayClass();
parameters.Add(Sdem.Text.ToString().Trim());
parameters.Add(SDshp.Text.ToString().Trim());
parameters.Add(DDfield.Text.ToString().Trim());
parameters.Add(weight1.Text.ToString().Trim());
parameters.Add(weight2.Text.ToString().Trim());
parameters.Add("");
parameters.Add("");
parameters.Add("");
//执行工具
gp.Execute("Model3", parameters, null);
3.程序就可以顺利使用GP服务了。
解释一下,这里主要用了string strPath = System.Windows.Forms.Application.StartupPath;获取了程序启动时的路径,然后解决了绝对路径的问题,这样的程序可以顺利打包运行。
===================================================================================================================
ArcEngine开发中自定义工具箱的调用
object sev = null;//用来标记处理信息 //1-定义GeoProcessor对象 // Geoprocessor gp = new Geoprocessor(); IGeoProcessor2 gp = new GeoProcessorClass(); //2-设置参数 gp.OverwriteOutput = true; //3-设置工具箱所在的路径 gp.AddToolbox(@"E:\Users\zheng\Desktop\tbx测试\mymodel.tbx"); //4-设置输入参数 IVariantArray parameters = new VarArrayClass(); parameters.Add(@"E:\Users\zheng\Desktop\新建文件夹\Chp12\Ex1\DEM\aaaaaaaaaaaa\mmmmmm.shp"); // parameters.Add("45"); // parameters.Add("225"); parameters.Add(@"E:\Users\zheng\Desktop\新建文件夹\Chp12\Ex1\DEM\dem50"); //5-执行工具 try { gp.Execute("Model", parameters, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { MessageBox.Show(gp.GetMessages(ref sev).ToString()); }
注意:在使用的过程中必须确保输入参数和输出参数的正确,参数的顺序也必须与模型运行时显示的对话框的顺序相同。一般情况下参数都为字符串。特别注意的一点,在一台机子上运行没问题的模型(在ArcGIS以及自己开发的程序中),移植到另外的机子上时,可能以及肯定会出现问题,一般为文件路径不正确、找不到文件。所以需要注意把模型的过程文件的存储地址进行设置,默认是在 C盘 ArcGIs的default.gdb下,移植时需要重新定义已存在的路径。目前程序开发中暂未找到设置模型操作环境的处理…………