2017-04-01 6 views
1

Yat-il un equaivalent netCDF4 de la fonction xarray pour sélectionner des valeurs à partir d'un fichier NetCDF pour un lat lon et pour une plage de temps spécifique:extraction forme valeur netCDF pour l'emplacement et sur toute la plage temps

hndl_nc.sel(time=slice(start_date, end_date)).sel(lon=lon, lat=lat, method='nearest') 

I ne veulent pas utiliser cdo ou nco

+1

pourquoi ne pas le faire dans xarray comme vous le faites déjà ?. ou utilisez .values ​​à la fin pour extraire les données directement en tant que np.array? – dreab

Répondre

1

Il y aura des différences en fonction de votre ensemble de données en particulier, mais cette fonction comme celui-ci devrait tirer les valeurs des coordonnées spécifiques à et tranche de temps:

def variable_pull(site_lat, site_lon, lat, lon, var, time_slice): 
    lat_idx = (np.abs(lat-site_lat)).argmin() 
    lon_idx = (np.abs(lon-site_lon)).argmin() 
    return var[time_slice, lat_idx, lon_idx] 

pour un jeu de données ouvert avec netCDF4 de manière similaire à ceci:

f = ncdf.Dataset("filepath","r") 
lat = f.variables['lat'][:] 
lon = f.variables['lon'][:] 
var = f.variables['var'][:] 
f.close() 
site_lat = your coordinates of interest 
site_lon = your coordinates of interest 
values = variable_pull(site_lat, site_lon, lat, lon, var, time_slice)