ArcGIS4LocalGovernment.AttributeAssistantEditorExtension.intersectLayerDetailsFunctions C# (CSharp) Метод

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

private intersectLayerDetailsFunctions ( ILayer pLay, List pGeos, AAState strOpt, bool &found, List &strFiles, ESRI &inObject, int intFldIdx, List MatchPattern ) : void
pLay ILayer
pGeos List
strOpt AAState
found bool
strFiles List
inObject ESRI
intFldIdx int
MatchPattern List
Результат void
        private void intersectLayerDetailsFunctions(ILayer pLay, List<IGeometry> pGeos, AAState.intersectOptions strOpt, ref bool found,
                                               ref List<Globals.OptionsToPresent> strFiles, ref ESRI.ArcGIS.Geodatabase.IObject inObject, int intFldIdx, List<string> MatchPattern)
        {
            AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain194") + pLay.Name);

            IRasterLayer pRasLay = null;

            IEnvelope pEnv = null;

            IRelationalOperator pRel = null;
            IRelationalOperator2 pRel2 = null;
            ISpatialFilter pSpatFilt = null;
            IFeatureLayer pFLay = null;
            try
            {

                if (pLay is IRasterLayer)
                {

                    pRasLay = pLay as IRasterLayer;

                    AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain195") + pRasLay.Name);
                    pEnv = pRasLay.AreaOfInterest;

                    pRel = pEnv as IRelationalOperator;
                    pRel2 = pEnv as IRelationalOperator2;
                    foreach (IGeometry pGeo in pGeos)
                    {
                        if (pRel.Crosses(pGeo) || pRel.Touches(pGeo) || pRel.Overlaps(pGeo) || pRel2.ContainsEx(pGeo, esriSpatialRelationExEnum.esriSpatialRelationExClementini))
                        {
                            AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain196") + pRasLay.Name);
                            string pathForLay = Globals.GetPathForALayer(pLay);
                            string fcname = Globals.getClassName(pLay);

                            switch (formatString)
                            {
                                case "P":

                                    if (MatchPattern == null)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pathForLay);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else if (MatchPattern.Count == 0)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pathForLay);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        foreach (string MatPat in MatchPattern)
                                        {
                                            if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                            {

                                                if (strOpt == AAState.intersectOptions.PromptMulti)
                                                {
                                                    if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                    {
                                                        strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                    }
                                                }
                                                else
                                                {
                                                    inObject.set_Value(intFldIdx, pathForLay);
                                                    pRasLay = null;
                                                    pEnv = null;

                                                    pRel = null;
                                                    pRel2 = null;
                                                    found = true;
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                    break;
                                case "N":
                                    if (MatchPattern == null)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pLay.Name);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else if (MatchPattern.Count == 0)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pLay.Name);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        foreach (string MatPat in MatchPattern)
                                        {
                                            if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                            {

                                                if (strOpt == AAState.intersectOptions.PromptMulti)
                                                {
                                                    if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                                    {
                                                        strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                                    }
                                                }
                                                else
                                                {
                                                    inObject.set_Value(intFldIdx, pLay.Name);
                                                    pRasLay = null;
                                                    pEnv = null;

                                                    pRel = null;
                                                    pRel2 = null;
                                                    found = true;
                                                    return;
                                                }
                                            }
                                        }
                                    }

                                    break;
                                case "F":
                                    if (MatchPattern == null)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, fcname);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else if (MatchPattern.Count == 0)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, fcname);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        foreach (string MatPat in MatchPattern)
                                        {
                                            if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || fcname.ToUpper().Contains(MatPat.ToUpper()))
                                            {

                                                if (strOpt == AAState.intersectOptions.PromptMulti)
                                                {
                                                    if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                                    {
                                                        strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                                    }
                                                }
                                                else
                                                {
                                                    inObject.set_Value(intFldIdx, fcname);
                                                    pRasLay = null;
                                                    pEnv = null;

                                                    pRel = null;
                                                    pRel2 = null;
                                                    found = true;
                                                    return;
                                                }
                                            }
                                        }
                                    }

                                    break;
                                default:

                                    if (MatchPattern == null)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pathForLay);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else if (MatchPattern.Count == 0)
                                    {
                                        if (strOpt == AAState.intersectOptions.PromptMulti)
                                        {
                                            if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                            {
                                                strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                            }
                                        }
                                        else
                                        {
                                            inObject.set_Value(intFldIdx, pathForLay);
                                            pRasLay = null;
                                            pEnv = null;

                                            pRel = null;
                                            pRel2 = null;
                                            found = true;
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        foreach (string MatPat in MatchPattern)
                                        {
                                            if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                            {

                                                if (strOpt == AAState.intersectOptions.PromptMulti)
                                                {
                                                    if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                    {
                                                        strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                    }
                                                }
                                                else
                                                {
                                                    inObject.set_Value(intFldIdx, pathForLay);
                                                    pRasLay = null;
                                                    pEnv = null;

                                                    pRel = null;
                                                    pRel2 = null;
                                                    found = true;
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                    break;
                            }
                        }
                    }

                }
                else if (pLay is IFeatureLayer)
                {
                    pFLay = pLay as IFeatureLayer;
                    if (pFLay.FeatureClass == inObject.Class)
                    {
                    }
                    else
                    {
                        AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain195") + pFLay.Name);
                        foreach (IGeometry pGeo in pGeos)
                        {

                            pSpatFilt = new SpatialFilterClass();
                            pSpatFilt.GeometryField = pFLay.FeatureClass.ShapeFieldName;
                            pSpatFilt.Geometry = pGeo as IGeometry;
                            pSpatFilt.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                            if (pFLay.FeatureClass.FeatureCount(pSpatFilt) > 0)
                            {
                                AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain196") + pFLay.Name);
                                string pathForLay = Globals.GetPathForALayer(pLay);
                                string fcname = Globals.getClassName(pLay);
                                switch (formatString)
                                {
                                    case "P":

                                        if (MatchPattern == null)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pathForLay);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else if (MatchPattern.Count == 0)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pathForLay);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            foreach (string MatPat in MatchPattern)
                                            {
                                                if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                                {

                                                    if (strOpt == AAState.intersectOptions.PromptMulti)
                                                    {
                                                        if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                        {
                                                            strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        inObject.set_Value(intFldIdx, pathForLay);
                                                        pRasLay = null;
                                                        pEnv = null;

                                                        pRel = null;
                                                        pRel2 = null;
                                                        found = true;
                                                        return;
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                    case "N":
                                        if (MatchPattern == null)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pLay.Name);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else if (MatchPattern.Count == 0)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pLay.Name);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            foreach (string MatPat in MatchPattern)
                                            {

                                                if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                                {

                                                    if (strOpt == AAState.intersectOptions.PromptMulti)
                                                    {
                                                        if (!strFiles.Contains(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name)))
                                                        {
                                                            strFiles.Add(new Globals.OptionsToPresent(0, pLay.Name, pLay.Name, pLay.Name));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        inObject.set_Value(intFldIdx, pLay.Name);
                                                        pRasLay = null;
                                                        pEnv = null;

                                                        pRel = null;
                                                        pRel2 = null;
                                                        found = true;
                                                        return;
                                                    }
                                                }
                                            }
                                        }

                                        break;
                                    case "F":
                                        if (MatchPattern == null)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, fcname);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else if (MatchPattern.Count == 0)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, fcname);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            foreach (string MatPat in MatchPattern)
                                            {

                                                if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || fcname.ToUpper().Contains(MatPat.ToUpper()))
                                                {

                                                    if (strOpt == AAState.intersectOptions.PromptMulti)
                                                    {
                                                        if (!strFiles.Contains(new Globals.OptionsToPresent(0, fcname, fcname, fcname)))
                                                        {
                                                            strFiles.Add(new Globals.OptionsToPresent(0, fcname, fcname, fcname));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        inObject.set_Value(intFldIdx, fcname);
                                                        pRasLay = null;
                                                        pEnv = null;

                                                        pRel = null;
                                                        pRel2 = null;
                                                        found = true;
                                                        return;
                                                    }
                                                }
                                            }
                                        }

                                        break;
                                    default:

                                        if (MatchPattern == null)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pathForLay);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else if (MatchPattern.Count == 0)
                                        {
                                            if (strOpt == AAState.intersectOptions.PromptMulti)
                                            {
                                                if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                {
                                                    strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                }
                                            }
                                            else
                                            {
                                                inObject.set_Value(intFldIdx, pathForLay);
                                                pRasLay = null;
                                                pEnv = null;

                                                pRel = null;
                                                pRel2 = null;
                                                found = true;
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            foreach (string MatPat in MatchPattern)
                                            {
                                                if (pathForLay.ToUpper().Contains(MatPat.ToUpper()) || pLay.Name.ToUpper().Contains(MatPat.ToUpper()))
                                                {

                                                    if (strOpt == AAState.intersectOptions.PromptMulti)
                                                    {
                                                        if (!strFiles.Contains(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay)))
                                                        {
                                                            strFiles.Add(new Globals.OptionsToPresent(0, pathForLay, pathForLay, pathForLay));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        inObject.set_Value(intFldIdx, pathForLay);
                                                        pRasLay = null;
                                                        pEnv = null;

                                                        pRel = null;
                                                        pRel2 = null;
                                                        found = true;
                                                        return;
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                }
                            }
                            else
                            {
                                AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain197") + pFLay.Name);
                            }
                        }

                    }

                }
                else
                {
                    AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain198"));
                }
            }
            catch (Exception ex)
            {
                AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14a") + ex.Message);
            }
            finally
            {

                pRasLay = null;

                pEnv = null;

                pRel = null;
                pRel2 = null;
                pSpatFilt = null;
                pFLay = null;
            }
        }