2017-04-08 1 views
0

En essayant de charger un tableau à une période donnée (par exemple, s'il a 50 images ou unités de temps, alors un tableau correspondant au 2ème période) à partir de fichiers netCDF (.nc). Im utilise actuellement vtkNetCDFCFReader et obtenir le tableau de données "vwnd" à partir du 1er laps de temps comme celui-ci:VTK - Comment utiliser vtkNetCDFCFReader pour lire un tableau ou un tableau de variables à une période donnée

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"); 

tableaux variables sont les suivantes: latitude, longitude, le temps, vwnd (vwnd a des dimensions (latitude, LON)). Je suis également intéressé par obtenir des tableaux pour lat et lon. Toute aide serait appréciée.

Merci à l'avance

Répondre

0

Comme la dimension de latitude/longitude est différent de vwnd, vous aurez besoin de 2 vtknetCDFreaders pour lire des données avec des dimensions différentes. N'oubliez pas de définir la dimension après avoir créé le lecteur.

Par exemple, en 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(); 

Si vous le faites correctement, vous pouvez lire dans les tableaux et le stocker dans vtkDataArray.

Si vous voulez lire les données de vwnd lors du second pas de temps, sautez simplement les premières valeurs lat * lon.