本文主要为您介绍如何在Grid模型的客户端写入多维网格数据。

写入流程

如上图所示,网格数据录入流程可以分为三部分:
  1. 通过putDataSetMeta接口写入数据集的元数据信息。
  2. 通过GridDataWriter录入整个数据集的数据。
  3. 通过updateDataSetMeta接口更新数据集的元数据信息,标记数据已经录入完成。

示例

读取一个NetCDF(气象格点数据常用的格式)文件,然后将其中的数据通过GridDataWriter录入到表格存储中。通过GridDataWriter每次写入时,只能写入一个二维平面,所以我们需要在外层进行3层循环,分别枚举变量维、时间维、高度维的值,然后读取对应的二维平面的数据进行录入。

示例代码:
    public void importFromNcFile(TableStoreGrid grid, GridDataSetMeta meta, String ncFileName) throws Exception {
        GridDataWriter writer = grid.getDataWriter(meta);
        NetcdfFile ncFile = NetcdfFile.open(ncFileName);
        List<Variable> variables = ncFile.getVariables();
        for (Variable variable : variables) {
            if (meta.getVariables().contains(variable.getShortName())) {
                for (int t = 0; t < meta.gettSize(); t++) {
                    for (int z = 0; z < meta.getzSize(); z++) {
                        Array array = variable.read(new int[]{t, z, 0, 0}, new int[]{1, 1, meta.getxSize(), meta.getySize()});
                        Grid2D grid2D = new Grid2D(array.getDataAsByteBuffer(), variable.getDataType(),
                                new int[] {0, 0}, new int[] {meta.getxSize(), meta.getySize()});
                        writer.writeGrid2D(variable.getShortName(), t, z, grid2D);
                    }
                }
            }
        }
    }