ArcGIS 下的GP function Tool开发
来源:互联网 发布:数据存储以什么为单位 编辑:程序博客网 时间:2024/05/05 00:06
Visual C++ 开发Geoprocessing 工具
GP工具开发步骤
继承IGPFunctionFactory和IGPFunction接口
2.实现上述接口中的方法
3.定义UI参数
4.处理UI参数(验证期处理和执行期调用)
5.如何调用GP工具
GP工具涉及的主要接口
IGPFunctionFactory
IGPFunction
1.GP工具的模式
对象创建型模式(工厂模式)
只要实现IGPFunctionFactory接口,便可以在ArcGIS软件启动时,ArcToolBox加载自 定义的GP工具。
自定义的GP工具需要实现IGPFunction接口。一旦实现该接口,ArcToolBox根据名字列出每个自定义GP工具。
2.GP工具开发中需要自己实现的方法
IGPFunctionFactory主要的三个方法
GetFunction(BSTR Name, IGPFunction * * Function)
// Returns the geoprocessing function object with the given name
GetFunctionName(BSTR Name, IGPName * * functionname)
//Returns the geoprocessing function name object with the given name.
GetFunctionNames (IEnumGPName * * functionnames)
// Returns an enumeration of function name objects of all the geoprocessing functions managed by this function factory
IGPFunction的主要方法
get_Name(BSTR * Name)
get_ParameterInfo(IArray * * params)
get_FullName(IName * * Name)
IsLicensed(VARIANT_BOOL * IsLicensed)
Validate(IArray * paramvalues, VARIANT_BOOL updateValues, IGPEnvironmentManager * envMgr, IGPMessages * * message)
Execute(IArray * paramvalues, ITrackCancel * trackcancel, IGPEnvironmentManager * envMgr, IGPMessages * message)
3.关键的操作(主要涉及GPFunction中的方法)
(1)UI参数定义-----------get_ParameterInfo(IArray * * params)
Params是保存每一项自定义的UI参数的动态数组
图中m_ipParameters变量为IArrayPtr类型,直接传递给Params参数
STDMETHOD(get_ParameterInfo)(IArray * * params)
{
if (params == NULL)
return E_POINTER;
IArrayPtr ipArray=m_ipParameters;
*params=ipArray.Detach();
return S_OK;
}
这个方法的作用是根据用户设置的各类参数来设置GP Function Tool 的UI。
如何交互的细节已经被隐藏。用户只需要设定参数类型,自动的得到参数对应的UI。
可直接定义的参数类型如下(具体查看ao帮助IGPDataType Interface)
定义一个double参数
//变量Version------参数类型double
ipGPParameterEdit.CreateInstance(CLSID_GPParameter);
ipGPDataType.CreateInstance(CLSID_GPDoubleType);//参数类型
ipGPParameterEdit->putref_DataType(ipGPDataType);
ipGPParameterEdit->put_Direction(esriGPParameterDirectionInput);//定义为输入或输出
ipGPParameterEdit->put_DisplayName(CComBSTR("Input Version of VCT "));
ipGPParameterEdit->put_Name(CComBSTR("Input Version (Just support 2.0)"));//参数名称
ipGPParameterEdit->put_ParameterType(esriGPParameterTypeRequired); //必须输入参数
m_ipParameters->Add(ipGPParameterEdit);
(2)参数验证--------- Validate()方法
自定义类型参数后,通过Validate方法来提示输入的参数信息是否正确。
1. 增强客户体验
2. 执行较简单的数据校验
3. 反馈一系列的校验信息
如何进行参数验证
可以使用IGPUtilities的InternalValidate方法
m_ipGPUtilities->InternalValidate (m_ipParameters,paramvalues,updateValues,TRUE,envMgr,&ipGPMessages);
(3)执行---------------Execute()方法
最重要的方法之一,
1.根据用户输入得到参数对象,包括Featureclass,Table等
2.结合获取参数类型做普通的AO开发
3.错误信息的友好提示
If (ipFeatureClass==NULL)
{
ipMsg.CreateInstance(CLSID_GPMessage);
ipMsg->put_Type(esriGPMessageTypeError);
ipMsg->put_Description(CComBSTR("Error in Open Featureclass!"));
message->Add(ipMsg);
return E_FAIL;
}
else
{
ipMsg.CreateInstance(CLSID_GPMessage);
ipMsg->put_Type(esriGPMessageTypeInformative);
ipMsg->put_Description(CComBSTR("/n----succeed to Open FeatureClass !---"));
message->Add(ipMsg);
Return S_OK;
}
部署
直接注册DLL。
在ArcToolBox中添加工具到自定义的ArcToolBox目录中。
总结
1.GP工具适用于常用的数据处理工作
2.可以实现多个GP工具构建MoudleBuilder完成较复杂的业务流程。
来自:http://blog.csdn.net/jx1228/archive/2008/04/03/2247898.aspx
- ArcGIS 下的GP function Tool开发
- ArcGIS 下的GP function Tool开发
- ArcGIS 下的GP function Tool开发
- ArcGIS 下的GP function Tool开发
- ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
- delphi 调用arcgis的 gp工具
- ArcGIS Runtime支持的GP工具列表
- ArcGIS Runtime支持的GP工具列表
- ArcGIS Runtime支持的GP工具列表
- arcgis api for flex 开发入门(八)GP服务的使用
- ArcGIS Engine开发中利用GP工具时常出现的错误
- arcgis api for js入门开发系列十六 GP服务三发布前的准备
- ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解
- ArcGIS API for iOS开发教程六 使用GP服务
- ArcGIS for JavaScript 开发GP服务思路解析
- ArcGIS for JavaScript 开发GP服务思路解析
- ArcGIS for JavaScript 开发GP服务思路解析
- arcgis api for js入门开发系列十七 GP服务四GP服务发布
- 在gentoo中安装vmware-tools
- Oracle 死连接的第二种解决方案
- AO中如何判断polyline的类型
- 在web上呈现3D的语言VRML
- DOS“运行” 命令大集合
- ArcGIS 下的GP function Tool开发
- 试帖
- 利用Javascript 重复不断监控控件动作
- asp.net 数据库字符串链接
- jsp 基础学习资料
- [DOS][BAT]批处理文件本身的路径取得方法
- 开始OLE之旅
- Ping程序的源代码
- iexplore应用程序错误