如何处理标志/异常值

时间:2019-06-25 19:33:49

标签: paraview

在Paraview中,我正在使用将值-99999作为标记值的数据集。我希望能够在没有这些值的情况下操纵数据集,从而不会引起字形和颜色条之类的问题。名义上,我希望数据被“忽略”。

关于数据的一些知识:我有标量和矢量点数据,它们以固定的时间间隔坐在固定的2D空间网格上。

尽管-99999远远超出了数据可能显示的值,但不能选择使用阈值过滤器,因为该标志可能在不同的时间出现在不同的位置。 Paraview阈值过滤器的工作方式意味着,空间中固定点的点ID将随着过滤点的数量随时间的变化而变化。

如果很重要,数据将保存在netCDF文件中,该文件通过XMF头文件和XDMF Reader读取,因为CF阅读器不起作用(可能是由于我的非结构化三角形网格)。 netCDF数据具有_FillValue全局属性,但是Paraview似乎并未对此加以注意。

1 个答案:

答案 0 :(得分:1)

您可以使用Programmable Filter将NaN替换为-99999以下的值。如果数据不是vtkMultiblockDataSet,则可以在可编程过滤器中使用以下脚本:

import numpy as np
from vtk.numpy_interface import dataset_adapter as dsa

# name of the array
name = 'name'
# limit
limit = -99999

array = inputs[0].PointData[name].copy()
array[array<=limit] = np.nan
out = dsa.WrapDataObject(self.GetOutput())
out.PointData.append(array, name)

注意:如果感兴趣的数据是单元格数据,请在脚本中将PointData替换为CellData

注2:该脚本已在ParaView 5.6上进行了测试。