ArcMapAddinVisibility.ViewModels.RLOSViewModel.IntersectOutput C# (CSharp) Метод

IntersectOutput() приватный Метод

Run RasterToPoly tool to convert input raster to poly's. Then run Intersect if input geomList has features
private IntersectOutput ( IRasterLayer rasterLayer, IDataset ipDataset, IFeatureWorkspace workspace, List geomList ) : string
rasterLayer IRasterLayer
ipDataset IDataset
workspace IFeatureWorkspace
geomList List
Результат string
        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;
            }
        }