<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic DownStream Trace Problem in ArcGIS Network Analyst Questions</title>
    <link>https://community.esri.com/t5/arcgis-network-analyst-questions/downstream-trace-problem/m-p/48297#M464</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;DownStream Trace Problem&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have occured problem on downstream trace on desktop code. if we used below code to trace, then tool is working but some features were not selected. ArcFM tool working fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;private void GetGraphicsDataSet(int X, int Y, string strTraceType, string strPhasesToTraceEnum, string strProtectiveDevices, DataTable dtBarriersTable, bool bDrawComplex)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMxDocument pDoc = pApplication.Document as IMxDocument;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMap pMap = pDoc.FocusMap;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IPoint pPoint = pDoc.ActiveView.ScreenDisplay.DisplayTransformatio n.ToMapPoint(X, Y);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pPoint != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ITopologicalOperator pTopo = pPoint as ITopologicalOperator;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IPolygon pPolygon = pTopo.Buffer(5) as IPolygon;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ISpatialFilter pSFilter = new SpatialFilterClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pSFilter.Geometry = pPolygon as IGeometry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pSFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureLayer pFLayer = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeature pFeature = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;UID pUID = new UIDClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pUID.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IEnumLayer pEnumLayer = pMap.get_Layers(pUID, true);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//while (pFLayer != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// int i = pFLayer.FeatureClass.FeatureClassID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureDataset pFeatureDataset = pFLayer.FeatureClass.FeatureDataset;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;INetworkCollection pNetworkCollection = pFeatureDataset as INetworkCollection;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometricNetwork pGeometricNetwork = pNetworkCollection.get_GeometricNetwork(0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;while (pFLayer != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFLayer.FeatureClass.FeatureCount(pSFilter) &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureCursor pFCursor = pFLayer.Search(pSFilter, false);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFeature = pFCursor.NextFeature();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if (pFLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int FeatureClassID = pFLayer.FeatureClass.FeatureClassID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Draw Complex Boolean&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMNetworkAnalysisExtForFramework pNetworkAnalysisExt = new MMNetworkAnalysisExtForFrameworkClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pNetworkAnalysisExt.DrawComplex = bDrawComplex;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pNetworkAnalysisExt.SelectionSemantics = mmESRIAnalysisOptions.mmESRIAnalysisOnAllFeatures;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Assign Barriers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//if (dtBarriersTable != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// IMMNetworkFeatureID[] pNetworkFeatureID = SetEdgeBarriers(dtBarriersTable);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// pNetworkAnalysisExt.EdgeBarriers = pNetworkFeatureID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Mention Protective Devices&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMElectricTraceSettingsEx pTraceSettings = new MMElectricTraceSettingsClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.RespectESRIBarriers = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Assign Protective Devices&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (strProtectiveDevices.Length &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;string[] strLayerNamesInSDE = strProtectiveDevices.Split('$');&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int[] ProtectiveDeviceIDs = new int[strLayerNamesInSDE.Length - 1];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt; strLayerNamesInSDE.Length - 1; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ProtectiveDeviceIDs&lt;I&gt; = GetFeatureClassIDByWorkspace(strLayerNamesInSDE&lt;I&gt;);&lt;/I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.ProtectiveDeviceClassIDs = ProtectiveDeviceIDs;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.UseFeederManagerCircuitSources = true;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.UseFeederManagerProtectiveDevices = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFeature != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;INetElements pNetElements = pGeometricNetwork.Network as INetElements;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int startEID = pNetElements.GetEID(pFLayer.FeatureClass.FeatureCl assID, pFeature.OID, -1, esriElementType.esriETEdge);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//int test = pNetElements.GetEID(145, 9, -1, esriElementType.esriETEdge);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IEnumNetEID pJunctionEIDs = null, pEdgeEIDs = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMElectricNetworkTracing pTracing = new MMFeederTracerClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (strTraceType)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Upstream":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.TraceUpstream(pGeometricNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Upstream Protective":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.FindUpstreamProtectiveDevices(pGeometricN etwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Downstream":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.TraceDownstream(pGeometricNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Downstream Protective":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.FindDownstreamProtectiveDevices(pGeometri cNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Distribution":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.DistributionCircuitTrace(pGeometricNetwor k, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SelectTraceResults(pMap, pJunctionEIDs, pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDoc.ActiveView.Refresh();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#region Function to know user selected Phase&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;private mmPhasesToTrace GetPhasesToTrace(string strPhasesToTraceEnum)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (strPhasesToTraceEnum)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "0":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_Any;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_A;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "2":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_B;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "3":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_C;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "4":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "5":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "6":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_BC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "7":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_ABC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "8":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastA;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "9":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "10":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "11":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastAB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "12":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastAC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "13":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastBC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "14":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AnySinglePhase;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "15":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AnyTwoPhase;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;default:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_Any;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} .&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 25 Nov 2010 05:56:10 GMT</pubDate>
    <dc:creator>VaibhavTelange</dc:creator>
    <dc:date>2010-11-25T05:56:10Z</dc:date>
    <item>
      <title>DownStream Trace Problem</title>
      <link>https://community.esri.com/t5/arcgis-network-analyst-questions/downstream-trace-problem/m-p/48297#M464</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;DownStream Trace Problem&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have occured problem on downstream trace on desktop code. if we used below code to trace, then tool is working but some features were not selected. ArcFM tool working fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;private void GetGraphicsDataSet(int X, int Y, string strTraceType, string strPhasesToTraceEnum, string strProtectiveDevices, DataTable dtBarriersTable, bool bDrawComplex)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMxDocument pDoc = pApplication.Document as IMxDocument;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMap pMap = pDoc.FocusMap;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IPoint pPoint = pDoc.ActiveView.ScreenDisplay.DisplayTransformatio n.ToMapPoint(X, Y);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pPoint != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ITopologicalOperator pTopo = pPoint as ITopologicalOperator;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IPolygon pPolygon = pTopo.Buffer(5) as IPolygon;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ISpatialFilter pSFilter = new SpatialFilterClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pSFilter.Geometry = pPolygon as IGeometry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pSFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureLayer pFLayer = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeature pFeature = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;UID pUID = new UIDClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pUID.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IEnumLayer pEnumLayer = pMap.get_Layers(pUID, true);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//while (pFLayer != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// int i = pFLayer.FeatureClass.FeatureClassID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureDataset pFeatureDataset = pFLayer.FeatureClass.FeatureDataset;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;INetworkCollection pNetworkCollection = pFeatureDataset as INetworkCollection;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometricNetwork pGeometricNetwork = pNetworkCollection.get_GeometricNetwork(0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;while (pFLayer != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFLayer.FeatureClass.FeatureCount(pSFilter) &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IFeatureCursor pFCursor = pFLayer.Search(pSFilter, false);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFeature = pFCursor.NextFeature();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if (pFLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int FeatureClassID = pFLayer.FeatureClass.FeatureClassID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pFLayer = pEnumLayer.Next() as IFeatureLayer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Draw Complex Boolean&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMNetworkAnalysisExtForFramework pNetworkAnalysisExt = new MMNetworkAnalysisExtForFrameworkClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pNetworkAnalysisExt.DrawComplex = bDrawComplex;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pNetworkAnalysisExt.SelectionSemantics = mmESRIAnalysisOptions.mmESRIAnalysisOnAllFeatures;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Assign Barriers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//if (dtBarriersTable != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// IMMNetworkFeatureID[] pNetworkFeatureID = SetEdgeBarriers(dtBarriersTable);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// pNetworkAnalysisExt.EdgeBarriers = pNetworkFeatureID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Mention Protective Devices&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMElectricTraceSettingsEx pTraceSettings = new MMElectricTraceSettingsClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.RespectESRIBarriers = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Assign Protective Devices&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (strProtectiveDevices.Length &amp;gt; 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;string[] strLayerNamesInSDE = strProtectiveDevices.Split('$');&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int[] ProtectiveDeviceIDs = new int[strLayerNamesInSDE.Length - 1];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt; strLayerNamesInSDE.Length - 1; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ProtectiveDeviceIDs&lt;I&gt; = GetFeatureClassIDByWorkspace(strLayerNamesInSDE&lt;I&gt;);&lt;/I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.ProtectiveDeviceClassIDs = ProtectiveDeviceIDs;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.UseFeederManagerCircuitSources = true;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTraceSettings.UseFeederManagerProtectiveDevices = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (pFeature != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;INetElements pNetElements = pGeometricNetwork.Network as INetElements;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int startEID = pNetElements.GetEID(pFLayer.FeatureClass.FeatureCl assID, pFeature.OID, -1, esriElementType.esriETEdge);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//int test = pNetElements.GetEID(145, 9, -1, esriElementType.esriETEdge);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IEnumNetEID pJunctionEIDs = null, pEdgeEIDs = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IMMElectricNetworkTracing pTracing = new MMFeederTracerClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (strTraceType)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Upstream":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.TraceUpstream(pGeometricNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Upstream Protective":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.FindUpstreamProtectiveDevices(pGeometricN etwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Downstream":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.TraceDownstream(pGeometricNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Downstream Protective":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.FindDownstreamProtectiveDevices(pGeometri cNetwork, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "Distribution":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pTracing.DistributionCircuitTrace(pGeometricNetwor k, pNetworkAnalysisExt, pTraceSettings, startEID, esriElementType.esriETEdge,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;GetPhasesToTrace(strPhasesToTraceEnum), out pJunctionEIDs, out pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SelectTraceResults(pMap, pJunctionEIDs, pEdgeEIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDoc.ActiveView.Refresh();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#region Function to know user selected Phase&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;private mmPhasesToTrace GetPhasesToTrace(string strPhasesToTraceEnum)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (strPhasesToTraceEnum)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "0":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_Any;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_A;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "2":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_B;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "3":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_C;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "4":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "5":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "6":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_BC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "7":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_ABC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "8":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastA;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "9":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "10":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "11":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastAB;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "12":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastAC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "13":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AtLeastBC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "14":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AnySinglePhase;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case "15":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_AnyTwoPhase;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;default:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return mmPhasesToTrace.mmPTT_Any;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} .&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Nov 2010 05:56:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-network-analyst-questions/downstream-trace-problem/m-p/48297#M464</guid>
      <dc:creator>VaibhavTelange</dc:creator>
      <dc:date>2010-11-25T05:56:10Z</dc:date>
    </item>
  </channel>
</rss>

