用fortran读出grd文件,是位势高度场数据,1981年1月到2010年1月,每月的平均数据。
但无论怎么修改循环,读出的数据都和源文件内所存储的顺序不一致,也就是数据错位了,
比如hgt(25,61,325)的值应该是5397,,可是再fortran里读出来就是5213
你得先了解grd的文件格式,有可能文件开头并不是数据体,而是点数等信息。
这里有golden surfer使用的grd格式说明及代码,你可以参考一下。https://blog.csdn.net/lixingwang0913/article/details/119823334?spm=1001.2014.3001.5502
首先,可以使用Fortran内置的文件操作函数来读取文件。可以使用OPEN,READ和CLOSE函数。以下是一个简单的读取文件的示例代码:
program read_file
implicit none
integer :: i, j
real :: hgt(25, 61)
integer :: status
integer :: file_id
! 打开文件
open(unit=10, file='filename.grd', status='old', action='read', iostat=status)
if (status /= 0) then
write(*,*) '无法打开文件'
stop
end if
! 读取数据
do i = 1, 25
do j = 1, 61
read(unit=10, fmt=*) hgt(i,j)
end do
end do
! 关闭文件
close(unit=10)
end program read_file
请注意,这只是一个简单的示例代码,需要根据实际情况进行修改。另外,如果读取的数据与源文件内存储的顺序不一致,可能是因为grd文件的存储格式不同于常见的文本文件。此时,需要查看文件格式的文档,并相应地修改读取数据的方式。