2017-04-08 9 views
0

특정 시간 프레임에 배열을로드하려고합니다. 예를 들어 50 프레임 또는 시간 단위가있는 경우 두 번째 시간 프레임)에서 netCDF 파일 (.nc). 필자는 현재 vtkNetCDFCFReader를 사용하여 다음과 같이 1 시간 프레임의 데이터 배열 "vwnd"을 받고 : 위도, 경도, 시간, vwnd (vwnd 치수 (위도, 경도)가) :VTK - vtkNetCDFCFReader를 사용하여 특정 시간 프레임에서 배열 또는 변수 배열을 읽는 방법

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

변수 배열입니다. 또한 위도와 경도에 대한 배열을 얻는 데 관심이 있습니다. 어떤 도움을 주시면 감사하겠습니다. 위도/경도의 차원으로 사전

답변

0

에서

덕분에 vwnd 다른, 당신은 다른 차원으로 데이터를 읽을 수 2 vtknetCDFreaders가 필요합니다. 독자를 만든 후에 치수를 설정하는 것을 잊지 마십시오. ++ 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에 저장할 수 있습니다.

두 번째 시간 단계에서 vwnd 데이터를 읽으려면 첫 번째 lat * 값을 건너 뜁니다.