MATLAB 绘制高精度海岸线地图教程

August 26th, 2015

虽然 MATLAB 内置了全球海岸线数据,但分辨率偏低,绘制小范围图象的效果简直就惨不忍睹。上一篇文章 MATLAB 添加 m_map 工具箱教程 介绍了如何安装 m_map 工具箱,本文就介绍一下如何利用 MATLAB 配合 m_map 及 GSHHG (全球性自洽,分层,高分辨率地理数据库)绘制精细海岸线图。因为考虑到刚接触 MATLAB 绘制地理图像的人群,本文对每个步骤描述的内容可能较多。

MAP_NAME.png

获取海岸线数据

在平时我们主要使用 NOAA (美国国家海洋和大气管理局)提供的 GSHHG 数据。

首先进入 http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/,可看到最新版本的 GSHHG 数据文件列表,下载文件名开头为 gshhg-bin 的压缩文件。

导入到 m_map

打开下载到的压缩文件,将后缀名为 b 的文件全部解压到 m_map 目录的 private 文件夹下。

绘制图像

打开MATLAB,执行以下例子的指令

m_proj('Equidistant Cylindrical','lat',[10 50],'long',[100 145]); %投影方式及绘图范围设定
m_gshhs('lc1','patch',[0.98 0.98 0.98],'EdgeColor',[0.98 0.98 0.98]); %线条及色块颜色设定
m_grid('box','none','linest','none','linewidth',0.1,'tickdir','out','backcolor',[0.7020 0.8588 0.9098]); %边框及网格设定

下图上述程序执行后的绘制结果浏览:

Figure_1.png

导出图像

进入 Figure 窗口菜单 File 下的 Export Setup... ,在弹出的窗口里完成导出选项以及导出图象的操作。

Export_Setup.png

关于图像平滑

MATLAB 绘图时默认启用图像平滑功能,故输出的图像中轮廓线会被平滑(抗锯齿)处理。如果需要输出精确海岸线图像,可关闭此功能,只需在上述指令前添加以下指令:

set(gcf,'GraphicsSmoothing','off');

最后说点

至此,利用MATLAB绘制高精度海岸线图的步骤基本上就完成了。除此之外, m_map 还可以绘制例如等值线图、地形图等的地理图像,网上也可以找得到相关的教程,在这里就先不一一细说了。 Enjoy it~

本文共有 14 则回复
  1. 半幕 半幕 回复

    楼主 在吗 这个美国政府部门关门了现在不提供这个高精度地图了 能发我一份吗 谢谢!

    1. Wis Chu Wis Chu

      现在已经可以下载了

  2. 卡门soul 卡门soul 回复

    博主您好,非常感谢您的分享!但我在运行过程中,显示我Undefined function or variable 'm_proj'.,这是为什么呢

    1. 卡门soul 卡门soul

      之前安装了,只是没有导入成功,现在弄好了,海岸线也画出来了,谢谢博主分享!只是我在画海岸线的时候又出现了一些小问题,比如我的程序是这样的
      m_proj('miller','long',[-179.5 179.5],'lat',[-30.5 30.5])
      m_contourf(lon,lat1,flipud(reshape(sst_area3(:,3),360,62)'),'linestyle','none');
      hold on;
      m_coast('linewidth',2,'color','b');
      但是画出来的海岸线在陆地中也有一些线条,是因为精度不够高吗?博主知道这是为什么吗?

    2. Wis Chu Wis Chu

      请检查是否有安装 m_map 工具箱,文章开头有提到

  3. ljd ljd 回复

    我用2012的画,还是不能达到你所说的效果呀

  4. 韩翔 韩翔 回复

    博主,您好,我是一名学气象的本科生,我现在想筛选出来1951-2016年登陆台风数据,之前用了http://maps.ngdc.noaa.gov/viewers/wcs-client/ 这个网站上的数据,但是筛选出来的数据发现明显不对,我怀疑是海岸线精度的问题。请问博主m_map的这个海岸线数据怎样可以提取出来

    1. Wis Chu Wis Chu

      记得在 MATLAB 上读取文件后可以用某个命令直接打印出内容的。
      不过具体怎么操作我也现在也忘了,你可以去查下文档看看。

  5. Yixi Yixi 回复

    刚好有用到耶!!谢谢!!!

    1. Wis Chu Wis Chu

      不客气,如果有遇到什么问题欢迎一起交流

    1. Wis Wis

      并不菊,我也只是会画个地图而已 orz

  6. 闪闪的星 闪闪的星 回复

    居然有一篇加密文章!!

    1. Wis Wis

      还在写而已,早上就能看啦~