ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.Topology Namespace / FeatureInfo Class / FeatureClassName Property
Example

In This Topic
    FeatureClassName Property
    In This Topic
    The name of the feature class to which the parent feature belongs.
    Syntax
    Public ReadOnly Property FeatureClassName As String
    public string FeatureClassName {get;}
    Example
    Explore topology graph
    {
      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 ...
          }
        }
      }
    }
    Find closest element from a topology graph
    {
      static void FindClosestElement()
      {
        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) =>
          {
            MapPoint queryPointViaCampsites12 = null;
    
            using (Feature campsites12 = GetFeature(geodatabase, "Campsites", 12))
            {
              queryPointViaCampsites12 = campsites12.GetShape() as MapPoint;
            }
    
            double searchRadius = 1.0;
    
            TopologyElement topologyElementViaCampsites12 = topologyGraph.FindClosestElement<TopologyElement>(queryPointViaCampsites12, searchRadius);
            IReadOnlyList<FeatureInfo> parentFeatures = topologyElementViaCampsites12.GetParentFeatures();
    
            Console.WriteLine("The parent features that spawn 'topologyElementViaCampsites12' are:");
            foreach (FeatureInfo parentFeature in parentFeatures)
            {
              Console.WriteLine($"\t{parentFeature.FeatureClassName}; OID: {parentFeature.ObjectID}");
            }
    
            TopologyNode topologyNodeViaCampsites12 = topologyGraph.FindClosestElement<TopologyNode>(queryPointViaCampsites12, searchRadius);
    
            if (topologyNodeViaCampsites12 != null)
            {
              // There exists a TopologyNode nearest to the query point within searchRadius units.
            }
    
            TopologyEdge topologyEdgeViaCampsites12 = topologyGraph.FindClosestElement<TopologyEdge>(queryPointViaCampsites12, searchRadius);
    
            if (topologyEdgeViaCampsites12 != null)
            {
              // There exists a TopologyEdge nearest to the query point within searchRadius units.
            }
          });
        }
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also