爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

MeteoInfoLab脚本汇总贴

  [复制链接]

新浪微博达人勋

发表于 2020-5-8 11:29:21 | 显示全部楼层
MeteoInfo 发表于 2020-5-7 20:02
参考这里:http://www.meteothink.org/docs/meteoinfolab/userguide/data_tutorial.html

谢谢王老师,差不多弄出了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-9 08:40:48 | 显示全部楼层
王老师您好,麻烦您有空帮忙看一下脚本哪里写的有什么问题,画出来的垂直剖面图和grads区别很大,经纬度和时间选取没问题,数据分辨率是0.125度的。第一张meeoinfo,第二张是grads,画的变量是相对湿度(填色区域)。
f = addfile(r'D:\script_and_date\date\yanglie\NO16_UTC_2018-07-20-0000-to-2018-07-23-1800.nc')
#比湿
r=f['r'][8:12,'875:300','38.47','106.2']
r = r.T
lev1 = r.dimvalue(0)
lev1=lev1[::-1]
lev2= meteo.p2h(lev1)
levels = []
for j in range(0, len(lev1)):
    levels.append('%i' % lev1[j])
   
r.setdimvalue(0,lev2)
levs = arange(70,100,10)
cols = makecolors(len(levs)+1,cmap='suyang')
cols[0]='w'
layer = contourf(r,levs,colors=cols)
colorbar(layer)
ylim(1230.5, 9187)
yticks(lev2,levels)
meteoinfo.png
时间高度.PNG
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-9 14:56:32 | 显示全部楼层
风格而才 发表于 2020-5-9 08:40
王老师您好,麻烦您有空帮忙看一下脚本哪里写的有什么问题,画出来的垂直剖面图和grads区别很大,经纬度和 ...

很难看出来,你可以把数据文件传上来我测试一下。如果太大也可以加入MeteoInfo QQ群上传文件。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-12 15:12:55 | 显示全部楼层
本帖最后由 风格而才 于 2020-5-14 10:41 编辑
MeteoInfo 发表于 2020-5-9 14:56
很难看出来,你可以把数据文件传上来我测试一下。如果太大也可以加入MeteoInfo QQ群上传文件。

谢谢王老师,问题我自己仔细想了一下,感觉应该少了往点上差值这一步,我自己尝试差值画了一下,写法不知道对不对,图画出来还是不对,qq群我有在,数据有一个G,不知道能不能把数据直接传上去。(脚本已贴)
  1. f = addfile(r'D:\script_and_date\date\yanglie\NO16_UTC_2018-07-20-0000-to-2018-07-23-1800.nc')
  2. lev1 = f['level'][:]
  3. tt = arange(0,16)
  4. tdata=[]
  5. #点差值
  6. for i in arange(16):
  7.     for j in lev1:
  8.         j = str(j)
  9.         x = 106.2
  10.         y = 38.47
  11.         data = f['r'][i,j,'30:40','100:110']
  12.         data_inter = interp2d(data, x, y)
  13.         #print(data_inter[0])
  14.         tdata.append(data_inter)      
  15. tdata=array(tdata)
  16. data = tdata.reshape((14, 16))
  17. #时间轴   
  18. sdate = datetime.datetime(2018, 7, 20, 0, 0) #根据时间改
  19. edate = datetime.datetime(2018, 7, 23, 18, 0) #根据时间改
  20. date = []
  21. while(sdate <= edate):
  22.     date.append(sdate)
  23.     sdate = sdate + datetime.timedelta(hours=6)
  24. timstrs = []
  25. for tim in date:
  26.     timstrs.append(tim.strftime('%d/%H:%M'))
  27. #高度转化      
  28. lev1=lev1[::-1]
  29. lev2= meteo.p2h(lev1)
  30. levels = []
  31. for j in range(0, len(lev1)):
  32.     levels.append('%i' % lev1[j])   
  33. levs = arange(70, 110, 10)
  34. cols = makecolors(len(levs)+1,cmap='suyang')
  35. cols[0]='w'
  36. layer = contourf(tt, lev2, data, levs,colors=cols)

  37. xticks(tt, timstrs, rotation=0)
  38. colorbar(layer)
  39. #ylim(118.8, 16249.5)
  40. yticks(lev2,levels)
复制代码

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

使用道具 举报

新浪微博达人勋

发表于 2020-5-29 09:06:48 | 显示全部楼层
本帖最后由 药草 于 2020-5-29 09:28 编辑

@mofangbao     站点插值成格点的绘图,我试过了,没有问题,就是我改了几个极值,我看极值没有显示和那个radius有关系吗?我知道用cressman需要调整多个插值半径,用idw应该没有问题啊,我感觉如果用代码先插值然后用grads绘图或者用surfer应该不会出这种问题,是否是我写的不对
这是我的代码
data='d://2.txt'
#Read station name and lon/lat
table = readtable(data, delimiter=',',format='%5f%5f%1f')
lon = table['lon']
lat = table['lat']
pm = table['value']

#To grid data
x = arange(113, 121, 0.05)
y = arange(34, 43, 0.05)
gtemp,gx,gy = griddata((lon, lat), pm, xi=(x, y), method='idw',radius=3)

axesm()

#levs = [0.1, 10,  25, 50, 100, 250]
#cols = [(255,255,255),(61,186,61),(166,242,143),(97,184,255),(0,0,255),(250,0,250),(128,0,64)]
levs = [0.1, 1, 2, 5, 10, 20, 25, 50, 100]
cols = [(255,255,255),(170,240,255),(120,230,240),(200,220,50),(240,220,20),(255,120,10),(255,90,10), \
    (240,40,0),(180,10,0),(120,10,0)]

#deng zhi mian    edgecolor='b'
layer = contourfm(x, y, gtemp,levs,colors=cols,smooth=True,alpha=1)

#zhan zhi
layer.addfield('value', 'string', pm)
layer.addlabels('value', fontsize=14, yoffset=15)

#maskout
masklayer(mlayer, [layer])
xlim(113, 120)
ylim(35.8, 43)
#legend
colorbar(layer)




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

使用道具 举报

新浪微博达人勋

发表于 2020-6-10 16:02:03 | 显示全部楼层
王老师,能不能发布一个MI读取NCEP_FNL的grib2数据集,提取某一给定经纬度的格点(例如东经117度,北纬35度)的风速u/v分量的程序?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-10 21:14:28 | 显示全部楼层
guo066600 发表于 2020-6-10 16:02
王老师,能不能发布一个MI读取NCEP_FNL的grib2数据集,提取某一给定经纬度的格点(例如东经117度,北纬35度 ...

可以参考这里:http://www.meteothink.org/docs/m ... /data_tutorial.html
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-12 08:17:22 | 显示全部楼层
王老师,请问有没有将读出的FNL数据(array类型)写出到txt或csv的相关帖子?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-12 08:54:41 | 显示全部楼层
guo066600 发表于 2020-6-12 08:17
王老师,请问有没有将读出的FNL数据(array类型)写出到txt或csv的相关帖子?

参考这里:http://www.meteothink.org/docs/m ... t.midata.asciiwrite
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-12 09:57:26 | 显示全部楼层
王老师,按照您说的方法可以将单个变量的array写入txt,如果一次读取两个变量,甚至还想在每行数据前加上文件名,语句如下:asciiwrite('D:/Temp/test_asciisave.txt',pblh,u,format='%-10.2f,%-10.2f',delimiter='\n')报错信息如下:
Traceback (most recent call last):
  File "<string>", line 24, in <module>
  File "D:\ProgramData\MeteoInfo_2.2\MeteoInfo\pylib\mipylib\dataset\midata.py", line 534, in asciiwrite
    ArrayUtil.saveASCIIFile(fn, data.asarray(), colnum, format, delimiter)  
TypeError: saveASCIIFile(): 3rd arg can't be coerced to int

请问是每次只能将单个变量写入一个txt吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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