材料:Win10+Python3.8+wgrib/wgrib2

目录

  • ①Grib/Grib2数据转为CSV/NC格式数据
  • ②NC格式数据转为GeoTiff格式数据

①Grib/Grib2数据转为CSV/NC格式数据

什么是NC格式数据:

NC文件即NetCDF (Network Common Data Form),是一种通用的数据存储格式。广泛用于存储地学、大气科学、海洋科学等一系列多维数据,可封装时间、经度、纬度、降水、温度等多个维度数据,数据结构清晰易读,可以很方便的提取、应用。


说明:

windows下没有api可以直接读grib或者grib2的数据。可以下载wgrib或者wgrib2来读grib数据。wgrib可以读grib1格式(.grb)的数据,wgrib2可以读grib2格式(.grib)的数据。

下载工具:

wgrib,下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib
wgrib2,下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2

嫌下载慢的,直接点这里下载wgrib2(win10-64位),提取码:barb


操作步骤: ①同时按下windows和R键,输入cmd,点击确定;


②输入wgrib2和待处理的数据,依据wgrib相关命令参数查看信息和处理;

这里介绍常用的几个命令:

1.-v0命令查看数据目录 【wgrib2.exe grib2数据 -v0】

wgrib2 grbfile -v0

2.-v命令查看属性【wgrib2.exe grib2数据 -v】

wgrib2 grbfile -v


3.采用匹配的方式,将grib2数据转换为.csv数据;
通过 -v命令查看目录可以看到有一个表示属性的字段“TMP”–温度;
新建一个csv文件以TMP作为字段名,使用 -match命令进行匹配;

存储为.csv格式命令【wgrib2.exe grib2数据 -match ‘TMP’ -csv csv存储路径】

wgrib2 grbfile -match 'TMP' -csv XX.csv


4.将grib2数据转换为.nc数据命令【wgrib2.exe grib2数据 -netcdf nc存储路径】

wgrib2 grbfile -netcdf xx.nc


②NC格式数据转为GeoTiff格式数据


Python处理nc文件需要用到的库:

netCDF4用于读取NC文件;
osgeo的子库gdal和osr,前者用于实现转换和栅格编辑功能,后者可用于确定地理坐标系和地图投影。


Python程序–查看NC文件信息

import netCDF4 as nc
import numpy as npitem = r'C:/Users/T480/Desktop/nc/tmp.nc'#选取一个nc文件路径
data = nc.Dataset(item)print(data) # 返回data的数据类型,<class 'netCDF4._netCDF4.Dataset'>
print('{:-<100}'.format('----'))print(data.variables) # 了解变量的基本信息
print('{:-<100}'.format('----'))for i in data.variables.keys():# 返回data中的变量名称print(i)
print('{:-<100}'.format('----'))print(data.variables) # 了解变量的基本信息
print('{:-<100}'.format('----'))print(data.variables['lon']) # 了解某一变量如“lon”(经度)的基本信息
print('{:-<100}'.format('----'))

Python程序–NC数据转GeoTiff数据

import netCDF4 as nc
import numpy as np
from osgeo import gdal,osr #读取数据值
item = r'C:/Users/T480/Desktop/nc/tmp.nc'#选取一个nc文件路径
outTif='C:/Users/T480/Desktop/tiff/tmp09.tif'#输出的tif文件路径data = nc.Dataset(item)
lat= data.variables['latitude'][:]
lon= data.variables['longitude'][:]
time= data.variables['time'][:]
TMP_2maboveground=data.variables['TMP_2maboveground'][0,:,:]#即生成 某天 全纬度、经度范围 图像TMP_2maboveground=np.asarray(TMP_2maboveground)-273.15#数据类型转换,开尔文温度转为摄氏温度
TMP_2maboveground[np.where(TMP_2maboveground == -33321)] = np.nan #异常值处理#影像的空间坐标信息
LonMin,LatMax,LonMax,LatMin=[lon.min(),lat.max(),lon.max(),lat.min()]#左上和右下
Lon_Res=(LonMax-LonMin)/(float(len(lon)))
Lat_Res=(LatMax-LatMin)/(float(len(lat)))#创建tiff影像
TMP_ds=gdal.GetDriverByName('GTiff').Create(outTif,len(lon),len(lat),1,gdal.GDT_Float32)#设置影像的显示范围
geotransform=(LonMin,Lon_Res,0,LatMax,0,-Lat_Res)
TMP_ds.SetGeoTransform(geotransform)
srs=osr.SpatialReference()
srs.ImportFromEPSG(4326)#定义输出坐标系为WGS84
TMP_ds.SetProjection(srs.ExportToWkt()) #给新建图层赋予投影信息#这里通常选取的是左上角点的坐标(lonmin,latmax),但通常情况下图像会上下颠倒,原因是NC数据存储时是按照经纬度均从小到大进行存储的,而在创建tiff时是从经度从小到大,维度从大到小进行存储----即,从左下角点开始读取数据,放到左上角点开始存储#影像翻转,恢复原样
for i in range(len(lat)):tmp=len(lat)-1-ifor j in range(len(lon)):TMP_2maboveground01[i,j]=TMP_2maboveground[tmp,j] #数据写出
TMP_ds.GetRasterBand(1).SetNoDataValue(-9999)
TMP_ds.GetRasterBand(1).WriteArray(TMP_2maboveground01) # 将数据写入内存
TMP_ds.FlushCache() # 将数据写入硬盘
TMP_ds=None        

windows下气象grib/grib2数据转Tiff格式输出相关推荐

  1. Windows下MySQL数据库更改数据存储位置

    Windows下MySQL数据库更改数据存储位置 1.创建一个新的存储数据文件 比如,我创建了一个文件  E:\MySQL_Service ,用来放mysql数据. 2.找到配置文件my.ini和my ...

  2. windows下C++读取串口数据

    windows下C++读取串口数据 这里提供一个类: SerialPort.h #pragma once #ifndef SERIALPORT_H_ #define SERIALPORT_H_ #in ...

  3. python读取grib2数据_python2 解析 Grib/Grib2数据

    python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...

  4. windows下将文件压缩成.tar.gz格式

    windows下将文件压缩成.tar.gz格式 最简单的方法,用7-ZIP压缩两次即可.第一次压缩成tar格式,第二次再将第一次的压缩的.tar文件再次用7-ZIP压缩成gzip格式,最终得到的文件就 ...

  5. python在windows和linux系统下批量读取grib2数据

    python在windows系统和linux系统读取grib或者grib2数据所用的库不一样,下面分别细说. 1.python在linux系统下批量读取grib或grib2数据 linux系统对pyt ...

  6. windows下磁盘IO性能数据评测

    windows下如何查看磁盘IO性能 http://www.51testing.com/?uid-211722-action-viewspace-itemid-233892 服务器性能瓶颈如何判断.C ...

  7. 蓝牙 - 如何在Windows下抓取蓝牙数据

    首先,要在Windows上安装一个工具:Bluetooth Virtual Sniffer (btvs.exe). Microsoft Bluetooth Test Platform - BTVS - ...

  8. Python读取hdf文件并转化为tiff格式输出

    目录 1.Python3读取hdf文件 2.使用Python2读取hdf文件 3. 如何使Python2和3兼容 3.1 修改Python2.7的名字 3.2 pip更新 3.2 使用pip2下载py ...

  9. C语言实例(五)素数_数据按不同格式输出_计算器

    C语言实例(36~40) 36.计算一个数是否可为两个素数之和 (1)代码 (2)运行结果 37.实现简单的计算器 (1)代码 (2)运行结果 38.将 1~100 的数据以 10x10 矩阵格式输出 ...

最新文章

  1. react 日期怎么格式化_手写React的Fiber架构,深入理解其原理
  2. Java多线程(2)—线程同步
  3. 2021年5月信息系统项目管理师上午真题
  4. Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现
  5. Linux和Windows下使用printf的差别
  6. 深入浅出项目管理——例子
  7. java override 用法_Java中@Override的作用
  8. python学习之路-书籍推荐
  9. ARMLINUX学习笔记(二)
  10. mysql查询php输出表格_MySql数据库查询结果用表格输出PHP代码示例_PHP教程
  11. excel函数调用其他sheet单元格
  12. Invalid maximum heap size: -Xmx
  13. 一文了解数据库索引:哈希、B-Tree 与 LSM
  14. java线程池的好处_Java 线程池的使用好处
  15. JUC主要包含哪些功能?
  16. 架构师之路--康奈尔笔记法
  17. 蛙人高频交易拆单策略—蛙人高频软件结构及使用说明
  18. navicat的使用技巧
  19. 【数据结构】循环链表(circular linked list) 双向链表(doubly linked list)
  20. 零空间、点积与对偶性

热门文章

  1. LA 4394 String painter 区间DP -
  2. python反爬虫原理与绕过实战pdf-antispider
  3. 软件测试类型按开发阶段的划分
  4. Ajax 传递数组、表单+
  5. 《Linux操作系统 - RK3288开发笔记》第2章 G-3288-02开发环境搭建
  6. 微信小程序---实现tab选项卡
  7. 云的基本概念(公有云、私有云、 IaaS、PaaS、SaaS)
  8. 多模态机器学习简述(Guide to Multimodal Machine Learning)
  9. MobIM 使用总结
  10. 【从RL到DRL】深度强化学习基础(四)——策略梯度中的Baseline,Reinforce与A2C的对比