| 
 
	积分894贡献 精华在线时间 小时注册时间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
 
 
 
 
 | 
 评分
查看全部评分
 |