VTK-如何使用vtkNetCDFCFReader在特定时间范围读取数组或变量数组 [英] VTK - How to use vtkNetCDFCFReader to read an array or variable array at specific time frame

查看:254
本文介绍了VTK-如何使用vtkNetCDFCFReader在特定时间范围读取数组或变量数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从netCDF文件(.nc)在特定时间范围内加载数组(例如,如果它具有50个帧或时间单位,则获得与第二个时间帧相对应的数组).我目前正在使用vtkNetCDFCFReader,并从第一个时间帧获取数据数组"vwnd",如下所示:

Im trying to load an array at a specific time frame (for example if it has 50 frames or time units then get an array corresponding to the 2nd time frame) from netCDF files (.nc). Im currently using vtkNetCDFCFReader and getting the data array "vwnd" from the 1st time frame like this:

vtkSmartPointer<vtkNetCDFCFReader> reader = vtkSmartPointer<vtkNetCDFCFReader>::New();
reader->SetFileName(path.c_str());
reader->UpdateMetaData();

vtkSmartPointer<vtkStructuredGridGeometryFilter> geometryFilter = vtkSmartPointer<vtkStructuredGridGeometryFilter>::New();
geometryFilter->SetInputConnection(reader->GetOutputPort());
geometryFilter->Update();

vtkSmartPointer<vtkPolyData> ncPolydata = vtkSmartPointer<vtkPolyData>::New();
ncPolydata = geometryFilter->GetOutput();
vtkSmartPointer<vtkDataArray> dataArray = ncPolydata->GetCellData()->GetArray("vwnd");

变量数组是:纬度,经度,时间,vwnd(vwnd具有维度(纬度,经度)).我还对获取经纬度的数组感兴趣.任何帮助将不胜感激.

Variable Arrays are : lat, lon, time, vwnd (vwnd has dimensions (lat,lon)). Im also interested in getting arrays for lat and lon. Any help would be appreciated.

预先感谢

推荐答案

由于lat/lon的维数与vwnd不同,因此您将需要2个vtknetCDFreader来读取具有不同维数的数据.只需记住在创建阅读器后设置尺寸即可.

As the dimension of lat/lon is different from vwnd, you will need 2 vtknetCDFreaders to read in data with different dimensions. Just remember to set the dimension after creating the reader.

例如在C ++中:

vtknetCDFReader* reader = vtknetCDFReader::New();
reader->SetFileName(fileName.c_str());
reader->UpdateMetaData();
//here you specify the dimension of the reader
reader->SetDimension(dim);
reader->SetVariableArrayStatus("lat",1)
reader->SetVariableArrayStatus("lon",1)
reader->Update();

如果操作正确,则可以读取任何数组并将其存储到vtkDataArray中.

If you are doing it correctly, you could read in any arrays and store it into vtkDataArray.

如果要在第二步中读取vwnd数据,只需跳过第一个lat * lon值.

If you want to read in the vwnd data in the second time step, just skip the first lat*lon values.

这篇关于VTK-如何使用vtkNetCDFCFReader在特定时间范围读取数组或变量数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆