2016-06-20 87 views
1

データセットを.nc形式でグリッド化しました。私は緯度と経度に基づいてデータを抽出したいと思います。私のデータセットの緯度と経度を以下に示します:Pythonで緯度と経度で.ncファイルからデータを抽出

import netCDF4 
from netCDF4 import Dataset 
f= Dataset('data.nc') 
f.variables['lat'][:] 
array([ 31.5, 30.5, 29.5, 28.5, 27.5, 26.5, 25.5, 24.5, 23.5, 
     22.5, 21.5, 20.5, 19.5, 18.5], dtype=float32) 

f.variables['lon'][:] 
array([ 60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, 67.5, 68.5, 
     69.5, 70.5, 71.5, 72.5, 73.5, 74.5, 75.5, 76.5, 77.5, 
     78.5, 79.5, 80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, 
     87.5, 88.5, 89.5, 90.5, 91.5], dtype=float32) 

は、私が正しいコード緯度= 29.5とLON = 65.5 、その後のデータを抽出するとしますか?

f.variables['temp'][:,2,5] 

または

f.variables['temp'][:,29.5,65.5] 

あなたの提案が高く評価されます!

+3

はあなたが提案するオプションを試してみましたか? http://docs.scipy.org/doc/numpy/reference/arrays.indexing.htmlをご覧ください。 – Benjamin

答えて

3

このコードは確かに動作しません。

f.variables['temp'][:,29.5,65.5] 

あなたがnumpyまたはnetcdf4におけるフロートと(いけない)指数はできないので。

あなたは値によってインデックスを作成する場合は、私はxarrayをチェックアウトすることをお勧めしたい:

以下
import xarray as xr 
ds = xr.open_dataset('data.nc') 
# index by value 
ds['temp'].sel(lon=65.5, lat=29.5) 
# or index by position 
ds['temp'].isel(lon=5, lat=2) 
1

「TEMP」変数は緯度、経度によってディメンション化されている場合は、正しいです。いくつかのNetCDF変数は、lon、latによってディメンション化されています。

f.variables['temp'][:,2,5] 

「temp」変数のサイズを確認できます。

print f.variables['temp'].dimensions 

値最寄りの緯度、経度のインデックスを検索するためのコード:

https://stackoverflow.com/a/33793437/1211981

関連する問題