爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6056|回复: 6

[分享资料] micaps第四类数据格式用Grads绘图出错,请高手指教(第一次发帖)

[复制链接]

新浪微博达人勋

发表于 2013-2-7 21:53:35 | 显示全部楼层 |阅读模式

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

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

x
请教,我用mofangbao写的diamond4tograds程序后,出现如下错误,请帮忙分析一下,非常感谢:
错误如图
[img]file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/281484391/QQ/WinTemp/RichOle/1L~BBI95S340@[K$MNT3NK6.jpg[/img] ,感觉转2进制数据成功了,但是无法用grads打开,总是提示Ydef出错。我将我的转换的文件以附件给出。源程序如下:
!===========
program main
real head(19) !用于存储自描述内容
real,allocatable::gdata(:,:)  !存储数据,由头文件中的格点数决定长度
integer x,y,i,j      !x,y方向的格点数
character filepath*100,desc(3)*50 !文件路径和文件第一行内容,desc主要在生成ctl时使用
!****输出提示内容,读入文件路径******
print*,"1、请输入文件路径,若为当前路径可直接输入文件名,路径中请不要出现空格"
print*,"2、如果输入的是文件名而非路径,请在运行结束后自行修改生成的CTL文件的路径"
print*,"3、没有对生成的CTL文件的时间进行处理,需要的请自行修改"
print*,""
print*,"输入文件名或路径:"
read(*,'(a)')filepath
!*********打开文件循环读取********
open(1,file=''//trim(filepath)//'',status='old',err=101)
read(1,*)desc
read(1,*)head
x=int(head(13)+0.0001)
y=int(head(14)+0.0001)
allocate(gdata(y,x))    !申请内存
read(1,*)((gdata(j,i),i=1,x),j=1,y)
close(1)
!************根据数据存放格式选择生成的数据存放顺序************
open(1,file=''//trim(filepath)//'.grd',status='replace',form='binary',err=102)
!*********************************************
!  head(7)<0 经度(沿x)自东向西;
!  head(8)<0 纬度沿y自北向南,反之亦然
!*********************************************
if(head(7)<0)then   
if(head(8)<0)then
  do j=y,1,-1
   do i=x,1,-1
    write(1)gdata(j,i)
   enddo
  enddo
else
  do j=1,y
   do i=x,1,-1
    write(1)gdata(j,i)
   enddo
  enddo
endif
else
   if(head(8)<0)then    !比较常用的一种情况(如欧洲500hpa预报)
  do j=y,1,-1
   do i=1,x
    write(1)gdata(j,i)
   enddo
  enddo
else
do j=1,y
    do i=1,x
    write(1)gdata(j,i)
   enddo
  enddo
endif
endif
close(1)
!************生成CTL,时间固定了,需要的自己改******************
open(1,file=''//trim(filepath)//'.ctl',status='replace',err=103)
write(1,*)"dset "//trim(filepath)//".grd"
write(1,*)"undef 9999"
write(1,*)"title "//trim(desc(3))
write(1,'(1x,a,i5,a,f10.4,1x,f8.4)')"xdef ",x," linear ",head(9),head(7)
write(1,'(1x,a,i5,a,f10.4,1x,f8.4)')"ydef ",y," linear ",head(12),head(8)*(-1)
write(1,'(1x,a,i5)')"zdef 1 levels ",int(head(6)+0.0001)
write(1,*)"tdef 1 linear 16jan2013 1dy"
write(1,*)"vars 1"
write(1,*)"m2g 1 99 diamond4tograds"
write(1,*)"endvars"
close(1)
goto 100
!*****************出错处理***********************************
101 print*,"读取源数据文件:",trim(filepath),"出错!"
goto 104
102 print*,"新建GrADS文件:",trim(filepath)//".grd","出错!"
goto 104
103 print*,"新建CTL文件:",trim(filepath)//".ctl","出错!"
104 close(1)
stop
!******************转换完成,给出提示************************
100 continue
print*,"转换完成,生成的新文件为:"
print*,trim(filepath)//".grd"
print*,trim(filepath)//".ctl"
print*,"如果您输入的是纯文件名,请您补全ctl中的dset路径"
pause "按任意键退出"   !此处可以改为继续循环,进行批处理,但是上面也要做适当修改
deallocate(gdata)
end
!===================代码结束================
错误.jpg

13020620.024

9.46 KB, 下载次数: 11, 下载积分: 金钱 -5

diamond4tograds.f90

2.87 KB, 下载次数: 28, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-23 19:45:05 | 显示全部楼层
我也调试了,不能读取源数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-10 16:10:53 | 显示全部楼层
我也遇到这个问题了,请问怎么解决的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-10 16:24:17 | 显示全部楼层
还是我自问自答吧,修改了ctl中的一个小地方。open ctl打开就不报错了
QQ图片20151110161947.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-12 21:09:51 | 显示全部楼层
请问,在读取实况500高度场数据时,它的纬度方向是自北向南(与EC500预报场正好相反),也就是说,纬度增量是负值,那么这个Fortran程序需不需要改动呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-16 17:30:35 | 显示全部楼层
非常感谢楼主,希望好好学习一下,提高一下技术。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-16 17:31:17 | 显示全部楼层
非常感谢楼主,希望好好学习一下,提高一下技术。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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