爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10025|回复: 2

[经验总结] NCL读取MICAPS的4类数据

[复制链接]
发表于 2020-4-22 11:54:09 | 显示全部楼层 |阅读模式

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

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

x
本想直接用《NCL代码分享-MICAPS第四类数据转NetCDF文件》里的方法的,毕竟“不要重复发明轮子”,结果发现不知道为什么下载下来的数据里面带有大量的空行,因而上面提到的帖子里的内容就无法直接使用了,不得已又“重复发明轮子”了。
  1. function readMicaps3ModelScalar(filename:string)
  2. begin
  3.   a = asciiread(filename, -1, "string")
  4.   ; 去头
  5.   asciiwrite("tmp.tmp", a(1:))
  6.   delete(a)

  7.   a = asciiread("tmp.tmp", -1, "float")
  8.   ; 删除临时文件
  9.   system("rm -rf tmp.tmp")

  10.   ; 时间
  11.   tunits = "hours since 1900-01-01 00:00:00"
  12.   t = cd_inv_calendar(a(0), a(1), a(2), a(3), 0, 0, tunits, 0)
  13.   period = (/a(4)/)

  14.   ; 层次
  15.   lvl = (/a(5)/)

  16.   ; 经纬度
  17.   m = fspan(a(8), a(9), toint(a(12)))
  18.   m@units = "degrees_east"
  19.   n = fspan(a(10), a(11), toint(a(13)))
  20.   n@units = "degrees_north"

  21.   ; 数据
  22.   dat = onedtond(a(19:), (/1, 1, 1, toint(a(13)), toint(a(12))/))
  23.   dat!0 = "fcst"
  24.   dat!1 = "period"
  25.   dat!2 = "level"
  26.   dat!3 = "lat"
  27.   dat!4 = "lon"
  28.   dat&fcst = t
  29.   dat&period = period
  30.   dat&level = lvl
  31.   dat&lat = n
  32.   dat&lon = m

  33.   return dat
  34. end



  35. begin
  36.   dir = systemfunc("ls dat/")

  37.   do i = 0, dimsizes(dir) - 1
  38.     a = readMicaps3ModelScalar("dat/" + dir(i))
  39.     printVarSummary(a)
  40.     delete(a)
  41.   end do
  42. end
复制代码
function的功能是传入数据文件的路径名,然后返回一个该4类数据对应的数组变量。

注1:考虑了万一以后会把多个起报时次、多个预报时效和多个预报层次拼接在一起的问题,返回的变量是个5维数组,依次是(起报时间,预报时效,层次,纬度,经度)。

注2:function中的“去头”是考虑到通常第一行会有一串数据说明的string,这串东西里面会有若干个数字,但是又暂时没找到什么方法跳过不读第一行,所以就暂时用了个临时文件tmp.tmp。

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
mofangbao + 10 + 2

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2020-5-13 15:12:17 | 显示全部楼层
谢谢,很有帮助!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-5-13 17:07:37 | 显示全部楼层
多的不说,肯定会用得到的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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