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

In This Topic
    ObjectID Property (FeatureInfo)
    In This Topic
    The object ID of the parent feature.
    Syntax
    Public ReadOnly Property ObjectID As Long
    public long ObjectID {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