2024-04-25 17:59:10 发布
网友
我试图访问网格卫星测绘数据,这是在hdf从https://disc.gsfc.nasa.gov/datasets?keywords=LATENT%20HEATING&page=1你可以看到任何3级数据,这是我试图使用。我熟悉netcdf可视化库(如ferret)和netcdf操作软件(如cdo和nco)。我想将这个条带网格数据转换成netcdf,以便使用cdo和nco进行平滑分析。你知道吗
从这里贴出的答案来看:Convert hdf5 to netcdf4 in bash, R, python or NCL?
最简单的方法是:
nccopy in.h5 out.nc
我下载了文件-轨道.GPM.DPRGMI.3GCSHv6-0.20190626-S064516-E081748.030252.V06A.HDF5从您共享的链接创建了一个程序,该程序以文件名为参数,并使用变量latentheat、surfacePrecipRate和stratiformFraction生成一个netcdf文件。让我澄清一下,这个文件是一个网格卫星测绘数据。您可能需要做一些其他的事情,使网格数据的像素明智的条带数据
import h5py import numpy as np import datetime as dt import xarray as xr import sys input_file = sys.argv[1] f = h5py.File(input_file, 'r') yy = np.max(f['Grid']['GridTime']['Year'][:]) mm = np.max(f['Grid']['GridTime']['Month'][:]) dd = np.max(f['Grid']['GridTime']['DayOfMonth'][:]) time_ = dt.datetime(yy, mm, dd) lat = np.linspace(-67+0.25/2,67-0.25/2,536) lon = np.linspace(-180+0.25/2,180-0.25/2,1440) lev = np.arange(0.125,0.125+0.25*80,0.25) lh = f['Grid']['latentHeating'][:] spr = f['Grid']['surfacePrecipRate'][:] stratfrac = f['Grid']['stratiformFraction'][:] lh[lh==-9999.9] = np.nan spr[spr==-9999.9] = np.nan stratfrac[stratfrac==-9999.9] = np.nan stratfrac = stratfrac.T spr = spr.T lh = lh.swapaxes(1,2) lh = lh[np.newaxis,...] stratfrac = stratfrac[np.newaxis,...] spr = spr[np.newaxis,...] df = xr.Dataset( data_vars={'latentHeating': (('time', 'level', 'latitude', 'longitude' ), lh), 'surfacePrecipRate': (('time', 'latitude', 'longitude' ), spr), 'stratiformFraction': (('time', 'latitude', 'longitude'), stratfrac)}, coords={ 'time':np.atleast_1d((time_- dt.datetime(1,1,1)).days+2), 'level': lev, 'longitude': lon, 'latitude': lat, }) df.latentHeating.attrs['long_name'] = 'Latent Heating' df.surfacePrecipRate.attrs['long_name'] = 'Surface Precipitation Rate' df.stratiformFraction.attrs['long_name'] = 'Stratiform Fraction' df.time.attrs['units'] = 'days since 01-01-01 00:00:00' df.time.attrs['standard_name'] = 'time' df.time.attrs['long_name'] = 'Year AD' df.time.attrs['calendar'] = 'standard' df.longitude.attrs['standard_name'] = 'longitude' df.longitude.attrs['long_name'] = 'longitude' df.longitude.attrs['units'] = 'degrees_east' df.longitude.attrs['axis'] = 'X' df.latitude.attrs['standard_name'] = 'latitude' df.latitude.attrs['long_name'] = 'latitude' df.latitude.attrs['units'] = 'degrees_north' df.latitude.attrs['axis'] = 'Y' df.level.attrs['standard_name'] = 'air_pressure' df.level.attrs['long_name'] = 'pressure_level' df.level.attrs['units'] = 'km' df.level.attrs['axis'] = 'Z' df.level.attrs['positive'] = 'up' df.to_netcdf(input_file[:-4]+'nc')
您只需将其保存为python文件并将hdf文件作为参数传递即可。你知道吗
从这里贴出的答案来看:Convert hdf5 to netcdf4 in bash, R, python or NCL?
最简单的方法是:
我下载了文件-轨道.GPM.DPRGMI.3GCSHv6-0.20190626-S064516-E081748.030252.V06A.HDF5从您共享的链接创建了一个程序,该程序以文件名为参数,并使用变量latentheat、surfacePrecipRate和stratiformFraction生成一个netcdf文件。让我澄清一下,这个文件是一个网格卫星测绘数据。您可能需要做一些其他的事情,使网格数据的像素明智的条带数据
您只需将其保存为python文件并将hdf文件作为参数传递即可。你知道吗
相关问题 更多 >
编程相关推荐