爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 40300|回复: 45

[求助] 绘制风场有压力!

[复制链接]

新浪微博达人勋

发表于 2014-2-23 20:41:59 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
目前有两个风场的nc文件,一个是uwnd.nc,一个是vwnd.nc,分别表示两个方向的风场,每个文件都有各自的经纬度坐标(lon/lat)。可是绘图遇到困境了,函数quiver(lon,lat,u,v)没法写
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-2-24 09:52:41 | 显示全部楼层

顺便把程序传上来:
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
u=Dataset(r'C:/Users/Administrator/Desktop/uwnd.2010.nc')
v=Dataset(r'C:/Users/Administrator/Desktop/vwnd.2010.nc')
uwnd=u.variables['uwnd'][0][0][:]
vwnd=v.variables['vwnd'][0][0][:]
m=Basemap(projection='cyl',llcrnrlat=0,urcrnrlat=70,llcrnrlon=50,urcrnrlon=150)
m.drawcountries()
m.drawcoastlines()
lat=u.variables['lat'][:]
lon=u.variables['lon'][:]
index1=np.logical_and(lon>=50,lon<=150);index2=np.logical_and(lat>=0,lat<=70)
lons=lon[index1];lats=lat[index2]
u1=uwnd[index2,:]
u2=u1[:,index1]
v1=vwnd[index2,:]
v2=v1[:,index1]
nx,ny=np.meshgrid(lons,lats)
x,y=m(nx,ny)
m.quiver(x,y,u2,v2)
plt.show()
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2014-2-23 20:51:24 | 显示全部楼层
经纬度的步长是否一致?
如果一直可以先读进工作空间,然后在画图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-2-23 21:53:31 | 显示全部楼层
用grads很简单就能出来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2014-2-23 22:54:04 | 显示全部楼层
问题具体一些
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-2-24 08:32:31 | 显示全部楼层
发在python版里面 是用什么工具画  什么资料 具体一些啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-2-24 09:31:52 | 显示全部楼层
topmad 发表于 2014-2-24 08:32
发在python版里面 是用什么工具画  什么资料 具体一些啊

当然是python画了,用到的模块:netCDF4,numpy,Basemap
数据资料:
u分量 u=Dataset(r'C:/Users/Administrator/Desktop/uwnd.2010.nc')
获取u分量维度信息:u.dimensions
OrderedDict([(u'lon', <netCDF4.Dimension object at 0x01FEEBA0>), (u'lat', <netCDF4.Dimension object at 0x039ECE70>), (u'level', <netCDF4.Dimension object at 0x039ECEA0>), (u'time', <netCDF4.Dimension object at 0x039ECED0>)])
u分量的变量信息:u.variables
OrderedDict([(u'level', <netCDF4.Variable object at 0x039F00D0>), (u'lat', <netCDF4.Variable object at 0x039F0120>), (u'lon', <netCDF4.Variable object at 0x039F0170>), (u'time', <netCDF4.Variable object at 0x039F01C0>), (u'uwnd', <netCDF4.Variable object at 0x039F0210>)])
变量uwnd具体维度信息:u.variables['uwnd'].dimensions
(u'time', u'level', u'lat', u'lon')
我选取时间(time)、高度(level)都为第一组数据:u=u.variables['uwnd'][0][0][:]   #获得了uwnd的经纬度数据
#############################################################
v分量 v=Dataset(r'C:/Users/Administrator/Desktop/vwnd.2010.nc')
获取v分量维度信息:v.dimensions
OrderedDict([(u'lon', <netCDF4.Dimension object at 0x0396E300>), (u'lat', <netCDF4.Dimension object at 0x0396E330>), (u'level', <netCDF4.Dimension object at 0x0396E2D0>), (u'time', <netCDF4.Dimension object at 0x0396E390>)])
v分量的变量信息:v.variables
OrderedDict([(u'level', <netCDF4.Variable object at 0x039F0260>), (u'lat', <netCDF4.Variable object at 0x039F02B0>), (u'lon', <netCDF4.Variable object at 0x039F0300>), (u'time', <netCDF4.Variable object at 0x039F0350>), (u'vwnd', <netCDF4.Variable object at 0x039F03A0>)])
变量vwnd具体维度信息:v.variables['vwnd'].dimensions
(u'time', u'level', u'lat', u'lon')

我选取时间(time)、高度(level)都为第一组数据:v=v.variables['vwnd'][0][0][:]   #获得了vwnd的经纬度数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-2-24 09:35:12 | 显示全部楼层
river 发表于 2014-2-23 21:53
用grads很简单就能出来

对啊,GraDS我试了一下,很简单就出来了。不过我想尝试下python
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-2-24 09:49:32 | 显示全部楼层
kongfeng0824 发表于 2014-2-23 20:51
经纬度的步长是否一致?
如果一直可以先读进工作空间,然后在画图

哦,我试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-2-24 09:51:42 | 显示全部楼层
风场绘制出来了,虽然没有添加设置,有点粗糙:
figure_1.png
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表