爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: lyvhjy

风云四号行列号与经纬度转换

[复制链接]

新浪微博达人勋

发表于 2019-9-30 10:27:46 | 显示全部楼层
长恨晴天夕照晚 发表于 2019-3-18 10:19
您好,能问一下raw格式的文件怎么读取吗?

您好,请问raw文件的读取问题解决了吗?有几个问题想问一下?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-30 10:31:10 | 显示全部楼层
laoping 发表于 2019-8-12 10:46
我也想请问老师raw格式的文件怎么打开?

您好,请问raw文件的读取问题解决了吗?有几个问题想问一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-10-13 18:09:48 | 显示全部楼层
你好,楼主这个问题解决了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-12 15:25:31 | 显示全部楼层
open(10,file="FullMask_Grid_4000.raw",form="unformatted",access="direct",recl=Nc*Nl*16)
        read(10,rec=1) ((lat(i,j),lon(i,j),i=1,Nc),j=1,Nl)
        close(10)
Nl=Nc=2748
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-15 19:52:33 | 显示全部楼层
请问楼主这个问题解决了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-7 10:34:44 | 显示全部楼层
hpzheng 发表于 2020-3-15 19:52
请问楼主这个问题解决了吗?

可以直接用fortran读取,就当作无格式二进制文件来读,不过需要你知道他的数组大小及字符长度。
CC Nc: Number of colums
CC Nl: Number of lines
        integer*4 Nc,Nl
        parameter(Nc=2748,Nl=2748)
        real*8 lon(Nc,Nl),lat(Nc,Nl)

        open(10,file="./FullMask_Grid_4000.raw",form="unformatted",
     &                  access="direct",recl=Nc*Nl*16)
        read(10,rec=1) ((lat(i,j),lon(i,j),i=1,Nc),j=1,Nl)
        close(10)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-20 09:19:40 | 显示全部楼层
fileName = "E:\科研\卫星\FullMask_Grid_4000\FullMask_Grid_4000.raw";
fileID=fopen(fileName);
BB=fread(fileID,[2748*2 2748],'double');
fclose(fileID);
LAT=BB(1:2:2*2748,:);
LON=BB(2:2:2*2748,:);
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-20 09:41:01 | 显示全部楼层
#将FullMask_Grid_4000.raw读取为NC格式的经纬度文件,经纬度维度为2748*2748,以下为MATLAB语言
file ID=fopen('FullMask_Grid_4000.raw');
BB=fread(fileID,[2748*2 2748],'double');
fclose(fileID);
LAT=BB(1:2:2*2748,:);
LON=BB(2:2:2*2748,:);
LAT(find(abs(LAT)>1000))=NaN;
LON(find(abs(LON)>1000))=NaN;
LAT=LAT';
LON=LON';
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-23 09:42:19 | 显示全部楼层
用公式将行列号转换成经纬度,行列号(默认是int16)需要变成double类型数据,这样就不会出现复数了。ColumnNumber = double(ColumnNumber);
LineNumber = double(LineNumber);
LineNumber(find(LineNumber==-1))=NaN;
ColumnNumber(find(ColumnNumber==-1))=NaN;
记得把无效值-1改成NaN
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-7-7 14:58:44 | 显示全部楼层
我用的是Python,尝试了一下,好像是成功了,只需要把两个数组先网格化之后再去按公式计算(但是好像算出来是反的,然后我把矩阵转置了一下),把计算结果和用raw文件对照表得出来的结果对比画出来的图是一样的。我贴出来

l=np.arange(0,2748)
c=np.arange(0,2748)
L,C=np.meshgrid(l,c)#网格化
coff=1373.5
cfac=10233137
loff=1373.5
lfac=10233137
h=42164
ea=6378.137
eb=6356.7523
ld=104.7

x=(np.pi*(C-coff))/(180*2**-16*cfac)
y=(np.pi*(L-loff))/(180*2**-16*lfac)
sd=((h*np.cos(x)*np.cos(y))**2-(np.cos(y)**2+(ea**2/eb**2)*np.sin(y)**2)*(h**2-ea**2))**0.5
sn=(h*np.cos(x)*np.cos(y)-sd)/(np.cos(y)**2+(ea**2/eb**2)*np.sin(y)**2)
s1=h-sn*np.cos(x)*np.cos(y)
s2=sn*np.sin(x)*np.cos(y)
s3=-1*sn*np.sin(y)
sxy=(s1**2+s2**2)**0.5
lon0=(180/np.pi)*np.arctan(s2/s1)+ld
lat0=(180/np.pi)*np.arctan((ea**2/eb**2)*(s3/sxy))
lat0=np.transpose(lat0)
lon0=np.transpose(lon0)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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