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); 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; 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); 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; 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; } }