How to use the geoprocessor using ArcObjects
public IGeoProcessorResult ExecuteGeoProcessor(bool addOutputsToMap, string extent, IRaster snapRaster,
string gpToolName, params object[] args)
{
IGeoProcessor gp;
IVariantArray gpParams;
IGeoProcessorResult gpResult;
string warningMessages;
string errorMessages;
// create a new geoprocessor instance
gp = new GeoProcessorClass();
// don't add outputs to TOC
gp.AddOutputsToMap = addOutputsToMap;
// set the extent
gp.SetEnvironmentValue("extent", extent);
// set the snap raster
gp.SetEnvironmentValue("snapRaster", ((IRaster2)snapRaster).RasterDataset.CompleteName);
// create a parameter array
gpParams = new VarArrayClass();
for (int i = 0; i < args.Length; ++i)
{
gpParams.Add(args[i]);
}
// run the geoprocessing tool
gpResult = gp.Execute(gpToolName, gpParams, null);
Application.DoEvents();
warningMessages = gpResult.GetMessages(1);
errorMessages = gpResult.GetMessages(2);
if (errorMessages != "")
{
throw new Exception(errorMessages);
}
return gpResult;
}
ExecuteGeoProcessor(true, "MAXOF", snapRaster,
"Watershed", fdrLayer.Name, outletFCPath, watershedRasterPath, "OutletOID");