前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >基于python掩膜获取WRF所模拟的三江地区温度的平均值

基于python掩膜获取WRF所模拟的三江地区温度的平均值

作者头像
郭好奇同学
发布2021-07-30 15:09:44
发布2021-07-30 15:09:44
1.3K00
代码可运行
举报
文章被收录于专栏:好奇心Log好奇心Log
运行总次数:0
代码可运行

目的:应武大-气候的一位同学写的一个小功能的函数

原始

掩膜后

第一步导入需要的两个库

代码语言:javascript
代码运行次数:0
复制
import shapefile
from matplotlib.path import Path

第二步读取shpfile的边界信息

代码语言:javascript
代码运行次数:0
复制
shpFilePath = "ThreeRiversPlainAsOne/ThreeRiversPlainAsOne.shp"
listx=[]
listy=[]
test = shapefile.Reader(shpFilePath)
for sr in test.shapeRecords():
    for xNew,yNew in sr.shape.points:
        listx.append(xNew)
        listy.append(yNew)

第三步读取WRFOUT数据

代码语言:javascript
代码运行次数:0
复制
data = netCDF4.Dataset('wrfout_d01_2020-06-20_00_00_00', 'r')
lon = data.variables['XLONG'][0,:,:]
lat = data.variables['XLAT'][0,:,:]
T2 = data.variables['T2'][:]

第四步将lon和lat二维数据转为一维数据

代码语言:javascript
代码运行次数:0
复制
X = lon.ravel()
Y = lat.ravel()

第五步判断第四步中的经纬度度是否在shpfile中

代码语言:javascript
代码运行次数:0
复制
buffer_array = Path(np.array([listx,listy]).transpose()).contains_points(list(zip(X, Y)))

第六步将第五步中的一维数组转换为第三步中相同size的二维数组

代码语言:javascript
代码运行次数:0
复制
buffer_array.resize(lon.shape)

第七步将区域外的数值设置为缺失值,注意~为反函数

代码语言:javascript
代码运行次数:0
复制
T2 = np.where(buffer_array, T2, np.nan)
#T2 = np.where(~buffer_array, T2, np.nan)

第八步求取上述第七步中T2最大值、最小值、平均值、求和等等

代码语言:javascript
代码运行次数:0
复制
tmp = np.nanmax(T2)
tmp = np.nanmin(T2)
tmp = np.nanmean(T2)
tmp = np.nansum(T2)

整体写下来,最大的收获还是以前的心得---如何玩转数组。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 好奇心Log 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档