

Public NotInheritable Class TopologyNode Inherits TopologyElement Implements System.IDisposable, System.IEquatable(Of TopologyElement), System.IEquatable(Of TopologyNode)
public sealed class TopologyNode : TopologyElement, System.IDisposable, System.IEquatable<TopologyElement>, System.IEquatable<TopologyNode>
// Builds the map topology graph for the active map view and displays the number of topology nodes and edges. await QueuedTask.Run(() => { //Build the map topology graph MapView.Active.BuildMapTopologyGraph<TopologyDefinition>(topologyGraph => { //Getting the nodes and edges present in the graph var topologyGraphNodes = topologyGraph.GetNodes(); var topologyGraphEdges = topologyGraph.GetEdges(); foreach (var node in topologyGraphNodes) { // do something with the node } foreach (var edge in topologyGraphEdges) { // do something with the edge } MessageBox.Show($"Number of topo graph nodes are: {topologyGraphNodes.Count}.\n Number of topo graph edges are {topologyGraphEdges.Count}.", "Map Topology Info"); }); });
{
static void ExploreTopologyGraph()
{
using (Geodatabase geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(@"C:\TestData\GrandTeton.gdb"))))
using (ArcGIS.Core.Data.Topology.Topology topology = geodatabase.OpenDataset<ArcGIS.Core.Data.Topology.Topology>("Backcountry_Topology"))
{
// Build a topology graph using the extent of the topology dataset.
topology.BuildGraph(topology.GetExtent(), (topologyGraph) =>
{
using (Feature campsites12 = GetFeature(geodatabase, "Campsites", 12))
{
IReadOnlyList<TopologyNode> topologyNodesViaCampsites12 = topologyGraph.GetNodes(campsites12);
TopologyNode topologyNodeViaCampsites12 = topologyNodesViaCampsites12[0];
IReadOnlyList<TopologyEdge> allEdgesConnectedToNodeViaCampsites12 = topologyNodeViaCampsites12.GetEdges();
IReadOnlyList<TopologyEdge> allEdgesConnectedToNodeViaCampsites12CounterClockwise = topologyNodeViaCampsites12.GetEdges(false);
foreach (TopologyEdge edgeConnectedToNodeViaCampsites12 in allEdgesConnectedToNodeViaCampsites12)
{
TopologyNode fromNode = edgeConnectedToNodeViaCampsites12.GetFromNode();
TopologyNode toNode = edgeConnectedToNodeViaCampsites12.GetToNode();
bool fromNodeIsTheSameAsTopologyNodeViaCampsites12 = (fromNode == topologyNodeViaCampsites12);
bool toNodeIsTheSameAsTopologyNodeViaCampsites12 = (toNode == topologyNodeViaCampsites12);
IReadOnlyList<FeatureInfo> leftParentFeaturesBoundedByEdge =
edgeConnectedToNodeViaCampsites12.GetLeftParentFeatures();
foreach (FeatureInfo featureInfo in leftParentFeaturesBoundedByEdge)
{
EnsureShapeIsNotEmpty(featureInfo);
}
IReadOnlyList<FeatureInfo> leftParentFeaturesNotBoundedByEdge =
edgeConnectedToNodeViaCampsites12.GetLeftParentFeatures(false);
foreach (FeatureInfo featureInfo in leftParentFeaturesNotBoundedByEdge)
{
EnsureShapeIsNotEmpty(featureInfo);
}
IReadOnlyList<FeatureInfo> rightParentFeaturesBoundedByEdge =
edgeConnectedToNodeViaCampsites12.GetRightParentFeatures();
foreach (FeatureInfo featureInfo in rightParentFeaturesBoundedByEdge)
{
EnsureShapeIsNotEmpty(featureInfo);
}
IReadOnlyList<FeatureInfo> rightParentFeaturesNotBoundedByEdge =
edgeConnectedToNodeViaCampsites12.GetRightParentFeatures(false);
foreach (FeatureInfo featureInfo in rightParentFeaturesNotBoundedByEdge)
{
EnsureShapeIsNotEmpty(featureInfo);
}
}
}
});
}
static void EnsureShapeIsNotEmpty(FeatureInfo featureInfo)
{
using (Feature feature = featureInfo.GetFeature())
{
// Process feature ...
}
}
}
}
System.Object
ArcGIS.Core.CoreObjectsBase
ArcGIS.Core.Data.Topology.TopologyElement
ArcGIS.Core.Data.Topology.TopologyNode
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)