执行GP工具

/// <summary>
/// 执行GP工具
/// </summary>
/// <param name="geoprocessor">GP对象</param>
/// <param name="process">使用工具</param>
/// <returns>成功返回true/失败返回false</returns>
public static bool RunTool(Geoprocessor geoprocessor, IGPProcess process)
{
geoprocessor.OverwriteOutput = true;//存在覆盖
try
{
IGeoProcessorResult result =
(IGeoProcessorResult)geoprocessor.Execute(process, null);//取执行结果
if (result != null)
{
if (result.Status == esriJobStatus.esriJobSucceeded) //执行成功
{
return true;
}
}
if (geoprocessor.MessageCount > 0) //失败显示错误原因
{
for (int i = 0; i < geoprocessor.MessageCount; i++)
{
MessageBox.Show(geoprocessor.GetMessage(i));
}
return false;
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
return false;
}
/// <summary>
/// 执行GP工具
/// </summary>
/// <param name="geoprocessor">GP对象</param>
/// <param name="process">使用工具</param>
/// <param name="TC"></param>
/// <returns>成功返回true/失败返回false</returns>
public static bool RunTool(Geoprocessor geoprocessor, IGPProcess process, ITrackCancel
TC)
{
geoprocessor.OverwriteOutput = true;//存在覆盖
try
{
IGeoProcessorResult result =
(IGeoProcessorResult)geoprocessor.Execute(process, null);//取执行结果
if (result != null)
{
if (result.Status == esriJobStatus.esriJobSucceeded) //执行成功
{
return true;
}
} if (geoprocessor.MessageCount > 0) //失败显示错误原因
{
for (int i = 0; i < geoprocessor.MessageCount; i++)
{
MessageBox.Show(geoprocessor.GetMessage(i));
}
return false;
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
return false;
}

public static bool SplitLineAtVertics(string inFeaturesPath, string outFeaturePath)
{
Geoprocessor GP = new Geoprocessor();
ESRI.ArcGIS.DataManagementTools.SplitLine splitline = new
ESRI.ArcGIS.DataManagementTools.SplitLine();
splitline.in_features = inFeaturesPath;
splitline.out_feature_class = outFeaturePath;
return RunTool(GP, splitline, null);
}

public static bool Dissolve(string inFeaturesPath, string outFeaturePath, string dissolveFieldName)
{
Geoprocessor GP = new Geoprocessor();
ESRI.ArcGIS.DataManagementTools.Dissolve dissolve = new
ESRI.ArcGIS.DataManagementTools.Dissolve();
dissolve.in_features = inFeaturesPath;
dissolve.out_feature_class = outFeaturePath;
dissolve.dissolve_field = dissolveFieldName;
dissolve.multi_part = "false";
return RunTool(GP, dissolve, null);
}

posted @ 2022-03-28 11:57  南山种豆8  阅读(74)  评论(0)    收藏  举报