2015-02-10 62 views
1

我有一個HDF5文件,溫度全球覆蓋。該文件從netcdf轉換而來。轉換過程將經度設置爲0到360,並且將地圖顛倒過來,因此北方現在向南。我已經使用HDFView,我可以顯示文件,但沒有辦法與地圖交互,所以找到一個特定的緯度/經度組合。即使在設置了正確的投影之後,該文件也不會在弧形圖中正確顯示。 無論如何,我可以顯示數據並點擊某個位置並提取緯度/長度或在特定緯度/經度上繪製點?找到經緯度/長點在hdf5中

回答

0

簡答:不,那不可能。

長答案:與NetCDF不同,HDF5是通用文件格式。它允許您存儲分組到文件夾中的n維數值數組(稱爲數據集)(因此名稱爲「分層」)。而已。沒有語義。對於HDF5,您的數據不是「地圖」,它只是一個數組。因此,HDFView不會「知道」經度和緯度。該信息在NetCDF => HDF5轉換過程中丟失。實際上,緯度/經度陣列可能仍在文件中,但它們不再具有任何固有的含義。另一方面,NetCDF強加了包括座標系統在內的通用數據模型。這就是爲什麼各種可視化工具可讓您以更復雜的方式與您的數據進行交互。

你用什麼工具將NetCDF文件轉換爲HDF5? 您可以使用HDF5來存儲氣象數據(我這樣做,效果很好)。但是,您必須編寫自己的地理參考和可視化工具。如果您使用Python,請查看h5py項目。

+0

我只用了一個fortran90腳本。是lat和long是h5文件中的數據之一 – 2015-02-16 11:48:42

0

正如@ heron13所說的,HDF5是一種文件格式。

什麼版本的NetCDF是你的文件?由於版本4使用HDF5的增強版作爲存儲層。

您的NetCDF文件是否遵循CF conventionsCOARDS慣例?如果是這樣,我會看看你用來將它轉換爲HDF5的程序,因爲HDF5可以支持相同的約定。爲example

一旦您確認約定在HDF5文件中,arcmap的意思是support(對不起,我無法訪問arcmap進行確認)。

下面就一起來看看NetCDF文件與CF約定:

$ ncdump tos_O1_2001-2002.nc | less 
    netcdf tos_O1_2001-2002 { 
    dimensions: 
    lon = 180 ; 
    lat = 170 ; 
    time = UNLIMITED ; // (24 currently) 
    bnds = 2 ; 
    variables: 
    double lon(lon) ; 
      lon:standard_name = "longitude" ; 
      lon:long_name = "longitude" ; 
      lon:units = "degrees_east" ; 
      lon:axis = "X" ; 
      lon:bounds = "lon_bnds" ; 
      lon:original_units = "degrees_east" ; 
    ... 

雖然這裏只使用h5dump同一文件的視圖:其他

$ h5dump tos_O1_2001-2002.nc | less 
HDF5 "tos_O1_2001-2002.nc" { 
GROUP "/" { 
ATTRIBUTE "Conventions" { 
    DATATYPE H5T_STRING { 
    STRSIZE 6; 
    STRPAD H5T_STR_NULLTERM; 
    CSET H5T_CSET_ASCII; 
    CTYPE H5T_C_S1; 
    } 
    DATASPACE SCALAR 
    DATA { 
    (0): "CF-1.0" 
    } 
} 
... 

一個問題,有沒有什麼之所以沒有使用arcmap中的NetCDF文件?