【问题标题】:C++ vtknetCDFCFReader reading variables with different dimensions issuesC++ vtknetCDFCFReader 读取具有不同维度的变量问题
【发布时间】:2017-09-01 22:14:05
【问题描述】:

我试图读取我的 nc 文件。里面有3个变量,分别是:

zonalWind(高度、经度、纬度)

经向风(高度、经度、纬度)

verticalVelocity (height_2, lon, lat)

下面是我读取数组的代码:

vtkNetCDFCFReader *reader = vtkNetCDFCFReader::New();
reader->SetFileName(fileName);
reader->SetOutputTypeToStructured();
reader->UpdateMetaData();
reader->Update();
reader->Print(std::cout);

reader->SetVariableArrayStatus("verticalVelocity", 1);
reader->SetVariableArrayStatus("zonalWind", 1);
reader->SetVariableArrayStatus("meridionalWind", 1);

但是由于维度问题,在termianl跳过verticalVelocity数组时出现以下错误:

vtkNetCDFCFReader (0x7fb1f1517350): Variable verticalVelocity dimensions (height_2 lat lon) are different than the other variable dimensions (height lat lon).  Skipping

有什么方法我可以读取所有 3 个变量数据而不是“跳过”,然后再做一些处理?

TIA

【问题讨论】:

    标签: c++ vtk netcdf


    【解决方案1】:

    没有。您应该创建 2 个 vtkNetCDFCFReader 实例并为每个实例读取具有相同维度的变量。

    如果您只想提取较大网格的一部分并在较小网格上使用这些值,则将 vtkExtractGrid 过滤器附加到一个或两个读取器输出,以获得相同大小的数据集。最后,对结果运行 vtkMergeArrays 过滤器以生成包含所有数组值的单个数据集。

    【讨论】:

    • 我为“verticalVelocity”变量创建了第二个读取器,但由于同样的问题,它仍然跳过了数据。似乎程序将尺寸默认为(高度 lat lon)。我想使用 SetDimension 来改变它吗? @Drone2537
    • 更新:刚刚意识到我必须将 SetDimension 函数放在阅读器更新函数之前。现在可以了。
    • 您好,您是否也知道如何解决这个问题? :stackoverflow.com/questions/43298315/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多