如何通过ParaView Python API将电子表格数据输出至终端?
使用ParaView Python API输出电子表格数据到终端
获取电子表格视图
你可以直接通过视图名称调用FindView()获取目标视图,默认的电子表格视图名称为SpreadSheetView:
spreadsheet_view = FindView("SpreadSheetView")
如果不确定视图名称,也可以遍历所有视图筛选类型为vtkSpreadSheetView的对象:
from paraview.servermanager import Fetch for view in GetViews(): view_proxy = Fetch(view) if view_proxy.IsA("vtkSpreadSheetView"): spreadsheet_view = view break
提取视图关联的数据
电子表格的数据来自其绑定的数据源,先获取数据表示对象,再提取对应的数据:
# 取视图的第一个数据表示(多数据源场景可调整索引) data_rep = spreadsheet_view.GetRepresentations()[0] data_object = data_rep.GetOutputDataObject(0)
打印数据到终端
根据数据类型选择对应的遍历方式:
1. 表格类型数据(vtkTable)
num_rows = data_object.GetNumberOfRows() num_cols = data_object.GetNumberOfColumns() # 打印表头 header = [data_object.GetColumnName(i) for i in range(num_cols)] print("\t".join(header)) # 逐行打印数据 for row_idx in range(num_rows): row_values = [] for col_idx in range(num_cols): cell_value = data_object.GetValue(row_idx, col_idx) # 适配不同数据类型的输出 if cell_value.IsA("vtkStringValue"): row_values.append(cell_value.ToString()) else: row_values.append(str(cell_value.ToDouble())) print("\t".join(row_values))
2. 网格类数据(如vtkUnstructuredGrid)
这类数据在电子表格中显示的是点或单元数据,需先提取对应的数据数组:
# 提取点数据(换用GetCellData()可获取单元数据) point_data = data_object.GetPointData() num_arrays = point_data.GetNumberOfArrays() num_points = data_object.GetNumberOfPoints() # 打印数组名称(表头) header = [point_data.GetArrayName(i) for i in range(num_arrays)] print("\t".join(header)) # 逐点打印数据 for point_idx in range(num_points): point_values = [] for array_idx in range(num_arrays): value = point_data.GetArray(array_idx).GetValue(point_idx) point_values.append(str(value)) print("\t".join(point_values))
额外提示
- 如果电子表格只显示了部分列,可通过
spreadsheet_view.GetColumnVisibility(column_name)判断列是否可见,过滤输出内容 - 处理超大数据集时,建议分批打印,避免终端负载过高
内容的提问来源于stack exchange,提问作者Luke H
相关产品推荐
相关产品推荐

