rensheng_ruxi 2020-10-24 09:56
浏览 82

java制作nc文件,时间维度是如何设置的?

仿照一类nc文件,将csv文件制作成nc文件,但时间维度不知道如何设置?示例文件用panoply软件打开是这样的:
图片说明图片说明,现在我已经将时间设置好了,但时间格式不正确,正确的格式是这样的:
图片说明
但我设置的时间格式是这样的:
图片说明
请问是哪里出了问题?而且我看示例文件Time好像是虚拟的,根据Times显示的,我制作 的nc文件的Time不是虚拟的,示我的代码是这样的

Dimension azimuth=fileWriter.addDimension(null, dimension[0], ((List<Double>)listX.get(0)).size());
            Dimension num=fileWriter.addDimension(null, dimension[1], ((int [])listX.get(1)).length);
            Dimension time=fileWriter.addUnlimitedDimension("Time");
            Dimension dateStrLen=fileWriter.addDimension(null,"dateStrLen",19);
            //定义坐标变量
            Variable azimuthVar= fileWriter.addVariable(null, dimension[0],DataType.DOUBLE, dimension[0]);
            Variable numVar= fileWriter.addVariable(null, dimension[1],DataType.DOUBLE, dimension[1]);
            Variable timeVar= fileWriter.addVariable(null, "Time",DataType.DOUBLE, "Time");
            // 定义变量的属性(Attribute)
            fileWriter.addVariableAttribute(azimuthVar, new Attribute("units", "azimuth"));
            fileWriter.addVariableAttribute(numVar, new Attribute("units", "num"));
            fileWriter.addVariableAttribute(timeVar, new Attribute("units", "secs since 1970-01-01 00:00:00"));
            fileWriter.addVariableAttribute(timeVar, new Attribute("long_name", "synthesized time coordinate from Times(time)"));
            fileWriter.addVariableAttribute(timeVar, new Attribute("_CoordinateAxisType", "Time"));
            //定义数据变量
            String dims="Time azimuth num";
            Variable fVar = fileWriter.addVariable(null, "F", DataType.DOUBLE, dims);
            Variable bIVar = fileWriter.addVariable(null, "BI", DataType.DOUBLE, dims);
            Variable timesVar = fileWriter.addVariable(null, "Times", DataType.CHAR, "Time dateStrLen");
            // 定义数据属性(Attribute)
            fileWriter.addVariableAttribute(fVar, new Attribute("units", "F"));
            fileWriter.addVariableAttribute(bIVar, new Attribute("units", "BI"));
            //定义一维数组(为坐标设定数值)
            ArrayDouble.D1 azimuthX = new ArrayDouble.D1(((List<Double>)listX.get(0)).size());
            ArrayDouble.D1 numY = new ArrayDouble.D1(((int [])listX.get(1)).length);
            //填充值
            int i, j;
            for (i = 0; i < azimuth.getLength(); i++) {
                azimuthX.set(i, ((List<Double>)listX.get(0)).get(i));
            }
            for (j = 0; j < num.getLength(); j++) {
                numY.set(j, ((int [])listX.get(1))[j]);
            }
            // 定义2维数组(为数据设定值)
            ArrayDouble.D3 dataF = new ArrayDouble.D3(1,azimuth.getLength(), num.getLength());
            ArrayDouble.D3 dataBI = new ArrayDouble.D3(1,azimuth.getLength(), num.getLength());
            String [][] f =(String [][])list.get(0);
            String [][] bi =(String [][])list.get(1);
            for(int tim=0;tim<1;tim++){
                for (int azi = 0; azi < azimuth.getLength(); azi++) {
                    for (int n = 0; n < num.getLength(); n++){
                        dataF.set(tim, azi , n , Double.parseDouble(f[azi][n]) );
                        dataBI.set( tim,azi, n, Double.parseDouble(bi[azi][n]) );
                    }
                }
            }

望指导一下,时间维度怎么设置?我哪里设置有问题?

  • 写回答

0条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 silvaco 器件仿真的问题
      • ¥20 用c语言设计程序:给定一个从{a,b,c}到其自身的函数f={(a,a),(b,c),(c,b)},判断函数f是否有反函数?
      • ¥15 编写java程序查找回文字符串
      • ¥15 搭建openstack
      • ¥15 几何图形的绘制c++
      • ¥15 英文 软件没办法脱壳,有没有办法进行汉化
      • ¥30 大学数据结构课程,要求运用北京理工大学出版社版数据结构教科书知识设计一款软件并成功运行
      • ¥15 vscode连接linux云服务器时,显示Failed to parse remote port from server output
      • ¥15 请问这个问题怎么写呀
      • ¥15 重启之后mysqld文件夹消失