MATLAB使用sinusoidal和mollweide投影绘制地图

2025-11-05 22:08:21

1、第一,首先使用sinusoidal投影方式绘制分插的世界地图。启动MATALB,新建脚本(Ctrl+N),输入如下代码:

close all; clear all; clc

slongs=[-100 0;-75 25;-5 45;25 145;45 100;145 295;100 290];

slats= [ 8  80;-80  8; 8 80;-80  8; 8  80;-80   0; 0   80];

for i=1:7

m_proj('sinusoidal','long',slongs(i,:),'lat',slats(i,:));

m_grid('fontsize',6,'linest','-','color',[.7,.7,.7],...

'xtick',[-180:30:360],'xticklabels',[],...

'ytick',[-80:20:80],'yticklabels',[]);

m_coast('patch','g');

end

xlabel('Interrupted sinusoidal projection of world oceans');

set(gca,'xlimmode','auto','ylimmode','auto');

其中通过for-end循环设置7组不同经度longitude和纬度latitude的绘制区域,所使用的投影方式为sinusoidal。另外,m_proj设置投影方式和经纬度区域。m_grid设置网格线属性。m_coast以填充(补丁patch)的方式设置海岸线。

需要注意的时,set(gca,'xlimmode','auto','ylimmode','auto')需要加上,不然不能同时显示7组绘制区域。

MATLAB使用sinusoidal和mollweide投影绘制地图

2、第二,保存和运行上述脚本,得到如下图形:sinusoidal投影方式的分插的(上下共7组)世界地图。

MATLAB使用sinusoidal和mollweide投影绘制地图

3、第三,下面采用mollweide投影方式绘制分插的世界地图。新建脚本(Ctrl+N),输入如下代码:

close all; clear all; clc

slongs=[-100 43;-75 20;20 145;43 100;145 295;100 295];

slats= [   0 90;-90  0;-90  0; 0  90;-90   0;  0  90];

for i=1:6

m_proj('mollweide','long',slongs(i,:),'lat',slats(i,:));

m_grid('fontsize',6,'linest','-','color','k',...

'xtick',[-180:30:360],'xticklabels',[],...

'ytick',[-80:20:80],'yticklabels',[]);

m_coast('patch',[.6,.6,.6]);

end

xlabel('Interrupted mollweide projection of world oceans');

set(gca,'xlimmode','auto','ylimmode','auto');

其中通过for-end循环设置6组不同经度longitude和纬度latitude的绘制区域,所使用的投影方式为mollweide。关于代码的其他解释参照第一步。

MATLAB使用sinusoidal和mollweide投影绘制地图

4、第四,保存和运行第三步中的脚本,得到如下图形:mollweide投影方式的分插的(上下共6组)世界地图。

MATLAB使用sinusoidal和mollweide投影绘制地图

5、第五,把第一步和第三步的脚本合并在一起,从而将第二步和第四步中的图形绘制在一个绘图区。合并后的脚本如下,主要是增加了subplot( )命令用于在一个绘图区绘制子图。

close all; clear all; clc

subplot(2,1,1)

slongs=[-100 0;-75 25;-5 45;25 145;45 100;145 295;100 290];

slats= [ 8  80;-80  8; 8 80;-80  8; 8  80;-80   0; 0   80];

for i=1:7

m_proj('sinusoidal','long',slongs(i,:),'lat',slats(i,:));

m_grid('fontsize',6,'linest','-','color',[.7,.7,.7],...

'xtick',[-180:30:360],'xticklabels',[],...

'ytick',[-80:20:80],'yticklabels',[]);

m_coast('patch','g');

end

xlabel('Interrupted sinusoidal projection of world oceans');

set(gca,'xlimmode','auto','ylimmode','auto');

subplot(2,1,2)

slongs=[-100 43;-75 20;20 145;43 100;145 295;100 295];

slats= [   0 90;-90  0;-90  0; 0  90;-90   0;  0  90];

for i=1:6

m_proj('mollweide','long',slongs(i,:),'lat',slats(i,:));

m_grid('fontsize',6,'linest','-','color','k',...

'xtick',[-180:30:360],'xticklabels',[],...

'ytick',[-80:20:80],'yticklabels',[]);

m_coast('patch',[.6,.6,.6]);

end

xlabel('Interrupted mollweide projection of world oceans');

set(gca,'xlimmode','auto','ylimmode','auto');

MATLAB使用sinusoidal和mollweide投影绘制地图

6、第六,保存和运行上述合并的脚本,最终得到如下图形:上方为sinusoidal投影方式绘制的分插世界地图,下方为mollweide投影方式绘制的分插世界地图。

MATLAB使用sinusoidal和mollweide投影绘制地图

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢