2017-09-26 10 views
2

netCDF4.Dataset을 xarray DataArray로 수동 변환하는 방법을 알고 있습니다. 그러나 간단하고 세련된 방법이 있는지 여부를 알고 싶습니다. 나는이 siphon.ncss를 사용하여있어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: 

다음 'netCDF4.Dataset'개체의 간단한 변환을위한 xarray 백엔드를 사용하여 DataArray 객체를 xarray합니다.

+0

"NetCDF4.Dataset을 xarray.Dataset으로 간단하게 변환"이라는 질문에 더 적합한 제목이 있습니까? 그렇다면 @DopplerShift가 올바른 답을 가지고 있습니다. – jhamman

+0

netCDF4.Dataset에 여러 변수가 포함될 수 있기 때문에 DataArray로 변환 할 수있는 방법이 없습니다 ... – DopplerShift

답변

4

xarray의 다음 버전 (0.10)이 매우 일에 대한 지원이 있거나 정확히 이유로 당신이 그것을 사용하려는 적어도하는 netCDF4 하나에서 xarray에게 데이터 세트를 받고 :

import xarray as xr 

nc = nc4.Dataset('filename.nc', mode='r') # Or from siphon.ncss 
dataset = xr.open_dataset(xr.backends.NetCDF4DataStore(nc)) 
을 출시 때까지 당신이 마스터에서 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)) 

:

또는 siphon.ncss와,이 같을 것이다. 그렇지 않으면 유일한 해결책은 모든 것을 수동으로 수행하는 것입니다.

+0

xarray '0.9.6'및 위의 코드를 사용했을 때 ** TypeError ** : '예상 된 문자열 또는 유니 코드 객체, 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