GeoProcessor的使用方法

GP对象的定义

private static IGeoProcessor2 GP = new GeoProcessorClass(); // using ESRI.ArcGIS.Geoprocessing;

private static Geoprocessor GP = new Geoprocessor(); // using ESRI.ArcGIS.Geoprocessor;

 

 

//1-定义GeoProcessor对象

Geoprocessor gp = new Geoprocessor();

//2-设置参数
gp.OverwriteOutput = true;
//3-设置工具箱所在的路径
gp.AddToolbox(@"F:\lib_test\AirportsAndGolf.tbx");
//4-设置输入参数
IVariantArray parameters = new VarArrayClass();
parameters.Add(@"F:\lib_test\地下水重金属数据.xls\Sheet1$");
//5-执行工具
gp.Execute("ModelAnalysis", parameters, null);

 

【缓冲区】

Geoprocessor GP = new Geoprocessor();
GP.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new ESRI.ArcGIS.AnalysisTools.Buffer();
bufferTool.in_features = @"E:\**系统\Apps\Data\XZQ\行政区.mdb\SHENGJXZQ";//输入路径

bufferTool.out_feature_class = @"E:\**系统\Apps\Data\XZQ\行政区.mdb\aa";//输出路径

bufferTool.buffer_distance_or_field = "SHDM";//融合字段
GP.Execute(bufferTool, null);//执行工具

【合并】

 

Geoprocessor geoprocessor = new Geoprocessor();
geoprocessor.OverwriteOutput = true;
ESRI.ArcGIS.AnalysisTools.Union union = new ESRI.ArcGIS.AnalysisTools.Union();
IGpValueTableObject gpValueTableObject = new GpValueTableObjectClass();//对两个要素类进行相交运算
gpValueTableObject.SetColumns(2);
object o1 = @"E:\***\Apps\Data\XZQ\ArcCatalogTest.mdb\Test\ss";//输入IFeatureClass 1
object o2 = @"E:\***\Apps\Data\XZQ\ArcCatalogTest.mdb\Test\TestClass";//输入IFeatureClass 2
gpValueTableObject.AddRow(ref o1);
gpValueTableObject.AddRow(ref o2);
union.in_features = gpValueTableObject;
union.out_feature_class = @"E:\***\Apps\Data\XZQ\行政区.mdb\aaa";
geoprocessor.Execute(union, null);

 

IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;

 

string pFullPath = @"E:\***数据库管理系统\Apps\Data\XZQ\ArcCatalogTest.mdb\aa";
if (pFullPath == "") return;
int pIndex = pFullPath.LastIndexOf("\\");
string pFilePath = pFullPath.Substring(0, pIndex); //文件路径
string pFileName = pFullPath.Substring(pIndex + 1); //文件名

 

//实例化ShapefileWorkspaceFactory工作空间,打开Shape文件
pWorkspaceFactory = new ShapefileWorkspaceFactory();
pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
//创建并实例化要素集
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);
pFeatureLayer = new FeatureLayer();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.AddLayer(pFeatureLayer);

【获取运行结果】

   Geoprocessor对象通过Execute方法执行后将结果保存到指定输出路径下,通过也可以通过IGeoProcessorResult接口读取存储在内容中的结果对象,C#代码如下:

     //执行图层求交运算

    GeoProcessorResult pResult = (IGeoProcessorResult)gp.Execute(pIntersect, null);

     IGPUtilities pGPUtil = new GPUtilitiesClass();

            IFeatureClass pFC;
            IQueryFilter pQF;
            pGPUtil.DecodeFeatureLayer(pResult.GetOutput(0),out pFC,out pQF);
            int count = pFC.FeatureCount(null);      //统计Feature对象个数
            IFeatureCursor pCursor = pFC.Insert(true);   //提取FeatureCursor对象
            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
            pFeatureLayer.FeatureClass = pFC;
            m_mapControl.Map.AddLayer(pFeatureLayer);   //加载图层对象

posted @ 2020-01-02 10:30  小丫么小西瓜  阅读(1118)  评论(0编辑  收藏  举报