登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 东风急流 于 2015-11-15 16:11 编辑
我下载了一个风云3F静止卫星的地表温度数据FY2F_LST_MLT_NOM_20130702_1230.hdf,是标称格式个圆盘形状的(可看下图片FY2F_LST_MLT_NOM_20130702_1230.jpg)。以及其经纬度文件NOM_ITG_2288_2288(0E0N)_LE.dat 目的是差值一个我想要区域的数据300*400(45.17—133.61,-1.25—76.45) 发现差值后数据跑到南半球去了(我grads画图发现的)。不知道是什么的地方把顺序给弄反了, 或者是初始数据和经纬度不匹配? 已经卡壳5天没有结果了.....实在是没办法了啊,各种转置,翻转都试过了。。。。
这个是资料预览图
这个资料预览图
这个我的程序 clear all;
clc;
%%%%%%读取数据
filename1='d:/xiaoma/FY2F_LST_MLT_NOM_20130702_1230.hdf';%FY2F地表温度数据
filename2='d:/xiaoma/NOM_ITG_2288_2288(0E0N)_LE.dat';%FY2D经纬度数据
ch2=hdf5read(filename1,'LST Hourly Product');%读取地表温度数据
ch2(1,1)=-6;ch2(2288,1)=-6;ch2(1,2288)=-6;ch2(2288,2288)=-6;%四个角的-2替换成-6
ch3=reshape(ch2,2288*2288,1);%写成一列
ch3(ch3==-6)=[];
ch3(ch3==-1)=NaN;%去掉海洋值
ch3(ch3==-2)=NaN;%去掉陆地缺测值
f=fopen(filename2,'r');
lat_fy=fread(f,[2288*2288,1],'float32');
lon_fy=fread(f,[2288*2288,1],'float32')+112;%风云2F加112经度
lat_fy(lat_fy>200)=[];%剔除圆形区域外的
lon_fy(lon_fy>200)=[];
minlon=min(lon_fy);maxlon=max(lon_fy);
minlat=min(lat_fy);maxlat=max(lat_fy);
%%构造水平差值网格
xi=45.17:0.221:133.389;
yi=-1.25:0.259:76.191;
[xx1,yy1]=meshgrid(xi,yi);
%%%%地表温度差值
ts_cz=griddata(double(lon_fy),double(lat_fy),double(ch3),xx1,yy1);
ts_cz(isnan(ts_cz))=0;
b=fliplr(ts_cz);
%contourf(xi,yi,ts_cz)
%写成二进制数据
fid=fopen('TS.dat','w');
count=fwrite(fid,ch2,'float32');
status=fclose(fid);
fid2=fopen('TS3.dat','w');
count=fwrite(fid2,ts_cz,'float32');
status=fclose(fid2);
这是最后生成的TS3.dat画出的图形
明显数据提取到了澳大利亚区域去了。。。求大家帮忙啊 |