2017-09-26 34 views
2

netCDF4.Datasetをxarray DataArrayに手動で変換する方法を知っています。しかし、シンプルでエレガントな方法があるかどうかを知りたいと思います。 xarrayバックエンドを使用して、DataArrayオブジェクトをxarrayするには、以下の「netCDF4.Dataset」オブジェクトの簡単な変換のために:netCDF4.Datasetをxarrayに簡単に変換するデータセット

<type 'netCDF4.Dataset'> 
root group (NETCDF4 data model, file format HDF5): 
    Originating_or_generating_Center: US National Weather Service, National Centres for Environmental Prediction (NCEP) 
    Originating_or_generating_Subcenter: NCEP Ensemble Products 
    GRIB_table_version: 2,1 
    Type_of_generating_process: Ensemble forecast 
    Analysis_or_forecast_generating_process_identifier_defined_by_originating_centre: Global Ensemble Forecast System (GEFS) 
    Conventions: CF-1.6 
    history: Read using CDM IOSP GribCollection v3 
    featureType: GRID 
    History: Translated to CF-1.0 Conventions by Netcdf-Java CDM (CFGridWriter2) 
Original Dataset = /data/ldm/pub/native/grid/NCEP/GEFS/Global_1p0deg_Ensemble/member/GEFS_Global_1p0deg_Ensemble_20170926_0600.grib2.ncx3#LatLon_181X360-p5S-180p0E; Translation Date = 2017-09-26T17:50:23.259Z 
    geospatial_lat_min: 0.0 
    geospatial_lat_max: 90.0 
    geospatial_lon_min: 0.0 
    geospatial_lon_max: 359.0 
    dimensions(sizes): time2(2), ens(21), isobaric1(12), lat(91), lon(360) 
    variables(dimensions): float32 u-component_of_wind_isobaric_ens(time2,ens,isobaric1,lat,lon), float64 time2(time2), int32 ens(ens), float32 isobaric1(isobaric1), float32 lat(lat), float32 lon(lon), float32 v-component_of_wind_isobaric_ens(time2,ens,isobaric1,lat,lon) 
    groups: 

私はsiphon.ncssを使用して、これを持っています。

+0

「NetCDF4.Datasetからxarray.Datasetへの簡単な変換」という質問に、より良いタイトルがありますか?もしそうなら、@DopplerShiftが正しい答えを持っています。 – jhamman

+0

netCDF4.Datasetは複数の変数を含むことができるので、DataArrayに変換することはできません。 – DopplerShift

答えて

4

xarrayの次のリリース(0.10)は、この非常に事をサポートしている、または少なくともあなたがそれを使用しようとしている正確な理由のために、netCDF4 1からxarray データセットを取得:

import xarray as xr 

nc = nc4.Dataset('filename.nc', mode='r') # Or from siphon.ncss 
dataset = xr.open_dataset(xr.backends.NetCDF4DataStore(nc)) 

またはsiphon.ncssと、これは次のようになります。それがリリースされるまで、あなたがマスターからxarrayをインストールすることができ

from datetime import datetime 
from siphon.catalog import TDSCatalog 
import xarray as xr 

gfs_cat = TDSCatalog('http://thredds.ucar.edu/thredds/catalog' 
        '/grib/NCEP/GFS/Global_0p5deg/catalog.xml') 
latest = gfs_cat.latest 
ncss = latest.subset() 
query = ncss.query().variables('Temperature_isobaric') 
query.time(datetime.utcnow()).accept('netCDF4') 
nc = ncss.get_data(query) 
dataset = xr.open_dataset(xr.backends.NetCDF4DataStore(nc)) 

。そうでなければ、唯一の解決策はすべてを手動で行うことです。

+0

xarray '0.9.6'と上記のコードを使用した場合** TypeError **: '予想される文字列またはUnicodeオブジェクト、netCDF4.Dataset found'。しかし、xarray '0.9.6-51-g25d1855'を使用したときに、 'RuntimeError **:' Dataset(tmp_file.name、 'r') 'が' siphon.ncss 'で呼び出されたときに 'NetCDF:HDF error' '。あなたはそれを再現できますか? – Ales

+0

'siphon.ncss'との使用方法を明示的に示す答えを更新しました。 – DopplerShift

+0

ノートブックへのリンクが私のために働いていません。 – DopplerShift

関連する問題