爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 上帝也厕所

[求助] fortran读取卫星云图

[复制链接]

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-6-26 09:24:59 | 显示全部楼层

这是一个不断尝试的过程吧,不太可能一次写对的,你有什么想法就自己试试看  不行就修改
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-6-26 09:57:17 | 显示全部楼层
mofangbao 发表于 2012-6-26 09:24
这是一个不断尝试的过程吧,不太可能一次写对的,你有什么想法就自己试试看  不行就修改

哦。好的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-6-27 13:17:43 | 显示全部楼层
现在搞出来了!格式不是512*512而是1300*1900

program duqu
implicit none

integer,parameter :: row=1300
integer,parameter  :: col=1900
integer r   
integer c   
integer*1 matrix(row,col)
open(unit=1,file="FY2D_ANI_VIS_R04_20120623_2345.AWX",form="binary")
!!!!读取头文件
do r=1,2
   read(1) (matrix(r,c),c=1,col)
end do
!!!!读取数据
do r=3,row
   read(1) (matrix(r,c),c=1,col)
end do
close(1)
open(unit=2,file="FY2D_VIS_w.dat",form="binary")
do r=1,row
   write(2)  (matrix(r,c),c=1,col)
end do
close(2)

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

新浪微博达人勋

发表于 2012-6-28 15:50:08 | 显示全部楼层
我顶您!刚测试过,程序运行成功。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-6-28 16:05:16 | 显示全部楼层
日者 发表于 2012-6-28 15:50
我顶您!刚测试过,程序运行成功。

谢谢,多多交流。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-29 16:18:11 | 显示全部楼层
楼主还在么?想问问你这个数据你是怎么读取的呢,图像数据部分是不是从第四行开始啊?还有就是图像数据部分是10bit数据么?我不清楚图像数据部分该怎么读了,求指点啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-29 20:49:14 | 显示全部楼层
DreamYu 发表于 2012-8-29 16:18
楼主还在么?想问问你这个数据你是怎么读取的呢,图像数据部分是不是从第四行开始啊?还有就是图像数据部分 ...

格式分为头文件,和数据。    先读头文件   然后再读数据。数据部分是从第四行开始的。读取数据的时候知道是多少行多少列,循环就行。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-30 16:26:44 | 显示全部楼层
上帝也厕所 发表于 2012-8-29 20:49
格式分为头文件,和数据。    先读头文件   然后再读数据。数据部分是从第四行开始的。读取数据的时候知道 ...

朋友!恳请您帮帮我吧!现在我读这个数据遇到很棘手的问题!数据文件名称是ANI_IR1_R04_20120822_0900_FY2E.AWX,我把文件头读出来了,然后从第四行开始读数据部分,我是把两个字节进行移位后组合起来得到一个10比特的数据,这样共得到1300*1520个图像数据,每个数据都是10比特的,但是这样读出来后画出来的图像不正确,虽然有大致的轮廓,但是图像不清晰,不知道我图像数据部分理解的对不对,请您帮帮我吧!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-30 16:28:28 | 显示全部楼层
上帝也厕所 发表于 2012-8-29 20:49
格式分为头文件,和数据。    先读头文件   然后再读数据。数据部分是从第四行开始的。读取数据的时候知道 ...

这是我度图像数据部分的代码:int m, n;
            for (int i = 0; i < 1300 * 1900 - 4; i += 5)
            {
                //移位操作:将一个像素存储8bit转换为一个像素存储10bit
                //每5个8bit,为4个10bit

                x = temp << 2;
                y = temp[i + 1] >> 6;
                a = x | y; //合并

                x = (temp[i + 1] & tempByte) << 4; //按位与,取出后6bit
                y = temp[i + 2] >> 4;
                b = x | y;

                x = (temp[i + 2] & tempByte1) << 6;
                y = temp[i + 3] >> 2;
                c = x | y;

                x = (temp[i + 3] & tempByte2) << 8;
                y = temp[i + 4];
                d = x | y;


                m = i / 1900;
                n = (i - m * 1900) / 5;

                imageData[m, 4 * n] = a;
                imageData[m, 4 * n + 1] = b;
                imageData[m, 4 * n + 2] = c;
                imageData[m, 4 * n + 3] = d;


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

新浪微博达人勋

 楼主| 发表于 2012-9-3 11:35:20 | 显示全部楼层
DreamYu 发表于 2012-8-30 16:28
这是我度图像数据部分的代码:int m, n;
            for (int i = 0; i < 1300 * 1900 - 4; i += 5)
  ...

你这个我还真心没做过。awx格式倒是挺简单的。不好意思了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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