如何使用vtkThreshold(或更多适当的)来获取坐标为阈值的点的id

时间:2014-04-14 21:18:06

标签: python c++ grid visualization vtk

我想知道如何获得位置为阈值的点的ID列表。例如,我需要一个x坐标小于1的点列表。

  idlist = []
  ncells = UnstructuredGrid.GetNumberOfCells()
  for idx in xrange(ncells):
        p = UnstructuredGrid.GetPoint(idx)
        #Check if x less them 1
        if p[0] < 1:
            idlist.append(idx)

我正在寻找一种更有效,更智能的方式。可能有一种使用vtkUnstructuredGridFilter或vtkThresholdPoints的方法。

1 个答案:

答案 0 :(得分:0)

假设没有更简单的方法来迭代这个UnstructuredGrid,你可以编写一个生成器来使这种函数更加优雅。

def generate_grid():
  for id in xrange(UnstructuredGrid.GetNumberOfCells())
    yield UnstructuredGrid.GetPoint(idx)

然后你可以在列表理解中使用它,例如

idlist = [point[0] for point in generate_grid() if point[0] < 1]

或过滤器:

idlist = filter(lambda point: point[0] < 1, generate_grid())