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

In This Topic
    FilterEnvelope Property
    In This Topic
    Gets and sets an envelope filter. Default value is null meaning that the envelope searched is the TIN's data area, See TinDataset.GetDataArea.
    Syntax
    Public Property FilterEnvelope As Envelope
    public Envelope FilterEnvelope {get; set;}
    Remarks
    Use this to specify a specific area to search rather than the TIN's data area. If specified, the envelope will be projected into the spatial reference of the TIN dataset.
    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)
          {
    
          }
        }
      }
    }
    Search for TIN Nodes, Edges, Triangles
    {
      // Note: Needs QueuedTask to run
      {
        // 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;
            //Use the node
          }
        }
    
        // 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;
            //use the node
          }
        }
    
        // search for super nodes only
        var supernodeFilter = new ArcGIS.Core.Data.Analyst3D.TinNodeFilter();
        supernodeFilter.FilterEnvelope = tinLayer.GetTinDataset().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;
            //Use the node
          }
        }
    
        // 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;
            //Use the edge
          }
        }
    
        // 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;
            //Use the edge
          }
        }
    
        // 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;
            //use the triangle
          }
        }
      }
    }
    Requirements

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

    ArcGIS Pro version: 3.2 or higher.
    See Also