汪帮主卫星遥感空间分享 http://blog.sciencenet.cn/u/zjwang 湖北鄂州人,2011年博士毕业于吉林大学。现从事卫星遥感技术工作。

博文

基于m_map的球面立体投影的MATLAB实现

已有 14156 次阅读 2010-5-2 19:24 |个人分类:计算程序|系统分类:教学心得| m_map

 

 

图1 假设的全球某成分分布

 

图2 北半球和南半球球面立体投影坐标系

        以球面立体投影开始,这个在大气痕量成分分布产品中应用得非常多,能清楚明了地看到世界各地的某高度的浓度或总量分布。
一、下载m_map安装包,http://www.eos.ubc.ca/~rich/private/mapug.html
二、解压,然后通过MATLAB设置路径包含m_map
三、投影坐标系绘制
1,首先定义投影方式
m_proj('stereographic','latitude',90,'radius',90,'rotagnle',0);
  ;投影名称为stereographic
  ;中心纬度为北纬90度
   ;绘制纬度长度为90度,即从N90-0,如果radius为55的话,则绘制N90-N55的区域
   ;坐标系旋转角度为0,即垂直方向为经度0度
2,绘制海岸线
m_coast('patch',[.7 .7 .7], 'edgecolor', 'none');
  ;填充区域颜色为[.7 .7 .7],三个分量分别代表r,g,b,以小数表示,即255为1,0为0
  ;边界无颜色
3,绘制边界、坐标轴等
m_grid;
四、绘制目标数据
1,数据准备
例如:
臭氧ozone = [360*90],即有经度-180:180和纬度0:90的臭氧数据,即北半球数据
经度数据lon=0:180
纬度数据lat=0:90
将坐标其转化为网格
[lon,lat] = meshgrid(lat, lon); 注意这里的lat和lon的顺序
现在lon = [360*90],lat = [360*90];
2,坐标转换
将经纬度坐标转换成投影后坐标
[x,y] = m_ll2xy(lon,lat);
3,绘制目标数据
hold on;  一定不要忘记此句,否则前面的将全部覆盖
pcolor(lon,lat,ozone);
shading interp;
box on;
效果见图1.

几点注意的地方:
1,坐标转换时,给定的经纬度一定是投影范围内的点,否则得不到有效值。
2,纬度的范围是0-90,北纬为正,南纬为负。即-55表示南纬55度。
3,经度的范围是0-180度,东经为正,西经为负。
4,绘制南半球时,设置中心为S90,即-90。要想0也在竖起时,要设定旋转方向为180。
m_proj('stereographic','latitude',-90,'radius',90,'rotagnle',180);
5,绘制南半球时,要通过m_grid设置经度轴标在最外层,否则都聚焦在最里。
m_grid('xaxislocation','top');
5、绘制目标数据之前,加上hold on;否则将绘制的坐标系全部覆盖了。



https://blog.sciencenet.cn/blog-43777-318933.html

上一篇:Modified Julian Day与年月日时分秒转换C++和MATLAB代码
下一篇:操作office的类CWzjOffice 3.0及其功能自改进方法
收藏 IP: .*| 热度|

1 宋敦江

发表评论 评论 (5 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-24 05:19

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部