2017-08-09 6 views
0

でNetCDFファイルからデータを抽出する私はNetCDFファイルへのPythonを使用する新しいとも新しいです、私は不明だ場合の謝罪そう。 は、私はいくつかの変数を持っているNCファイルがあると私は新しい順にファイルNCそれらからデータを抽出する必要があります。のpython

私のNCファイルには8つの変数(経度、緯度、時間、u10、v10、swh、mwd、mwp)があり、私が試しているロジックは「経度と緯度を入力すれば、 、v10、swh、mwd、mwp)を時間順に並べます。次に、抽出したデータを別のデータベースに格納します。

私は以下のように私のNCファイルをテストした:

import netCDF4 
from netCDF4 import Dataset 

jan = Dataset('2016_01.nc') 
print jan.variables.keys() 

lon = jan.variables['longitude'] 
lat = jan.variables['latitude'] 
time = jan.variables['time'] 

for d in jan.dimensions.items(): 
    print d 

lon_array = lon[:] 
lat_array = lat[:] 
time_array = time[:] 

print lon_array 
print lat_array 
print time_array 

、その結果の一部は、何かアドバイスをいただければ幸いです

[u'longitude', u'latitude', u'time', u'u10', u'v10', u'swh', u'mwd', u'mwp'] 

(u'longitude', <type 'netCDF4._netCDF4.Dimension'>: name = 'longitude', size = 1440) 

(u'latitude', <type 'netCDF4._netCDF4.Dimension'>: name = 'latitude', size = 721) 

(u'time', <type 'netCDF4._netCDF4.Dimension'> (unlimited): name = 'time', size = 186) 

を下回っています。 ありがとうございます。

答えて

0

まず、時間/空間変数の変数の順序を知る必要があります。あなたが得ることができu10、:

u10 = jan.variables['u10'] 
print(u10.dimensions) 

次それは正しく、配列のインデックスを作成/スライスの問題です。

i = np.abs(lon_array - 10).argmin() 
j = np.abs(lat_array - 30).argmin() 

u10の寸法は{time, lat, lon}として注文されていると仮定すると、あなたが読むことができます:あなたはデータが必要な場合latitude=30longitude = 10、対応する(最も近い)インデックスが(import numpy as npとしてnumpyのをインポートした後)で見つけることができると言うことができますあなたの要求された場所のためのu10値を(時間的に変化する)あなたにすべてを与える

u10_time = u10[:,j,i] 

:などのデータ。

+0

ありがとうございました。ぴったりだ。 –

+0

あなたの質問に答えた場合は、それを受け入れて開いている質問のリストを入手できます。 – Bart