温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何读取netcdf数据并在matplotlib Basemap上绘图

发布时间:2021-12-05 14:47:55 阅读:317 作者:小新 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要为大家展示了“如何读取netcdf数据并在matplotlib Basemap上绘图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何读取netcdf数据并在matplotlib Basemap上绘图”这篇文章吧。

netcdf是一种数据格式;

matplotlib是python中的一个画图插件;

使用python做地图效果的,是工作中的需要,气象数据一般都存在netcdf中,也没有深入学习python语言,只是按照要求达到了个实现效果。

下边的代码是详细列举了如何从netcdf中读取数据,在绘制在basemap地图上的效果;

python的开发环境和下载代码中的各种轮子,请百度搜索去部署,我也不熟,下边的代码是基于python2.7进行开发的,netcdf的样例数据从网上也能下载到; 

  #设置编码格式,引用所需要的各种类库

#coding=utf-8 import matplotlib.pyplot as pltimport numpy as npimport scipy.ndimagefrom mpl_toolkits.basemap import Basemap, cmimport netCDF4 as ncimport matplotlib.colors as colors#netcdf文件的路径设置,使用反向斜杠,和windows常用不一样filename="E:/git/grib2json/20171011/20171011-3KM_WEST.nc"#打开nc文件,从中按照变量获取数据,详细学习nc数据中的格式data=nc.Dataset(filename)lat= data.variables['XLAT'][:].squeeze()lon= data.variables['XLONG'][:].squeeze()pm25=data.variables['pm25'][:].squeeze()cutpm= pm25[20, 4, :, :]#初始化一个basemap的对象,设置坐标系为经纬度,后边是范围m = Basemap(epsg=4326,resolution='i',llcrnrlat=23,urcrnrlat=37,llcrnrlon=97,urcrnrlon=112)fig1 = plt.figure() x, y = m(lon, lat) # 初始化设置颜色级别,根据不同的值渲染不同颜色levels = [0, 35, 75, 115, 150, 250, 350, 500]myRBB = np.array([[153, 219, 231], [26, 161, 206], [0, 123, 217], [103, 255, 136], [10, 227, 50], [50, 244, 62],[228, 243, 62],[226, 151, 62]])cmap = colors.ListedColormap(myRBB / 255.0)norm = colors.BoundaryNorm(boundaries=levels, ncolors=len(levels))#根据以上的x\y\值数组,在地图上进行画图CS2 = m.contourf(x, y, cutpm,cmap=cmap,alpha=0.75)#画海岸线和国家边界m.drawcoastlines(linewidth=0.5)m.drawcounties(linewidth=0.3)plt.title('pm25', size=20)#加载个base自带的地图图片m.etopo()#显示绘画窗口plt.show()注:使用时,请去掉所有注释,容易报错

以下是效果图:

如何读取netcdf数据并在matplotlib Basemap上绘图

以上是“如何读取netcdf数据并在matplotlib Basemap上绘图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4599572/blog/4636873

AI

开发者交流群×