2013-10-22 74 views
1

我在使用NetCDF4文件時遇到問題。誰能幫幫我嗎。讀它似乎工作。無法處理NetCDF4文件

import netCDF4 
f = netCDF4.Dataset('mydata.nc', 'r') 

當我試圖探討什麼是文件(>>>打印F)中,我得到一些信息:

<type 'netCDF4.Dataset'> 
root group (NETCDF4 file format): 
dimensions: soundings, levels 
variables: 
groups: Retrieval, Sounding 

...

print f.dimensions 

給我:

OrderedDict([(u'soundings', <netCDF4.Dimension object at 0x2bd24b0>), 
(u'levels', <netCDF4.Dimension object at 0x2bd2500>)]) 

從我在教程中讀到的內容I應能夠通過鍵入

print len(soundings) 

以檢查不同的尺寸的長度,但我收到錯誤消息「名稱‘探測’未定義」。有人知道我可能會做錯什麼嗎?謝謝。

回答

2

由於您尚未定義名爲soundings的變量,您將會看到該錯誤。如果通過

soundings = f.dimensions[u'soundings'] 

定義這個變量,那麼你應該能夠找到使用print len(soundings)的的soundings長度。

或者,你可以直接使用

print len(f.dimensions[u'soundings']) 

我不得不承認,進入「水深」維度的長度,我沒有用netCDF4,所以我讀了netCDF4 documentation簡單。在「在NetCDF文件尺寸」一節它包含顯示netCDF4數據集的尺寸的下面的例子:(爲簡潔起見,我已經省略了關於其中rootgrp來自詳情)

>>> print rootgrp.dimensions 
OrderedDict([('level', <netCDF4.Dimension object at 0x1b48030>), 
      ('time', <netCDF4.Dimension object at 0x1b481c0>), 
      ('lat', <netCDF4.Dimension object at 0x1b480f8>), 
      ('lon', <netCDF4.Dimension object at 0x1b48a08>)]) 

的在下面的代碼片段下一行代碼是這樣的:

>>> print len(lon) 

什麼你可能已經錯過的是變量lon被宣佈進一步上漲,因爲

>>> lon = rootgrp.createDimension('lon', 144) 

以上教程部分涉及在netCDF文件中創建新維度,而您正在從netCDF文件讀取現有維度。因此您必須從netCDF文件中提取尺寸。

+0

感謝您的幫助。我瀏覽了netCDF文檔超過一個小時,找到了上面給出的示例但無法理解它。正如你所假設的完全正確,我只是無法意識到代碼中的一步遺漏了。現在我知道該怎麼做。謝謝。 – paulchen