ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Core.Data.Analyst3D Namespace / TinFilter Class / DataElementsOnly Property
Example

In This Topic
    DataElementsOnly Property
    In This Topic
    Gets and sets whether the filter should return elements classified as "inside" only. Default value is false.
    Syntax
    public bool DataElementsOnly {get; set;}
    Public Property DataElementsOnly As Boolean
    Remarks
    TIN elements can exist "inside" or "outside" the TIN's data area. When TINs are initially built the only elements that are "outside" are the four super nodes and their incident edges and triangles. If clip or erase polygons are added to a TIN, they further modify what is considered to be "inside" or "outside".

    Use this property in conjunction with the FilterType and the FilterEnvelope properties to determine the elements retrieved.

    Example
    Seach for TIN Nodes, Edges, Triangles
    // search all "inside" nodes
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(null))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search "inside" nodes with an extent
    ArcGIS.Core.Data.Analyst3D.TinNodeFilter nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    nodeFilter.FilterEnvelope = envelope;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search for super nodes only
    var supernodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    supernodeFilter.FilterEnvelope = tinDataset.GetSuperNodeExtent();
    supernodeFilter.DataElementsOnly = false;
    supernodeFilter.SuperNode = true;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search all edges within an extent
    //    this could include outside or edges attached to super nodes depending upon the extent
    ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilterAll = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilterAll.FilterEnvelope = envelope;
    edgeFilterAll.DataElementsOnly = false;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilterAll))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
        }
      }
    }
    
    
    // search for hard edges in the TIN
    var edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilter.FilterByEdgeType = true;
    edgeFilter.EdgeType = ArcGIS.Core.Data.Analyst3D.TinEdgeType.HardEdge;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilter))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search for "inside" triangles in an extent
    ArcGIS.Core.Data.Analyst3D.TinTriangleFilter triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
    triangleFilter.FilterEnvelope = envelope;
    triangleFilter.DataElementsOnly = true;
    using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleCursor = tinLayer.SearchTriangles(triangleFilter))
    {
      while (triangleCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangle = triangleCursor.Current)
        {
        }
      }
    }
    Seach for TIN Nodes, Edges, Triangles
    // search all "inside" nodes
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(null))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search "inside" nodes with an extent
    ArcGIS.Core.Data.Analyst3D.TinNodeFilter nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    nodeFilter.FilterEnvelope = envelope;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search for super nodes only
    var supernodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    supernodeFilter.FilterEnvelope = tinDataset.GetSuperNodeExtent();
    supernodeFilter.DataElementsOnly = false;
    supernodeFilter.SuperNode = true;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search all edges within an extent
    //    this could include outside or edges attached to super nodes depending upon the extent
    ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilterAll = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilterAll.FilterEnvelope = envelope;
    edgeFilterAll.DataElementsOnly = false;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilterAll))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
        }
      }
    }
    
    
    // search for hard edges in the TIN
    var edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilter.FilterByEdgeType = true;
    edgeFilter.EdgeType = ArcGIS.Core.Data.Analyst3D.TinEdgeType.HardEdge;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilter))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search for "inside" triangles in an extent
    ArcGIS.Core.Data.Analyst3D.TinTriangleFilter triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
    triangleFilter.FilterEnvelope = envelope;
    triangleFilter.DataElementsOnly = true;
    using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleCursor = tinLayer.SearchTriangles(triangleFilter))
    {
      while (triangleCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangle = triangleCursor.Current)
        {
        }
      }
    }
    Seach for TIN Nodes, Edges, Triangles
    // search all "inside" nodes
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(null))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search "inside" nodes with an extent
    ArcGIS.Core.Data.Analyst3D.TinNodeFilter nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    nodeFilter.FilterEnvelope = envelope;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    // search for super nodes only
    var supernodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
    supernodeFilter.FilterEnvelope = tinDataset.GetSuperNodeExtent();
    supernodeFilter.DataElementsOnly = false;
    supernodeFilter.SuperNode = true;
    using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursor = tinLayer.SearchNodes(nodeFilter))
    {
      while (nodeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinNode node = nodeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search all edges within an extent
    //    this could include outside or edges attached to super nodes depending upon the extent
    ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilterAll = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilterAll.FilterEnvelope = envelope;
    edgeFilterAll.DataElementsOnly = false;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilterAll))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
        }
      }
    }
    
    
    // search for hard edges in the TIN
    var edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
    edgeFilter.FilterByEdgeType = true;
    edgeFilter.EdgeType = ArcGIS.Core.Data.Analyst3D.TinEdgeType.HardEdge;
    using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinLayer.SearchEdges(edgeFilter))
    {
      while (edgeCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinEdge edge = edgeCursor.Current)
        {
    
        }
      }
    }
    
    
    // search for "inside" triangles in an extent
    ArcGIS.Core.Data.Analyst3D.TinTriangleFilter triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
    triangleFilter.FilterEnvelope = envelope;
    triangleFilter.DataElementsOnly = true;
    using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleCursor = tinLayer.SearchTriangles(triangleFilter))
    {
      while (triangleCursor.MoveNext())
      {
        using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangle = triangleCursor.Current)
        {
        }
      }
    }
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.2 or higher.
    See Also