netcdf数据在matplotlib Basemap出图

netcdf是一种数据格式;

netcdf的介绍网址,参见百度百科:https://baike.baidu.com/item/netCDF/6000434

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

matplotlib的介绍网址,参见百度百科:

https://baike.baidu.com/item/Matplotlib/20436231?fr=aladdin

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

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

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

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

#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import scipy.ndimage
from mpl_toolkits.basemap import Basemap, cm
import netCDF4 as nc
import 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()

注:使用时,请去掉所有注释,容易报错

在这里插入图片描述

关注公众号,多多支持
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值