ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.Analyst3D Namespace / TinFilter Class / FilterType Property
Example

In This Topic
    FilterType Property (TinFilter)
    In This Topic
    Gets and sets the filter type. Default value is TinFilterType.All.
    Syntax
    Public Property FilterType As TinFilterType
    public TinFilterType FilterType {get; set;}
    Remarks
    Use this property in conjunction with the DataElementsOnly and FilterEnvelope properties to determine the elements retrieved.

    Here is a brief explanation of the possible combinations between FilterType and DataElementsOnly.

    FilterType = All and DataElementsOnly = false; find all elements in the extent. If your extent is the super node extent (see TinDataset.GetSuperNodeExtent) or includes part of the super node extent, then super nodes and the incident edges and triangles will be retrieved.

    FilterType = All and DataElementsOnly = true; find all elements in the extent that are classified as "inside". If your extent is the super node extent (see TinDataset.GetSuperNodeExtent) or includes part of the super node extent, then super nodes and the incident edges and triangles will not be retrieved as they are not classified as "inside".

    FilterType = InsideTin and DataElementsOnly = false; find all elements inside the TIN not associated with super nodes that are in the extent.

    FilterType = InsideTin and DataElementsOnly = true; find all elements inside the TIN not associated with super nodes that are in the extent and classified as "inside"

    FilterType = InsideDataArea; find all elements inside the TIN's data area that are in the extent. Elements that are in the TIN's data area are by definition classified as "inside" so the DataElementsOnly property is unnecessary.

    Example
    Search for TIN Nodes
    {
      // search all nodes that intersect the data extent
      using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursorsearch = tinDataset.SearchNodes(null))
      {
        while (nodeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinNode nodeCurrent = nodeCursor.Current)
          {
            // do something with the node
          }
        }
      }
    
      // search within an extent
      ArcGIS.Core.Data.Analyst3D.TinNodeFilter nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
      nodeFilter.FilterEnvelope = envelope; //or use any other appropriate envelope
      using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursorSearch = tinDataset.SearchNodes(nodeFilter))
      {
        while (nodeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinNode nodeCurrent = nodeCursor.Current)
          {
            // do something with the node
          }
        }
      }
    
      // search all "inside" nodes
      nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
      nodeFilter.FilterType = ArcGIS.Core.Data.Analyst3D.TinFilterType.InsideDataArea;
      using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursorSearch = tinDataset.SearchNodes(nodeFilter))
      {
        while (nodeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinNode nodeCurrent = nodeCursor.Current)
          {
            // do something with the node
          }
        }
      }
    
      // search for super nodes only
      nodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
      nodeFilter.FilterEnvelope = tinDataset.GetSuperNodeExtent();
      nodeFilter.SuperNode = true;
      using (ArcGIS.Core.Data.Analyst3D.TinNodeCursor nodeCursorSearch = tinDataset.SearchNodes(nodeFilter))
      {
        while (nodeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinNode nodeCurrent = nodeCursor.Current)
          {
            // do something with the node
          }
        }
      }
    }
    Search for TIN Edges
    {
      // search all single edges that intersect the data extent
      using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(null))
      {
        while (edgeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
          {
            // do something with the edge
          }
        }
      }
    
      // search within an extent
      ArcGIS.Core.Data.Analyst3D.TinEdgeFilter edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
      edgeFilter.FilterEnvelope = envelope;
      using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(edgeFilter))
      {
        while (edgeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
          {
            // do something with the edge
          }
        }
      }
    
      // search all "inside" edges
      edgeFilter = new ArcGIS.Core.Data.Analyst3D.TinEdgeFilter();
      edgeFilter.FilterType = ArcGIS.Core.Data.Analyst3D.TinFilterType.InsideDataArea;
      using (ArcGIS.Core.Data.Analyst3D.TinEdgeCursor edgeCursor = tinDataset.SearchEdges(edgeFilter))
      {
        while (edgeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
          {
            // do something with the edge
          }
        }
      }
    
      // search for hard edges
      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 = tinDataset.SearchEdges(edgeFilter))
      {
        while (edgeCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinEdge edgeCurrent = edgeCursor.Current)
          {
            // do something with the edge
          }
        }
      }
    }
    Search for TIN Triangles
    {
      // search all triangles that intersect the data extent
      using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleSearchCursor = tinDataset.SearchTriangles(null))
      {
        while (triangleCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangleCurrent = triangleCursor.Current)
          {
    
          }
        }
      }
    
      // search within an extent
      ArcGIS.Core.Data.Analyst3D.TinTriangleFilter triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
      triangleFilter.FilterEnvelope = envelope;
      using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleSearchCursor = tinDataset.SearchTriangles(triangleFilter))
      {
        while (triangleCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangleCurrent = triangleCursor.Current)
          {
    
          }
        }
      }
    
      // search all "inside" triangles
      triangleFilter = new ArcGIS.Core.Data.Analyst3D.TinTriangleFilter();
      triangleFilter.FilterType = ArcGIS.Core.Data.Analyst3D.TinFilterType.InsideDataArea;
      using (ArcGIS.Core.Data.Analyst3D.TinTriangleCursor triangleSearchCursor = tinDataset.SearchTriangles(triangleFilter))
      {
        while (triangleCursor.MoveNext())
        {
          using (ArcGIS.Core.Data.Analyst3D.TinTriangle triangleCurrent = triangleCursor.Current)
          {
    
          }
        }
      }
    }
    Requirements

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

    ArcGIS Pro version: 3.2 or higher.
    See Also