【问题标题】:How to get binary array from a netcdf file如何从 netcdf 文件中获取二进制数组
【发布时间】:2014-07-19 17:04:01
【问题描述】:

我有一个 netcdf 文件,我正在内存中打开它并尝试获取该文件的二进制表示。不幸的是,似乎没有一种方法可以做到这一点。

我尝试过使用 ObjectOutputStream 和 DataOutputStream 但似乎都不起作用:

// Nothing gets writen into baos
NetcdfFile file = NetcdfFile.openInMemory("C:\\testVIL.nc");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
N3outputStreamWriter w = new N3outputStreamWriter(file);
w.writeDataAll(out);
out.close();
byte[] byteArray = baos.toByteArray();
for ( byte b : byteArray ) {
 System.out.print( (char) b );
}

// netcdfFile is not seralizable
NetcdfFile file = NetcdfFile.openInMemory("C:\\testVIL.nc");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( file );
byte[] byteArray = baos.toByteArray();
for ( byte b : byteArray ) {
  System.out.print( (char) b );
}

谁能给我建议一种方法来获取 netcdf 文件的二进制表示,我很难过!

【问题讨论】:

    标签: java binary output netcdf


    【解决方案1】:

    NetCDF 已经是二进制表示,所以不确定你想要什么。

    也许:

    NetcdfFile file = NetcdfFile.openInMemory("C:\\testVIL.nc");
    Variable v = ncfile.findVariable("varname");
    Array data = v.read();
    while(data.hasNext())
       System.out.printf("%f,", data.nextDouble() );
    

    【讨论】:

      【解决方案2】:

      netCDF 运算符 (NCO) ncks 将输出二进制

      ncks -O -b binary.dat in.nc out.nc
      

      更多详情见

      http://nco.sf.net/nco.html#bnr

      【讨论】:

      • 谢谢,但我希望在内存中执行此操作并且没有磁盘 I/O
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多