美文网首页
GP工具最全总结以及注意事项

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

作者: 一位热爱文学的程序员 | 来源:发表于2019-11-07 22:27 被阅读0次

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

    相关文章

      网友评论

          本文标题:GP工具最全总结以及注意事项

          本文链接:https://www.haomeiwen.com/subject/uvjbbctx.html