爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12533|回复: 19

[图形美化] 【已解决】grads画图时报错了,貌似是数据有问题,但不知道啥问题

[复制链接]

新浪微博达人勋

发表于 2017-7-25 18:17:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 凝蓝_@薇微笑 于 2017-7-28 08:48 编辑

现有的数据不是grads能识别的二进制,所以现将其转换成标准二进制数据,但转换后用grads画图时报错了,各位高手帮忙看看,多谢了!
转二进制程序:
program main
real,parameter::undef=-999.00
parameter(nx=3142,ny=1129)
real a(nx,ny)
open(10,file='E:\changjiang\t_2017072114_txt_data.grd')
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)((a(i,j),i=1,nx),j=1,ny)
close(10)
open(12,file='E:\changjiang\t_2017072114_binary_data.grd',form='binary')
write(12)((a(i,j),i=1,nx),j=1,ny)
end
ctl文件:
dset e:\changjiang\t_2017072114_binary_data.grd
title grid data sample
undef -9.99E+02
XDEF 3142 LINEAR 90.54 0.01000637
YDEF 1169 LINEAR 24.47 0.01000886
ZDEF 1 LEVELS 1000
TDEF 1 LINEAR 0Z01mar2017 1hr
vars 1
t 0 99 grid data
endvars

grads报错:
Low Level I/O Error:  Read error on data file
  Data file name = e:\changjiang\t_2017072114_binary_data.grd
  Error reading 12568 bytes at location 14189272
Data Request Error:  Error for variable 't'
  Error ocurred at column 1
DISPLAY error:  Invalid expression
  Expression = t

t_2017072114_txt_data.grd

27.74 MB, 下载次数: 1, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2017-7-25 18:50:48 | 显示全部楼层

回帖奖励 +3 金钱

请问哪里可以下载到海上站点16个风向上的频率数据吖?要做风玫瑰图用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-25 23:02:48 | 显示全部楼层

回帖奖励 +3 金钱

有几个建议你可以试试:
1 你在编写Fortran程序时,可以用print把读进去的数据输出来,看是否正确;再考虑输出来,一步一步调试。
2 感觉read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)  你这几行是不是读取文件的抬头?如果是最好定义一个大的字符串;再进行读取
3  可以尝试将read(10,*)((a(i,j),i=1,nx),j=1,ny)
  换成  do j=1,ny
             do i=1,nx
              end do
                  end   do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-26 08:17:52 | 显示全部楼层

回帖奖励 +3 金钱

Maruko 发表于 2017-7-25 18:50
请问哪里可以下载到海上站点16个风向上的频率数据吖?要做风玫瑰图用

我这里有海上浮标的气象数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-26 08:56:39 | 显示全部楼层
whw334455 发表于 2017-7-25 23:02
有几个建议你可以试试:
1 你在编写Fortran程序时,可以用print把读进去的数据输出来,看是否正确;再考虑 ...

print输出是没有问题的,如果改成你说的
do j=1,ny
              do i=1,nx
               end do
                   end   do
就会报错:forrtl:severe(24):end-of-file during read,unit10
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-26 09:28:50 | 显示全部楼层

回帖奖励 +3 金钱

凝蓝_@薇微笑 发表于 2017-7-26 08:56
print输出是没有问题的,如果改成你说的
do j=1,ny
              do i=1,nx

写数据的时候改成这样的循环格式
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-26 09:33:00 | 显示全部楼层
river 发表于 2017-7-26 09:28
写数据的时候改成这样的循环格式

program main
real,parameter::undef=-999.00
parameter(nx=3142,ny=1129)
real a(nx,ny)

open(10,file='E:\changjiang\t_2017072114_txt_data.grd')

read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)
read(10,*)((a(i,j),i=1,nx),j=1,ny)

!print*,((a(i,j),i=1,nx),j=1,ny)
close(10)
open(12,file='E:\changjiang\t_2017072114_binary_data.grd',form='binary')
do j=1,ny
do i=1,nx
write(12) a(i,j)
enddo
  enddo
close(12)
这样改过了 但还是报同样的错 就是不知道是二进制数据有问题还是描述文件有问题

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

新浪微博达人勋

发表于 2017-7-26 09:49:10 | 显示全部楼层
凝蓝_@薇微笑 发表于 2017-7-26 09:33
program main
real,parameter::undef=-999.00
parameter(nx=3142,ny=1129)

我看了一下我原来的程序,应该就是你之前写的那样就可以了。你试试把close(10)注释掉,我觉得是这句位置有问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-26 10:11:45 | 显示全部楼层
river 发表于 2017-7-26 09:49
我看了一下我原来的程序,应该就是你之前写的那样就可以了。你试试把close(10)注释掉,我觉得是这句位置 ...

还是不行呀 我删掉close了 一样的错
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-26 19:05:09 | 显示全部楼层
凝蓝_@薇微笑 发表于 2017-7-26 10:11
还是不行呀 我删掉close了 一样的错

那你还是说说原始数据是什么数据,什么样的格式之类的吧,问题应该不在转换程序
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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