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组件错误,很费解,这个问题我们排查了半天,甚至把环境重装了,都没解决,后来无意间发现了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ArcGIS如何将图层转换为WGS84下的高斯克吕格投影? ArcGIS中的高斯克吕格投影是没有WGS1984这个...
    onepedalo阅读 4,585评论 0 1
  • ArcGIS是由Esri公司出品的一系列地理信息系统(GIS)软件的总称。是一个综合、集成的、可伸缩的产品系统,以...
    朱古力的简书阅读 2,372评论 0 0
  • 说句题外话,前段时期生了大病,险些就与世长辞,修养了3个多月终于基本恢复。这里希望各位程序猿工作之余还是要保存身体...
    时空之弄潮儿阅读 4,338评论 0 50
  • 曾经你是我的全世界,最终还是路过了你 文/郭爽sky One 一直习惯了等待 不愿意去面对那么伤痛 也许我应该站在...
    郭沐辰阅读 1,683评论 14 26
  • 世界上的人有很多,能够永远陪伴我的,只有我自己。只有成为了了更好的自己,才能遇见那个更好的他。在这过程中我可能会一...
    柏舟兮阅读 248评论 0 1