如何从netcdf文件中获取二进制数组

时间:2014-05-30 02:25:49

标签: java binary output netcdf

我有一个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文件获取二进制表示形式,我很难过!

2 个答案:

答案 0 :(得分:1)

netCDF Operator(NCO)ncks将输出二进制文件

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

有关详细信息,请参阅

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

答案 1 :(得分:0)

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() );