ArcObjects Library Reference

Display Network Adjacency in MessageBox Snippet

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


Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.Geodatabase
  • System
  • System.Windows.Forms