This document is archived and information here might be outdated.  Recommended version.


Display Network Adjacency in MessageBox Snippet (ArcObjects .NET 10.4 SDK)
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