当前位置: 首页 > news >正文

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数据的过程,提供了示例代码。希望对你有所帮助。







😜
😜😜
😜😜😜😜

http://www.dtcms.com/a/288385.html

相关文章:

  • c++-class
  • 系统思考—跳出症状看全局
  • 优先算法——专题十:哈希表
  • WSL的功能及用途
  • Paimon 在维表 Lookup Join 场景中的应用
  • Spring AI - ChatClient接口演示
  • FMEA-CP-PFD三位一体数字化闭环:汽车部件质量管控的速效引擎
  • 11.1Redis高可用集群部署
  • Js中var VS let VS const
  • Jmeter系列(7)-线程组
  • 6.表内容的操作之增、读
  • 【Linux服务器】-mysql数据库数据目录迁移
  • 打靶日记之xss-labs
  • undefined reference to ‘end‘
  • 从公共数据到医学研究:32 个生信数据库详解
  • [实战]巴特沃斯滤波器全流程解析:从数学原理到硬件实现
  • 磁盘阵列技术的功能与分类
  • 【面试题】大厂高压面经实录丨第三期
  • Python Pandas读取Excel表格中数据并根据时间字段筛选数据
  • 软件警告弹窗与兼容性问题
  • HD Video Converter Factory pro 高清视频转换器 v27.7.0 绿色中文便携版
  • centos7使用docker-compose部署项目
  • 《Linux 环境下 NTP 时间同步与 SSH 免密登录配置实战》
  • 树的基础知识总结
  • 移动硬盘无法读取怎么办?数据还可以抢救回来
  • STC增强型单片机寄存器 PWM EEPROM TMOD TCON
  • 数据结构的文件操作
  • scalelsd 笔记 线段识别 本地部署 模型架构
  • Spring7个事务传播行为和5个隔离级别
  • Java-Lambda表达式