Python wrfout文件提取气象站点数据

一、数据读取

import numpy as np
import datetime
from wrf import getvar, ALL_TIMES, ll_to_xy, interplevel, to_np
import matplotlib.pyplot as plt
import netCDF4 as nc
wrfout_dir = "./data/wrfout_d02_2017-08-22_12"
wrfout     = nc.Dataset(wrfout_dir, mode="r")

1.1 查看和获取变量

获取所有变量名

wrfout.variables.keys()

获取单个数据

wrfout.variables["T2"]
wrfout['T2']

1.2 查看和获取维度

wrfout.dimensions
wrfout.dimensions['south_north']
wrfout.dimensions['south_north'].size

1.3 质量点和跳点mass/stag

wrfout.dimensions['south_north'].size
wrfout.dimensions['south_north_stag'].size

1.4 getvar函数

lat2D      = getvar(wrfout, "lat",     )# units: decimal degrees
lon2D      = getvar(wrfout, "lon",   meta=False  )  # units: decimal degrees
times      = getvar(wrfout, "times", meta=False, timeidx=ALL_TIMES) 

#读取3维u,v, 位势高度和地形高度,特殊属性用getvar来读取
ua     = getvar(wrfout, "ua" , timeidx=ALL_TIMES, meta=False, units="m s-1")
va     = getvar(wrfout, "va" , timeidx=ALL_TIMES, meta=False, units="m s-1")
height = getvar(wrfout, "z"  , timeidx=ALL_TIMES, meta=False, units="m"    )
ter1   = getvar(wrfout, "ter", timeidx=0,         meta=False, units="m"    )
ter2   = getvar(wrfout, "ter", timeidx=0,         meta=True , units="m"    )

# U10 这种本来就有的属性,可以直接按照nc文件的方式来读取
u10 = wrfout.variables['U10'][:]
v10 = wrfout.variables['V10'][:]
wspd_10m = [] 





二、站点数据提取


lonSta1 = 114.1  # TC中心站点经纬度
latSta1 = 21.8

lonSta2 = 116.0 # 外围站点经纬度
latSta2 = 22.0

#返回的iSta, jSta为X,Y方向的索引
iSta1, jSta1 = ll_to_xy(wrfout, latSta1, lonSta1, timeidx=0, meta=False)
iSta2, jSta2 = ll_to_xy(wrfout, latSta2, lonSta2, timeidx=0, meta=False)
iSta1, jSta1
#10m风速的提取
wspd_10m_sta1 = [] 
wspd_10m_sta2 = [] 
for it in range(len(times)):
    u10_it = u10[it, jSta1, iSta1]
    v10_it = v10[it, jSta1, iSta1]
    wspd_10m_sta1.append(np.sqrt(u10_it**2 + v10_it**2))
    
    u10_it = u10[it, jSta2, iSta2]
    v10_it = v10[it, jSta2, iSta2]
    wspd_10m_sta2.append(np.sqrt(u10_it**2 + v10_it**2))





三、数据可视化

# wrf time转为北京时
def wrftime_to_CST_date(wrftime):
    datestr_wrf  = str(wrftime)[0:13] # 2017-08-22T12, UTC
    datetime_wrf = datetime.datetime.strptime(datestr_wrf, '%Y-%m-%dT%H')
    datetime_CST = datetime_wrf + datetime.timedelta(hours=8)
    datestr_CST  = datetime_CST.strftime('%Y-%m-%d_%H')
    return datestr_CST
x = range(len(times))
plt.figure(figsize=(8,6),dpi=100)
plt.plot(x, wspd_10m_sta1,    linewidth=2.0, color='red',   label='sta1'   )
plt.plot(x, wspd_10m_sta2,    linewidth=2.0, color='blue',  label='sta2'   )

plt.legend(fontsize=20)

init_date_cst = wrftime_to_CST_date(times[0])
title_name = ' init_time: '+ init_date_cst 
plt.title(title_name, fontsize=20)
plt.xlabel('time(hour)', fontsize=20)
plt.ylabel('wind speed(m/s)', fontsize=20)
fig_name = 'WRF_station_wind_'+init_date_cst+'.png'
plt.savefig(fig_name)

在这里插入图片描述

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 你好,可以使用Python中的pandas库来提取Excel文件数据。具体操作可以参考以下代码: ```python import pandas as pd # 读取Excel文件 df = pd.read_excel('文件路径') # 查看数据 print(df.head()) ``` 其中,'文件路径'需要替换为你要读取的Excel文件的路径。另外,如果Excel文件中有多个工作表,可以使用以下代码来指定要读取的工作表: ```python # 读取指定工作表 df = pd.read_excel('文件路径', sheet_name='工作表名称') ``` 同样,'工作表名称'需要替换为你要读取的工作表的名称。希望能帮到你! ### 回答2: Python是一种高级编程语言,它提供了丰富的库和模块,可以用来处理各种任务,包括提取Excel文件数据。 在Python中,有一个广泛使用的库叫做pandas,它提供了各种方法和功能,可以轻松地将Excel文件中的数据提取出来。使用pandas库,我们可以首先导入数据,然后对数据进行各种操作。 首先,我们需要安装pandas库。在安装完成之后,我们就可以开始使用它了。首先,我们需要导入pandas库,并使用read_excel方法读取Excel文件。这个方法可以接受Excel文件的路径作为参数,并返回一个包含文件数据的DataFrame对象。接下来,我们可以使用DataFrame对象的方法来处理数据,例如筛选、排序和聚合等。 除了pandas库,还有其他一些库也可以用来提取Excel文件数据。例如,xlrd库可以用来读取Excel文件,openpyxl库可以用来读取和写入Excel文件。这些库都提供了相应的方法和功能,可以根据需要进行选择和使用。 总的来说,Python提供了多种方式和工具来提取Excel文件数据。无论是使用pandas库还是其他类似的库,都可以根据具体的需求选择最适合的方法。通过使用Python,我们可以轻松地从Excel文件提取数据,并进行灵活的处理和分析。 ### 回答3: Python提取Excel文件数据可以使用多种方法,下面以使用pandas库为例进行说明。 首先,需要通过pip命令安装pandas库,可以执行以下命令进行安装: ``` pip install pandas ``` 然后,需要导入pandas库并读取Excel文件,如下所示: ```python import pandas as pd # 读取Excel文件 data = pd.read_excel('文件路径/文件名.xlsx') ``` 读取Excel文件后,可以对数据进行一系列操作,例如查看数据的前几行: ```python # 查看前5行数据 print(data.head()) ``` 还可以选择指定的列进行提取: ```python # 提取指定列的数据 column_data = data['列名'] ``` 若需要提取多个列的数据,可以在列名中传入一个列表: ```python # 提取多个列的数据 columns = ['列名1', '列名2', '列名3'] column_data = data[columns] ``` 此外,还可以根据条件提取数据: ```python # 根据条件提取数据 condition_data = data[data['列名'] > 10] ``` 提取数据后,可以将数据保存为新的Excel文件: ```python # 将数据保存为Excel文件 column_data.to_excel('保存路径/保存文件名.xlsx', index=False) ``` 以上就是使用Python提取Excel文件数据的简单介绍。当然,还有其他库和方法可以实现相同的功能,选择适合自己的方法进行数据提取即可。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值