栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python气象可视化第二弹-黄河流域白化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python气象可视化第二弹-黄河流域白化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
    • 在学习了气象家园平流层的萝卜首发、晋陵小生优化的 maskout 模块白化功能之后。利用九大流域的shp文件,我对九大流域中黄河流域的降水分布进行了绘制。
  • 一、使用maskout程序包的要点?
  • 二、使用步骤
    • 1.引入库
    • 2.绘制黄河流域降水分布图
  • 总结


前言 在学习了气象家园平流层的萝卜首发、晋陵小生优化的 maskout 模块白化功能之后。利用九大流域的shp文件,我对九大流域中黄河流域的降水分布进行了绘制。 一、使用maskout程序包的要点?

maskout是比较python+cartopy实现白化功能的一个比较好用的子程序。(1)在应用的过程中要注意相关的shp文件应该是地理坐标系,如果不是的话要转化坐标系。(详情参考:如何使用arcmap转换shp文件坐标系)(2)注意选择合适的region,尽量选择具有代表性的record。
相应的maskout_hhriver里应该修改为下图所示:

二、使用步骤 1.引入库

代码如下(示例):

import os
import shapefile as shp
SHP = r'F:mapshpchina_shp'
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import Reader
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import numpy
import pandas as pd
import mask_hhriver
#设定新字体
2.绘制黄河流域降水分布图

代码如下(示例):

#设定新字体
from matplotlib.font_manager import FontProperties
lpfont = matplotlib.font_manager.FontProperties(fname='F:python可视化fontSimSun.ttf')
plt.rcParams.update({'font.size':16})

region=[95,120,32,42]
df=xr.open_dataset(r'E:testdatasetprecip.mon.mean.nc')
lat = df.lat
lon = df.lon
# lat = df['lat']  
# lon = df['lon'] 
pre0 = df['precip'] #含缺测值
pre1 = np.array(pre0)
pre_clim=np.nanmean(pre1,axis=0)
fig=plt.figure(dpi=600,figsize=(12,6))
proj=ccrs.PlateCarree()
ax = plt.axes(projection = proj)
ax.set_extent(region, crs = proj)
ax.set_xticks(np.arange(region[0], region[1] + 1, 5), crs = proj)
ax.set_yticks(np.arange(region[-2], region[-1] + 1, 2), crs = proj)
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False))
ax.yaxis.set_major_formatter(LatitudeFormatter())
# Add 黄河流域&干流shp
c11=ax.contourf(lon,lat,pre_clim,np.arange(0,3,0.01),extend='both',transform=ccrs.PlateCarree(),cmap='gist_rainbow')
ax.add_geometries(Reader(r'F:/mapshp/hhriver/jichu/黄河干流epsg4324.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=0.5)
clip=mask_hhriver.shp2clip(c11,ax,shpfile=os.path.join(SHP, 'China_nine_basinepsg4324.shp'),region=['Yellow River Basin'],proj= proj)
cbar=plt.colorbar(c11,shrink=0.75,aspect=20,fraction=.03,pad=0.02)   #aspect控制bar宽度,fraction控制大小比例,pad控制与图的距离
cbar.set_ticks(np.arange(0,3,0.3))            #设置colorbar范围和刻度标记间隔
cbar.ax.tick_params(labelsize=12, direction='in', right=False)
#出图
plt.savefig('prehh.png',dpi=600)
plt.show()


总结

最后还可以对图片进行润色,例如添加标题等等。参考气象水文科研猫发布的Python可视化中国区域地面气象要素驱动数据集—以黄河流域为例。基本实现了黄河流域的白化功能。

j

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号