之前写了一篇《基于Python的GRIB数据可视化》的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明。

一、在Windows下Python为什么无法读取GRIB

大家在windows系统不能读取GRIB数据的主要原因是,GRIB_API在Windows下无法编译安装,从而导致pygrib安装失败。我曾经也为这个问题苦恼了很久,也到ECMWF论坛里找了很久,也给ECMWF发了邮件,回应我没有做Windows版本的打算,所以在Windows下直接用pygrib读取GRIB数据是基本不可能实现了。

二、Windows下间接读取GRIB数据方法

后来通过大量的百度,还是找到了在Windows下读取GRIB数据的方法:一种是在Cygwin中安装pygrib,将pygrib的方法编译成读取GRIB的exe;另一种是通过一个第三方的程序wgrib2,先用wgrib2把数据读存到txt,然后再用python读取txt文件。

首先尝试了Cygwin,pygrib成功编译出了exe,但是无法运行,感觉Cygwin稍微复杂,所以我没有继续研究这一种方法,直接转向第二种方法。

1.wgrib2

wgrib2是由NCEP开发的一个功能强大的命令行工具,用于读取、创建和修改GRIB2文件。它是原有支持GRIB1编码的wgrib程序的延续,可以完成GRIB2的编码、解码,插值、修改投影方式、修改经纬度范围和要素提取等功能。wgrib2作为GrADS软件包中的一个工具,用户可以通过安装GrADS获得该软件,也可以通过访问它的官网获得最新的源码 进行编译。由于新版的wgrib输出数据之间没有分隔符,所以我找了一个之前的版本,输出后每个数据占一行。本文中使用的wgrib

wgrib2命令参数

在cmd中直接运行wgrib.exe可得到如何使用的帮助信息。

Portable Grib decoder for NCEP/NCAR Reanalysis etc.

it slices, dices v1.7.3.1 (8-5-99) Wesley Ebisuzaki

usage: /cygdrive/d/wgrib/wgrib [grib file] [options]

Inventory/diagnostic-output selections ;输出目录或诊断结果

-s/-v short/verbose inventory ;简短/详细目录

-V diagnostic output (not inventory ;输入诊断

(none) regular inventory ;默认目录

Options ;选项

-PDS/-PDS10 print PDS in hex/decimal ;输出16/10进制PDS

-GDS/-GDS10 print GDS in hex/decimal ;输出16/10进制GDS

-verf print forecast verification time ;输出预测验证时间

-ncep_opn/-ncep_rean default T62 NCEP grib table ;默认为T62_NCEP GRIB数据表

-4yr print year using 4 digits ;输出4位数字的年份

Decoding GRIB selection ;GRIB解码选项

-d [record number|all] decode record number ;解码指定编号数据

-p [byte position] decode record at byte position ;解码所指定的二进制位置数据

-i decode controlled by stdin (inventory list) ;按目录列表解码

(none) no decoding ;不解码

Options ;选项

-text/-ieee/-grib/-bin convert to text/ieee/grib/bin (default) ;将解码数据转换成text/ieee/grib/bin格式的数据

-nh/-h output will have no headers/headers (default) ;是否包含标题头

-H output will include PDS and GDS (-bin/-ieee only) ;输出是否包含PDS和GDS

-append append to output file ;在输出文件上添加而不是替换

-o [file] output file name, 'dump' is default ;输出文件名

2.使用os.system在Python中执行Windows命令行程序wgrib

import os

os.system(os.path.abspath('.')+'\wgrib\wgrib.exe '+gribfilename+' -d 1 -text -nh -o '+outfilename)

这样就可以在指定目录找到输出的txt文件

3.将txt文件中的数据转换成数组

原数据是37*37的数组,而输出的数据是每个数据占一行,所以需要进行一下转换

f=open(outfilename,'r')

grds=f.read().strip()

grds=grds.split('\n')

data= np.array(grds)

data.resize(37,37)

data= data.astype(float)

以上就是Windows下Python读取GRIB数据的完整方法,希望可以帮到需要的朋友

python批量读取grib_Windows下Python读取GRIB数据相关推荐

  1. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸

    使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件.清除缓存文件.解救C盘.拒绝C盘爆炸 目录

  2. Python批量替换目录下文件后缀脚本实例

    本篇文章主要讲解Python批量替换文件目录下的后缀文件的方法. 日期:2021年12月25日 作者:任聪聪 使用效果 代码实例 import os import random list_nums = ...

  3. python读取c盘中的csv文件-python读取当前目录下的CSV文件数据

    在处理数据的时候,经常会碰到CSV类型的文件,下面将介绍如何读取当前目录下的CSV文件,步骤如下 1.获取当前目录所有的CSV文件名称: #创建一个空列表,存储当前目录下的CSV文件全称 file_n ...

  4. python批量复制文件问题,python 批量复制不同目录下的文件

    python 批量复制不同目录下的文件 #!/usr/bin/env python #coding=UTF-8 #author aping import os,sys,shutil,time impo ...

  5. Halcon 采集助手批量文件夹下图像读取

    Halcon图像读取 利用read_image算子读取图像 算子read_ image(:Image:FileName:)中 Image为读取的图像变量名称, FileName为图像文件所在的路径, ...

  6. python批量导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  7. linux下载哪个python版本-修改linux下python的默认版本

    linux下python版本默认为python2.7,下面将通过操作在linux系统下修改python的默认版本. 本文linux系统使用的是ubuntu19. 操作: 1.在shell下输入pyth ...

  8. wps python 自动化_请教下 Python 高手,如何用 Python 自动化操作 Excel?

    最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!! 但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用 ...

  9. python批量上传pdf,Python 操作 PDF 的几种方法

    以下文章来源于早起 Python ,作者陈熹 作者 | 陈熹 来源 | 早起 Python(ID:zaoqi-python) 头图 | CSDN 下载自视觉中国 前言 大家好,有关 Python 操作 ...

最新文章

  1. 中科大京东最新成果:让AI像真人一样演讲,手势打得惟妙惟肖
  2. linux pmap命令,Linux pmap 命令用法详解-Linux命令大全(手册)
  3. linux——vim命令详细说明
  4. java面向对象之封装,java面向对象之封装-Go语言中文社区
  5. nth_element
  6. 最新报告:我国博士研究生累计招生已近150万!延毕率逐年上升
  7. 来及Java空间的传送门2
  8. opencv图像分析与处理(16)- 图像压缩中的编码方法:LZW编码
  9. Java 二叉树完整代码(递归迭代)
  10. 在EXCEL中玩扫雷
  11. VBlog项目代码理解之前后端交互
  12. 百寸大屏搭配高清画质,极米NEW Z6X轻松打造沉浸式家庭影院
  13. CocosCreator快速接入bugly
  14. win7桌面图标箭头怎么去掉
  15. strut处理页面请求过程
  16. Visual C++游戏编程基础之透明半透明效果
  17. 如何在 Windows 中快速查找文档
  18. android接入支付宝自动续费,APP是如何实现自动续费的?
  19. upc组队赛16 GCDLCM 【Pollard_Rho大数质因数分解】
  20. 在windows的命令行窗口打开.ipynb文件

热门文章

  1. 单利 java_关于单利模式的几种实现方式
  2. 导弹追踪问题数学建模matlab
  3. 关于OpenCV for Python入门-图片和摄像头显示
  4. 苹果是如何成就帝国的?
  5. 谈谈这两年在创业公司的经历
  6. 好玩的API调用之---天气预报的API调用与爬虫
  7. LeetCode 91. 解码方法 Java/Python
  8. win10下解压方式安装MySQL5.7.18
  9. MySQL 应用笔记
  10. MPLS总部分部共用AS架构案例