#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define NLATS 67 #define NLONS 116 using namespace std; using namespace netCDF; template vector getVarVector(const NcVar &var) { int length = 1; for (NcDim dim : var.getDims()) { length *= dim.getSize(); } vector vec(length); var.getVar(vec.data()); return vec; } tuple, vector, vector> readGrid() { netCDF::NcFile data("../../../../data/grid.h5", netCDF::NcFile::read); multimap< string, NcVar > vars = data.getVars(); vector time = getVarVector(vars.find("times")->second); vector longitude = getVarVector(vars.find("longitude")->second); vector latitude = getVarVector(vars.find("latitude")->second); return {time, latitude, longitude}; } int main() { vtkNew colors; vtkNew pCoords; pCoords->SetNumberOfComponents(3); pCoords->SetNumberOfTuples(NLATS*NLONS); auto [times, lats, lons] = readGrid(); double i = 0; for (double lat : lats) { for (double lon : lons) { pCoords->InsertTuple3(i++, 0, lat, lon); } } vtkNew points; points->SetData(pCoords); vtkNew polydata; polydata->SetPoints(points); vtkNew mapper; mapper->SetInputData(polydata); mapper->SetScalarRange(0, 40); vtkNew actor; actor->SetMapper(mapper); vtkNew ren; ren->AddActor(actor); ren->SetBackground(colors->GetColor3d("DarkSlateGray").GetData()); vtkNew renWin; renWin->AddRenderer(ren); renWin->SetSize(900, 600); vtkNew iren; iren->SetRenderWindow(renWin); iren->Start(); return EXIT_SUCCESS; }