爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
123
返回列表 发新帖
楼主: MeteoInfo

MeteoInfoLab脚本示例:计算温度平流

[复制链接]

新浪微博达人勋

发表于 2019-9-6 11:15:37 | 显示全部楼层
老师,我这边是打算用python做的,但是cdiff这个函数您是怎么实现的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-5 09:43:18 | 显示全部楼层
求助:按照老师的脚本,只改了数据,但是出现错误,请帮忙看看是怎么回事,谢谢
>>> run script...
Open data files...
Read data array...
Calculate...
Traceback (most recent call last):
  File "<iostream>", line 17, in <module>
  File "D:\MeteoInfo\pylib\mipylib\numeric\core\numeric.py", line 2184, in cdiff
    r = ArrayMath.cdiff(a.asarray(), dimidx)
TypeError: cdiff(): 2nd arg can't be coerced to int



脚本如下:
print 'Open data files...'
f_air = addfile('D:/nc/air.2015.nc')
f_uwnd = addfile('D:/nc/uwnd.2015.nc')
f_vwnd = addfile('D:/nc/vwnd.2015.nc')
print 'Read data array...'
tidx = 173     
t = f_air.gettime(tidx)
lidx = 0  
air = f_air['air'][tidx,lidx,::-1,:]
uwnd = f_uwnd['uwnd'][tidx,lidx,::-1,:]
vwnd = f_vwnd['vwnd'][tidx,lidx,::-1,:]
lon = f_air['lon'][:]
lat = f_air['lat'][::-1]
lon, lat = meshgrid(lon, lat)
# Calculate
print 'Calculate...'
dtx = cdiff(air, 'x')
dty = cdiff(air, 'y')
dx = cdiff(lon, 'x') * pi / 180
dy = cdiff(lat, 'y') * pi / 180
tadv = -1*((uwnd*dtx)/(cos(lat*pi/180)*dx)+vwnd*dty/dy)/6.37e6
#Plot
print 'Plot...'
axesm()
mlayer = shaperead('D:/Temp/map/country1.shp')
geoshow(mlayer, edgecolor='black')
layer = contourfm(tadv, cmap='grads_rainbow')
title('Temporature advection (' + t.strftime('%Y-%m-%d') + ')')
colorbar(layer)
xlim(0, 360)
ylim(-90, 90)

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-5 10:18:57 | 显示全部楼层
920daibingbing 发表于 2020-6-5 09:43
求助:按照老师的脚本,只改了数据,但是出现错误,请帮忙看看是怎么回事,谢谢
>>> run script...
Open  ...

脚本有些老旧,已经更新了1楼的脚本程序,你用新脚本试试。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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