- 积分
- 32392
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-12-11
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 chongzika 于 2018-4-19 21:39 编辑
具体绘图脚本来自:http://wrf-python.readthedocs.io/en/latest/plot.html
数据见附件
##########具体错误如下:
bm = get_basemap(temp)from netCDF4 import Dataset
ValueError: 'var' object does not contain coordinate attributes
主要是我的数据里面的变量有经纬度变量,但是绘图使用变量没有坐标属性,似乎没有和坐标关联起来。
ncl可以通过 var@lat2d = lat2d var@lon2d = lon2d重新赋值,但是python不知道怎么操作,前来求教!
###############################具体脚本:from netCDF4 import MFDataset
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
from wrf import getvar, interplevel, to_np, get_basemap, latlon_coords
ncfile1 = Dataset('mode_obj.nc','r')
# 不清楚怎么直接向ncl一样添加坐标信息,就直接新建了数据文件,然后创建变量
data = Dataset('./data.nc', 'w', format='NETCDF4_CLASSIC')
var = ncfile1.variables['fcst_clus_id']##绘图需要的变量
latf = ncfile1.variables['lat']##经纬度变量
lonf = ncfile1.variables['lon']
nlats = len(ncfile1.dimensions["lat"])
nlons = len(ncfile1.dimensions["lon"])
lat = data.createDimension("lat", nlats)###重新创建好像不行
lat = latf
lon = data.createDimension("lon", nlons)
lon = lonf
latitudes = data.createVariable('latitude', np.int32,('lat','lon'))
print(latitudes)
latitudes[:]=latf[:]
#print(latitudes)
longitudes = data.createVariable('longitude', np.int32,('lat','lon'))
longitudes[:] = lonf[:]
temp = data.createVariable('temp', np.int32,('lat','lon'))
temp[:]=var[:]
# Get the lat/lon coordinates
#lats, lons = latlon_coords(temp)
# Get the basemap object
bm = get_basemap(temp)#####
# Create the figure
fig = plt.figure(figsize=(12,9))
ax = plt.axes()
# Convert the lat/lon coordinates to x/y coordinates in the projection space
x, y = bm(to_np(lonf), to_np(latf))
# Add the 500 hPa geopotential height contours
#我的数据是mask后的数据,只有-1,1,2,三个值,其他都是缺省
levels = [-1,0,1,2]
contours = bm.contour(x, y, to_np(temp), levels=levels, colors="black")
plt.clabel(contours, inline=1, fontsize=10, fmt="%i")
# Add the wind speed contours
plt.savefig('a.png')
|
|