private string IntersectOutput(IRasterLayer rasterLayer, IDataset ipDataset, IFeatureWorkspace workspace, List<IGeometry> geomList)
{
IGeoProcessor2 gp = new GeoProcessorClass();
gp.AddOutputsToMap = false;
// Run RasterToPolygon
string inRaster = rasterLayer.FilePath;
string outRasterToPolyFcName = ipDataset.BrowseName + "_rasterToPoly";
string outRasterToPolyPath = ipDataset.Workspace.PathName + "\\" + outRasterToPolyFcName;
string field = "VALUE";
IVariantArray rasterToPolyParams = new VarArrayClass();
rasterToPolyParams.Add(inRaster);
rasterToPolyParams.Add(outRasterToPolyPath);
rasterToPolyParams.Add("NO_SIMPLIFY");
rasterToPolyParams.Add(field);
try
{
object oResult = gp.Execute("RasterToPolygon_conversion", rasterToPolyParams, null);
IGeoProcessorResult ipResult = (IGeoProcessorResult)oResult;
if (geomList.Count == 0)
return outRasterToPolyFcName;
if (ipResult.Status == esriJobStatus.esriJobSucceeded)
{
string outFcName = ipDataset.BrowseName + "_intersectRaster";
string outPath = ipDataset.Workspace.PathName + "\\" + outFcName;
// Add a mask to buffer the output to selected distance
string fcPath = SetGPMask(workspace, geomList, gp, "intersectMask");
string pathParam = outRasterToPolyPath + ";" + fcPath;
IVariantArray parameters = new VarArrayClass();
parameters.Add(pathParam);
parameters.Add(outPath);
object oResult2 = gp.Execute("Intersect_analysis", parameters, null);
IGeoProcessorResult ipResult2 = (IGeoProcessorResult)oResult2;
return outFcName;
}
else
{
return null;
}
}
catch (Exception ex)
{
return null;
}
}