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