2014-10-02 65 views
0

我正在使用netcdf-java來訪問netcdf文件和變量。我想知道如何獲得每個變量的起始偏移量並直接尋找該偏移量。以下是我目前的代碼,我從方法中獲得變量findVariableget netcdf變量起始偏移量

NcHdfsRaf raf = new NcHdfsRaf(file, job.getConfiguration()); 
NetcdfFile ncfile = WRFFile.openFile(raf, path.toString()); 
Variable timesVar = ncfile.findVariable("Temperature"); 
+0

我想這種因爲Netcdf的API我正在處理的文件在Hadoop分佈式文件系統-HDFS上,並分佈在多個節點中的多個塊中。我認爲,如果我能夠識別哪些變量被考慮進來並且只讀取一個節點上的塊而不是從多個節點讀取整個文件,那麼效率會更高。 – pthongtra 2014-10-04 22:24:22

回答

0

唉。你爲什麼要這樣?這可能是一個可怕的想法。您已經有了讀取數據的界面,並且該界面可以讓您免受任何基礎文件格式更改的影響。此外,請記住,netcdf是一種可移植的文件格式:如果您從給定偏移量讀取1000個字節,則這些字節可能不是您所期望的 - 該庫將處理endian轉換以及必須發生的任何可能的類型轉換。

與所有的出路,如果由於某種原因,傻瓜你想獲得補償,我沒有看到在Java類東西,可以讓你做到這一點:

http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/javadoc/ucar/nc2/Variable.html

如果你在C庫這樣做,公共API下方,你可以在類型NC_Var的偷看:在「開始」 struct的成員是在數據開始:

https://github.com/Unidata/netcdf-c/blob/master/include/nc3internal.h#L159