Loop through a network dataset and display adjacencies for each junction in a message box.
[C#]
///<summary>Loop through a network dataset and display adjacencies for each junction in a message box.</summary> /// ///<param name="networkDataset">An INetworkDataset interface.</param> /// ///<remarks></remarks> public void DisplayNetworkAdjacencyInMessageBox(ESRI.ArcGIS.Geodatabase.INetworkDataset networkDataset) { if (networkDataset == null) { return; } ESRI.ArcGIS.Geodatabase.INetworkQuery networkQuery = ((ESRI.ArcGIS.Geodatabase.INetworkQuery)(networkDataset)); ESRI.ArcGIS.Geodatabase.INetworkElement edgeNetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETEdge); ESRI.ArcGIS.Geodatabase.INetworkEdge networkEdge = ((ESRI.ArcGIS.Geodatabase.INetworkEdge)(edgeNetworkElement)); // Explicit Cast // Get the from network junction ESRI.ArcGIS.Geodatabase.INetworkElement fromJunctionNetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction); ESRI.ArcGIS.Geodatabase.INetworkJunction fromNetworkJunction = ((ESRI.ArcGIS.Geodatabase.INetworkJunction)(fromJunctionNetworkElement)); // Explicit Cast // Get the to network junction ESRI.ArcGIS.Geodatabase.INetworkElement toJunctionNetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction); ESRI.ArcGIS.Geodatabase.INetworkJunction toNetworkJunction = ((ESRI.ArcGIS.Geodatabase.INetworkJunction)(toJunctionNetworkElement)); // Explicit Cast ESRI.ArcGIS.Geodatabase.IEnumNetworkElement enumNetworkElement = networkQuery.get_Elements(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction); // Explicit Cast ESRI.ArcGIS.Geodatabase.INetworkElement networkElement = enumNetworkElement.Next(); ESRI.ArcGIS.Geodatabase.INetworkJunction networkJunction = ((ESRI.ArcGIS.Geodatabase.INetworkJunction)(networkElement)); // Explicit Cast while (!(networkElement == null)) { System.String messageString = "Junction: " + networkJunction.EID + " is adjacent to: " + networkJunction.EdgeCount + " junctions." + System.Environment.NewLine; for (System.Int32 i = 0; i <= networkJunction.EdgeCount - 1; i++) { networkJunction.QueryEdge(i, true, networkEdge); networkEdge.QueryJunctions(fromNetworkJunction, toNetworkJunction); messageString = messageString + "Adjacent Junction: " + toNetworkJunction.EID + System.Environment.NewLine; } System.Windows.Forms.MessageBox.Show(messageString, "Network Adjacency", System.Windows.Forms.MessageBoxButtons.OK); networkElement = enumNetworkElement.Next(); } }
[Visual Basic .NET]
'''<summary>Loop through a network dataset and display adjacencies for each junction in a message box.</summary> ''' '''<param name="networkDataset">An INetworkDataset interface.</param> ''' '''<remarks></remarks> Public Sub DisplayNetworkAdjacencyInMessageBox(ByVal networkDataset As ESRI.ArcGIS.Geodatabase.INetworkDataset) If networkDataset Is Nothing Then Return End If Dim networkQuery As ESRI.ArcGIS.Geodatabase.INetworkQuery = (CType(networkDataset, ESRI.ArcGIS.Geodatabase.INetworkQuery)) ' Explict Cast Dim edgeNetworkElement As ESRI.ArcGIS.Geodatabase.INetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETEdge) Dim networkEdge As ESRI.ArcGIS.Geodatabase.INetworkEdge = (CType(edgeNetworkElement, ESRI.ArcGIS.Geodatabase.INetworkEdge)) ' Explicit Cast ' Get the from network junction Dim fromJunctionNetworkElement As ESRI.ArcGIS.Geodatabase.INetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction) Dim fromNetworkJunction As ESRI.ArcGIS.Geodatabase.INetworkJunction = (CType(fromJunctionNetworkElement, ESRI.ArcGIS.Geodatabase.INetworkJunction)) ' Explicit Cast ' Get the to network junction Dim toJunctionNetworkElement As ESRI.ArcGIS.Geodatabase.INetworkElement = networkQuery.CreateNetworkElement(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction) Dim toNetworkJunction As ESRI.ArcGIS.Geodatabase.INetworkJunction = (CType(toJunctionNetworkElement, ESRI.ArcGIS.Geodatabase.INetworkJunction)) ' Explicit Cast Dim enumNetworkElement As ESRI.ArcGIS.Geodatabase.IEnumNetworkElement = networkQuery.Elements(ESRI.ArcGIS.Geodatabase.esriNetworkElementType.esriNETJunction) ' Explicit Cast Dim networkElement As ESRI.ArcGIS.Geodatabase.INetworkElement = enumNetworkElement.Next() Dim networkJunction As ESRI.ArcGIS.Geodatabase.INetworkJunction = (CType(networkElement, ESRI.ArcGIS.Geodatabase.INetworkJunction)) ' Explicit Cast Dim i As System.Int32 Do Until networkElement Is Nothing Dim messageString As String messageString = "Junction: " + networkJunction.EID.ToString + " is adjacent to: " + networkJunction.EdgeCount.ToString + " junctions." + System.Environment.NewLine For i = 0 To networkJunction.EdgeCount - 1 'For each connected edge... networkJunction.QueryEdge(i, True, networkEdge) 'Get that connected edge networkEdge.QueryJunctions(fromNetworkJunction, toNetworkJunction) 'Get To junction of current edge messageString = messageString + "Adjacent Junction: " + toNetworkJunction.EID.ToString + System.Environment.NewLine 'List the adjacency Next i System.Windows.Forms.MessageBox.Show(messageString, "Network Adjacency", System.Windows.Forms.MessageBoxButtons.OK) networkElement = enumNetworkElement.Next Loop End Sub