How to Isosurface for nc/netcdf Data?

I have a solution for my Problem to use vtkAssignAttribute and vtkDataSetSurfaceFilter
Here the full code:

    vtkSmartPointer<vtkNetCDFCFReader> cdfCFReader = vtkSmartPointer<vtkNetCDFCFReader>::New();
    cdfCFReader->SetFileName(filenameNC.c_str());
    cdfCFReader->UpdateMetaData();
    cdfCFReader->SetVariableArrayStatus("ql_3D", 1);
    cdfCFReader->Update();

    vtkSmartPointer<vtkAssignAttribute> assignAttribute = vtkSmartPointer<vtkAssignAttribute>::New();
    assignAttribute->SetInputConnection(cdfCFReader->GetOutputPort());
    assignAttribute->Assign("ql_3D", "SCALARS", "POINT_DATA");
    
 
    vtkSmartPointer<vtkContourFilter> contour = vtkSmartPointer<vtkContourFilter>::New();
    contour->SetInputConnection(assignAttribute->GetOutputPort());
    contour->GenerateValues(10, 0.0, 0.257);

    vtkSmartPointer<vtkDataSetSurfaceFilter> surfaceFilter = vtkSmartPointer<vtkDataSetSurfaceFilter>::New();
    surfaceFilter->SetInputConnection(contour->GetOutputPort());

    vtkSmartPointer<vtkPolyDataMapper> polyMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    polyMapper->SetInputConnection(surfaceFilter->GetOutputPort());
    //polyMapper->SetScalarRange(0, 0.257);

    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(polyMapper);

    vtkSmartPointer<vtkRenderer> = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(actor);
	
    vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer);
    renWin->Render();```

![grafik|506x500](upload://nD7XXQUXjxx2xS9h2UN1uolBE4A.png)
1 Like