GP工具注意事项有哪些?

已邀请:

koococo

赞同来自:

  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里面得一些坑。

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

谢谢大家,码字不易,希望大家多多支持!
原文链接:https://www.jianshu.com/p/f5da0a790bc0

要回复问题请先登录注册