matlab计算海洋浮力频率_水深数据+海岸线数据提取绘图(海洋科学)

最近用matlab画的水深等值线图,在此分享一下~

水深的数据很少(我找的时候),可能现在有两个:一个是海图(没用过),一个是ETOPO1的数据(ETOPO2和ETOPO5不推荐使用)。下面介绍ETOPO1数据下载及绘图过程,有需要的请往下看。

ETOPO1数据下载链接:百度一下,有人用过。

海岸线数据(coastline extractor):NOAA上

1.先介绍海岸线数据:

NOAA提供了全球海岸线数据集,进入网站后,中间是选取经纬度。

在coastline database里选取你想要的数据集,如:它默认的World Vector Shoreline(designed for 1:250,000)。

再下面,在coast format options里面选取数据格式,如用matlab,选取matlab。选取matlab下载的数据为两列数据,一列是经度,一列是纬度数据,这样就可以在matlab里面用plot或m_plot(M_Map toolbox)绘制海岸线了。

你也可以选择GMT,预览你想要的海岸线的图形。

如选取渤海范围的经纬度,预览图像:

2.提取海岸线数据后,提取ETOPO1水深数据:

ETOPO1实际上是全球海拔+水深的数据。海拔的数据是正值,水深是负值。

链接到上面的网址后,grid database选择ETOPO1,选择你的经纬度。之后说一下数据格式。

在grid format里面,提供了三种数据,二进制,ascii码和xyz。我用的是xyz的数据,它是个十进制的。在matlab里,直接importdata就可以载入数据了。第一列是经度,第二列是纬度,第三列是水深。有了数据,如何把水深数据转成一个矩阵绘制等值线图呢/p>

仔细看经纬度数据是有规律的。纬度固定不变时,经度从低到高排列,所以对于一维的水深数据来说,用reshape函数,转成你想要的二维矩阵。矩阵的列是纬度数,行是经度数,再转置就是最后我们要用的矩阵形式了。但是由于我们要画水深,所以把>=0的数设为NaN,你也可以把水深数据变为正数(乘以-1)。这样有了数据再用contour或contourf画等值线图。

下面是我的m文件:

%绘制渤海水深图,由于近岸水深不准确,水深数据小于等于9m的设为NaN,只画10m,20m,30,等值线图

clear all

load bohai.mat %载入海岸线数据,变量名为data,第一列为经度数据,第二列为纬度数据

load depth.mat %载入已处理过的经度,纬度,水深数据

m_proj(‘miller’,’lon’,[117 123],’lat’,[37 41]);

m_grid(‘linestyle’,’none’,’box’,’fancy’);

hold on

m_plot(data(:,1),data(:,2),’k’,’linewidth’,1.5);

[c h]=m_contour(lon,lat,depth,10:10:30,’k’);

clabel(c,h,’rotation’,0,’linewidth’,1);

title(‘Water depth of Bohai (meter)’);

print -dpng -r300 bohai.png

上面的程序用到了M_Map工具箱,用于投影和画地图等使用。

最后的图像:

PS:NOAA(NGDC)有官方的软件——GEODAS,下载数据后,可直接用这个软件打开,直接出图,而且图形美观。软件下载也在上面链接中,大家可自行查找下载。

下面是用GEODAS画的中国海的海拔和水深图:

PS:希望大家有关海洋科学画图好的经验及时分享~

相关资源:漂浮截图工具-教育工具类资源

来源:曦曦早安

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月10日
下一篇 2021年1月10日

相关推荐