爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4116|回复: 2

[程序设计] 关于卫星数据经纬度坐标差值问题

[复制链接]

新浪微博达人勋

发表于 2017-10-18 16:42:43 | 显示全部楼层 |阅读模式

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

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

x
最近处理modis卫星数据,网上找了个处理的程序包,自己研究了一下程序,在关于经纬坐标差值的程序方面不是很懂,特来求教。程序见下。在经纬度坐标差值里面,X为什么赋值1到270?y为什么赋值1到406?YI为什么赋值2030个点?XI为什么赋值1354个点?这样设置有什么讲究吗?
另外,程序包运行的时候显示程序中这句“z=0.39*log(COD)-0.01”出错运行不了。我研究了一下,这句应该是云高度的转换。我推敲分析了一下应该是COD(关于具体的请看下面的程序)这个量里面应该有负值,不符合log函数的调用规则。于是试验了一下发现不用转换而直接调用变量COD可以运行绘图(见附图)。于是问题来了!源程序为什么会有高度转换的这句“z=0.39*log(COD)-0.01”,我这样不转换直接调用变量COD绘制出的图会不会是错的?
clear all;close all;clc;
filename = 'MOD06_L2.A2010236.0220.006.2015047032450.hdf';
file_info = hdfinfo(filename);
lon = hdfread(filename,'Longitude');                            %经度
lat = hdfread(filename,'Latitude');                             %纬度
%----------------经纬度坐标插值--------------------
y=1:406;x=1:270;
yi=linspace(min(y),max(y),2030);
xi=linspace(min(x),max(x),1354);
[X,Y]=meshgrid(x,y);
[Xi,Yi]=meshgrid(xi,yi);
Z1=lon;
Longitude=interp2(X,Y,Z1,Xi,Yi,'spline');
Z2=lat;
Latitude =interp2(X,Y,Z2,Xi,Yi,'spline');
%---云顶温度,k----------------------------------------------
%temperature = hdfread(filename,'Cloud_Top_Temperature');        %云顶温度
temperature = hdfread(filename,'cloud_top_temperature_1km');    %云顶温度
scale_factor = 0.009999999776482582;
add_offset = -15000.0;
temp = (temperature - add_offset)*scale_factor;                 %温度数据转换,单位:K

% ---云顶高度,m-----------------------------------------------
% height=hdfread(filename,'Cloud_Top_Height');                  %云顶高度
height=hdfread(filename,'cloud_top_height_1km');  
scale_factor = 1.0;
add_offset = 0.0;
zt = (height - add_offset)*scale_factor;                          %高度转换,单位:m

%----有效粒子半径,单位:micron -------------------------------
radius=hdfread(filename,'Cloud_Effective_Radius')
scale_factor = 0.009999999776482582;
add_offset = 0.0;
re = (radius - add_offset)*scale_factor;                          %1*1,有效粒子半径,单位:micron
%-----------------------------------------------------
thickness=hdfread(filename,'Cloud_Optical_Thickness')
scale_factor = 0.009999999776482582;
add_offset = 0.0;
COD = (thickness - add_offset)*scale_factor;                      %1*1
%-freezing level,m-----------------------------------------------------
zfr=zt+(temp-273.15)/6.5
%-几何高度,km?----------------------------------------
z=0.39*log(COD)-0.01
%-cloud base altitude-----------------------------------------
zb=zt-z

%-LWP,1*1,g/m^2------------------------------------------------
path=hdfread(filename,'Cloud_Water_Path');  
scale_factor = 1.0;
add_offset = 0.0;
lwp=(path - add_offset)*scale_factor;
if zb<zfr
    slwp=lwp(zt-zfr)/z
else
    slwp=lwp
end
% --------------------------------------------------
contourf(Longitude,Latitude,slwp);
%contourf(lon,lat,ht);
colorbar
axis([120 125 30 34 ])
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-19 07:18:32 | 显示全部楼层
为什么还没人来看看?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-21 18:24:35 | 显示全部楼层
本帖最后由 pixi 于 2017-10-21 18:26 编辑

不行吧,后面画图用了云底高度和freezing level(零度层?)作比较。建议翻看大气物理先搞明白这几个量的关系。检查下thickness 的最小值是多少,我记得好像应该都是正值
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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