- 积分
- 893
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-12-28
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最近在处理ecwmf的全球数据,下了38年的月数据,十几个变量,数据格式是nc。下载之后都是用grads2ascii转化为txt格式再继续用c语言进行下一步处理。结果,我被转出来的TXT文件里的“Printing Grid -- 10512 Values -- Undef = -9.99e+08”难住了。通过测试我发现“Printing Grid -- 10512 Values -- Undef = -9.99e+08”应该是nc数据里自带的,在每一个domain的第一行。 尝试在c语言程序里读数据时把这句读出来失败了,怪我c语言也不是很精通了。对grads编程也是小白,尝试改grads2ascii源码失败,只好把每个txt里的这句话手动删除,每个txt要删除38*12次,特别费时间。
所幸后来程序员GG学了一下grads帮我改了,就加了一句话就搞定了,分享给需要的童鞋。只改动了下文中红色部分,原理是每次进行行数对74求余,如果余数是0,则写入数据时跳过这一行。缺点是每次需要根据具体情况改“74”这个参数。我是用的ecmwf数据,2.5°*2.5°,是144行*73列,所以是每74行跳过一行。
*--从第二行开始把数据写入ASCII文件中--
say ' ------------------------------------------- '
if(NorA='a')
say ' Data will append to 'filename'!'
else
say ' Data will cover the file: 'filename'!'
endif
say ' ------------------------------------------- '
i = 2; line = sublin(temp,i)
while(line !='')
rc = write(filename,line,append)
if (subwrd(rc,1) !=0); return -2; endif
fmod = math_fmod(i,74)
if(fmod=0);i=i+1;endif
i = i + 1
line = sublin(temp,i)
endwhile
|
评分
-
查看全部评分
|