|||
很多数据都以NETCDF或GRIB的格式出现,比如NCEP和ECMWF的数据基本是NETCDF的格式,读取这些数据的格式时,在linux下可以安装NETCDF库来读取,比如用fortran读取NCEP大气数据时,需要有这样一句,
call readnetcdf(ncfile, 'pres', start,count,stride,press,time),这个‘pres’即为NCEP大气数据的关键字,那么对一个NETCDF格式的数据,如何获取这个关键字呢?这里就要用到一个很方便的工具ncdump:
ncdump -c pres.sfc.2012.nc > header.atmos
这样在header.atmos文件下将会有这样的信息:
netcdf pres.sfc.2012 {
dimensions:
lat = 73 ;
lon = 144 ;
time = UNLIMITED ; // (1464 currently)
variables:
float lat(lat) ;
lat:units = "degrees_north" ;
lat:actual_range = 90.f, -90.f ;
lat:long_name = "Latitude" ;
lat:standard_name = "latitude" ;
lat:axis = "Y" ;
float lon(lon) ;
lon:units = "degrees_east" ;
lon:long_name = "Longitude" ;
lon:actual_range = 0.f, 357.5f ;
lon:standard_name = "longitude" ;
lon:axis = "X" ;
double time(time) ;
time:units = "hours since 1-1-1 00:00:0.0" ;
time:long_name = "Time" ;
time:actual_range = 17628096., 17636874. ;
time:delta_t = "0000-00-00 06:00:00" ;
time:standard_name = "time" ;
time:axis = "T" ;
short pres(time, lat, lon) ;
pres:long_name = "4xDaily Pressure at surface" ;
pres:unpacked_valid_range = 40000.f, 115000.f ;
pres:actual_range = 49030.f, 109490.f ;
pres:units = "Pascals" ;
pres:add_offset = 367650.f ;
pres:scale_factor = 10.f ;
pres:missing_value = 32766s ;
pres:precision = -1s ;
pres:least_significant_digit = -1s ;
pres:GRIB_id = 1s ;
pres:GRIB_name = "PRES" ;
pres:var_desc = "Pressure" ;
pres:dataset = "NMC Reanalysis" ;
pres:level_desc = "Surface" ;
pres:statistic = "Individual Obs" ;
pres:parent_stat = "Other" ;
pres:valid_range = -32765s, -25265s ;
// global attributes:
:Conventions = "COARDS" ;
:title = "4x daily NMC reanalysis (2012)" ;
:history = "created 2011/12 by Hoop (netCDF2.3)" ;
:description = "Data is from NMC initialized reanalysisn",
"(4x/day). It consists of most variables interpolated ton",
"pressure surfaces from model (sigma) surfaces." ;
:platform = "Model" ;
:references = "http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.html" ;
short pres(time, lat, lon) ; 这句中的pres即为关键字。
pres:units = "Pascals" ; 这句即为气压数据的单位:帕斯卡。
下面还有经纬度格网信息、时间信息(时间的单位是小时,time:units = "hours since 1-1-1 00:00:0.0" ),内容较多,显示不全,有兴趣的可以自己试验。
将NETCDF格式文件转化为可读文本文件:
ncdump -bc pres.sfc.2012.nc > atmos_ncep_2012.dat
但这样对于数据量大的数据比较耗时,不建议这样做,还是尽量用NETCDF的库完成NETCDF格式文件的读取。
NOTE:在当前数据目录下必须有类似动态库文件 libnetcdf.so.7!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-20 00:32
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社