GP工具最全总结以及注意事项(初学者少走弯路必看)

GP工具最全总结以及注意事项

arcgis engine 二次开发中GP工具的应用占有举足轻重的作用。GP不仅具有非常强大的功能并且其调用简单。深得广大GIS喜爱。前几天做arcgis engine 二次开发项目需要做几个功能用到gp工具,分别有shp转gdb 、转mdb、 矢量数据以及栅格数据裁剪还有shp数据导入sde以及 gdb、mdb数据导入sde。

    直接上代码吧,先贴代码再解释。

裁剪功能:

Geoprocessor GP = new Geoprocessor();

GP.OverwriteOutput = true;

                //进行裁剪运算

                ESRI.ArcGIS.AnalysisTools.Clip SClip = new ESRI.ArcGIS.AnalysisTools.Clip();

                SClip.clip_features = this.clipFile;

                SClip.in_features = layer;

                SClip.out_feature_class = this.m_outputFile;

                SClip.cluster_tolerance = "#";

                GP.Execute(SClip, null);

shp转gdb:

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();

                IWorkspaceName workspaceName = workspaceFactory.Create(System.IO.Path.GetDirectoryName(_str2), System.IO.Path.GetFileName(_str2), null, 0);

                IName name = (IName)workspaceName;

                IWorkspace fGDB_Wor = (IWorkspace)name.Open();

                Geoprocessor GP = new Geoprocessor();

                ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase tool = new ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase();

                tool.Input_Features = _str;

                tool.Output_Geodatabase = _str2;

                GP.Execute(tool, null);

shp/gdb/mdb导入sde:

Geoprocessor GP = new Geoprocessor();

      ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase tool = new ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase();

        tool.Input_Features = pathname;

        tool.Output_Geodatabase =Application.StartupPath + "\\intostore.sde";

        IGeoProcessorResult result = (IGeoProcessorResult)GP.Execute(tool, null);

重点来啦,总结:
GP工具其实难点在input和output的路径,GP工具对路径的要求非常严格。再进行GP工具调用实现功能的时候,它会首先会对数据进行检查。那咱们接下来就具体讲讲GP工具输入路径与输出路径的格式

首先GP工具最好是绝对路径,比如in_Feature可以featurelayer但是不是很稳定有时候会转换失败。最好选择绝对路径。值得注意的是如果你想将gdb中的一个要素导入sde地理数据库中,那么这两个路径该如何写呢?这个问题应该是gp工具中第二难得。

写法如下:

input:

output:

第二个难点是:

GP工具批量导入地理数据库,AE如何实现?

有的同学说可以for循环调用GP工具,其实有坑的。因为for循环每次都要打开output地理数据库,造成内存泄漏。所以这里咱们采用得是GP工具直接封装好的批量入库方法。但是input路径是非常有讲究得。我研究了好长时间才搞出来,在这里也和大家分享下,写法如下:

path;path;path;

再具体写,咱们这里可以将入库得数据推到一个数组里中间拿;分割开,然后放到input——feature里面即可。

下篇文章咱们讲sde里面得一些坑。

我深刻明白,一个人得力量是有限的。相互分享,大家会收益翻倍,何乐而不为?

谢谢大家,码字不易,希望大家多多支持
近日朋友用GP工具又遇到两个问题,在这里给大家总结一下:

1、GP工具裁剪、融合等。只要是需要两个图层间进行操作的。请注意啦,这时候就需要保持两个图层间数据一致性,最具有代表性的就是两个图层的坐标系要一致,这点最容易被忽略。

2、GP工具使用的时候,inputfeature传入的图层或者shp文件路径不能带·。比如:SDE·xxxx.shp如果是这样的会造成报提示:com组件错误,很费解,这个问题我们排查了半天,甚至把环境重装了,都没解决,后来无意间发现了。

发布了14 篇原创文章 · 获赞 15 · 访问量 337

猜你喜欢

转载自blog.csdn.net/weixin_42970847/article/details/102971224