Fortran实战:快速解析气象NC数据
Fortran实战:快速解析气象NC数据
- 1 示例所用基础函数
- 2 加载气象数据示例
- 3 结语

之前文章已经介绍过怎么在fortran中配置netcdf库,这里不多做介绍。本篇主要介绍两个调用netcdf库
的示例,方便在fortran中对气象数据直接处理。下面是具体内容:
示例程序用于读取pre_2001.nc降水数据。
1 示例所用基础函数
nf90_open
: 打开已存在的 NetCDF 文件;nf90_inq_varid
: 通过变量名查询变量 ID;nf90_inquire_variable
:获取变量的详细信息;nf90_inquire_dimension
:获取维度的详细信息;nf90_get_var
:从变量中读取实际数据值
要了解以上函数的
具体细节
,可以查看官网的帮助文档;
2 加载气象数据示例
示例数据主要字段
:

示例代码
program test_read_NCrainDadtause netcdfimplicit nonecharacter(:),allocatable :: nc_file,nameinteger :: ncidinteger :: status,in1,varids, ndim,dim1_len,ireal(8),allocatable :: lons(:),lats(:),pre(:,:,:)integer, allocatable :: dimids(:),dim2(:)nc_file = "pre_2001.nc"status = nf90_open(nc_file, NF90_NOWRITE, ncid) ! 打开nc文件! 解析1维 lon 数组status = nf90_inq_varid(ncid, "lon", varids) !> 根据变量名字查询变量iDstatus = nf90_inquire_variable(ncid, varids, ndims=ndim ) ! 获取当前变量维度,返回1表示1维度allocate(dimids(ndim))status = nf90_inquire_variable(ncid, varids, dimids=dimids)status = nf90_inquire_dimension(ncid, dimids(1), name, len=dim1_len) !获取数据长度allocate(lons(dim1_len))status = nf90_get_var(ncid, varids, lons) !获取nc文件字段数据! 解析1维 lat 数组status = nf90_inq_varid(ncid, "lat", varids) !> 根据变量名字查询变量iDstatus = nf90_inquire_variable(ncid, varids, ndims=ndim ) ! 获取当前变量维度,返回1表示1维度if(allocated(dimids))deallocate(dimids)allocate(dimids(ndim))status = nf90_inquire_variable(ncid, varids, dimids=dimids)status = nf90_inquire_dimension(ncid, dimids(1), name, len=dim1_len)allocate(lats(dim1_len))status = nf90_get_var(ncid, varids, lats)! 解析3维 pre 数组status = nf90_inq_varid(ncid, "pre", varids) !> 根据变量名字查询变量iDstatus = nf90_inquire_variable(ncid, varids, ndims=ndim ) ! 获取当前变量维度,返回1表示1维度if(allocated(dimids))deallocate(dimids)allocate(dimids(ndim))allocate(dim2(ndim))status = nf90_inquire_variable(ncid, varids, dimids=dimids)do i = 1, ndimstatus = nf90_inquire_dimension(ncid, dimids(i), name, len=dim1_len)dim2(i) = dim1_lenenddo ! 循环获得3个维度各自长度allocate(pre(dim2(1),dim2(2),dim2(3)))status = nf90_get_var(ncid, varids, pre)end program test_read_NCrainDadta
nc文件解析结果
:

3 结语
本篇介绍了在fortran
中使用netcdf库解析气象nc数据
的过程,提供了示例代码。希望对你有所帮助。
😜
😜😜
😜😜😜😜