c/c++语言开发共享利用Matlab绘制地图的超详细教程

worldmap和usamap是axesm的子类,worldmap是用于生成世界地图坐标区域,usamap用于生成美国地图坐标区域,本文先在worldmap函数基础上讲解如何导入各种数据绘制各种类型图

worldmap和usamap是axesm的子类,worldmap是用于生成世界地图坐标区域,usamap用于生成美国地图坐标区域,c/c++开发分享利用Matlab绘制地图的超详细教程先在worldmap函数基础上讲解如何导入各种数据绘制各种类型图片,略提一下如何使用usamap,再讲解axesm的各种属性以满足更多元化的地图绘制需求,并在最后总结地图绘制其他可用函数。

mapping toolbox工具箱安装

请通过如下步骤安装工具箱:

1.点击附加功能:

利用Matlab绘制地图的超详细教程

2.搜索mapping toolbox,并点击进入介绍界面:

利用Matlab绘制地图的超详细教程

3.点安装一路点确定:

利用Matlab绘制地图的超详细教程

worldmap及usamap

首先是最简单的海岸线世界地图:

利用Matlab绘制地图的超详细教程

附带陆地区域、湖泊、河流、城市的世界地图:

利用Matlab绘制地图的超详细教程

可以看到绘制的主要流程就是:

  • 创建地图坐标区域(通过axesm、worldmap、usamap)
  • 导入数据(通过load或者shaperead)通过geoshow、plotm、scatterm
  • 绘制图像(大部分普通坐标区域axes中出现的函数加个m就变成了用于地图坐标区域的函数)

worldmap创建地图坐标区域部分:

大家肯定想知道worldmap()里面支持哪些参数,这个连官网都没有写,事实上只要无参数运行一下函数worldmap()就会蹦出来一个地区选择框,大家可以试一下啊:

利用Matlab绘制地图的超详细教程

同时worldmap函数支持直接输入经纬度范围,例如:

利用Matlab绘制地图的超详细教程

数据导入部分:

其中可以通过load导入的matlab自带数据有:

  1. coastlines – 世界海岸线经纬度矢量
  2. conus – 用于连接的美国(conus)、五大湖、州际边界的经纬度阵列
  3. geoid60c – 全球大地水准面高度网格(以米为单位)/度
  4. greatlakes – 显示结构阵列中的北美五大湖
  5. korea5c – 朝鲜半岛的地形和水深测量
  6. koreaeqdata – 地震位置和震级
  7. layermtx – 用于教学的地理定位地形网格
  8. mapmtx – 用于教学的地理定位地形网格
  9. moonalb20c – 克莱门汀全球月球反照率图
  10. moontopo60c – 月球的克莱门汀激光雷达地形
  11. oceanlo – 显示结构数组中的海洋遮罩多边形
  12. russia – 网格化土地、水域、边界、外部区域
  13. seatempm -全球多通道海面温度网格
  14. stars – 4500+颗恒星的天体坐标和星等
  15. usamtx – 美国各州的数据网格,每度五个单元格
  16. usgslulegend – usgs 土地利用类别列表

其中可以通过shaperead导入的matlab自带数据有:

  1. landareas.shp – 全球陆地区域多边形
  2. tsunamis.shp – 全球1950-2006 年中到大型海啸的百分比
  3. usastatehi.shp – 高分辨率多边形美国各州形状
  4. usastatelo.shp – 低多边形美国各州形状
  5. worldcities.shp – 全球318个城市或人口稠密位置坐标
  6. worldlakes.shp – 世界上 37 个最大的多边形湖泊和内陆海域
  7. worldrivers.shp – 世界主要河流的线条形状
  8. boston_placenames.shp – 美国马萨诸塞州波士顿地名
  9. boston_roads.shp – 美国马萨诸塞州波士顿道路
  10. concord_hydro_area.shp – 美国马萨诸塞州康科德水域
  11. concord_hydro_line.shp – 美国马萨诸塞州康科德水路
  12. concord_roads.shp – 美国马萨诸塞州康科德道路

这些信息来自:mcrtoolboxmapmapdatacontents.m

局部区域陆地绘制

首先绘制个南极洲,南极洲的陆地信息可以从landareas.shp中提取 :

利用Matlab绘制地图的超详细教程

除此之外其他面积较大,可以通过如上方式获取的区域还有:

‘antarctica’‘africa and eurasia’‘north and south america’‘greenland’‘australia’‘baffin island’‘ellesmere island’‘new guinea’‘great britain’‘borneo’‘honshu’‘victoria island’‘celebes’‘new zealand north island’‘sumatra’‘madagascar’‘iceland’‘new zealand south island’‘newfoundland’‘luzon’‘devon island’‘ireland’‘cuba’‘java’‘mindanao’

例如我绘制中国附近的亚欧非大陆陆地:

利用Matlab绘制地图的超详细教程

映射贴图

南美洲和中太平洋的大地水准面高度:

要绘制高度映射图只需要将geoshow的’displaytype’属性设置为’surface’。

注意,官网的写法,[geoid60c,geoid60cr] = egm96geoid 2020a已经被移除,如果是之后的版本,请不要按照官网而是按照如下写法进行书写。

利用Matlab绘制地图的超详细教程

要是觉得不好看,可以增添陆地区域和更改颜色,例如像下面这么做:

利用Matlab绘制地图的超详细教程

我们发现有些大地水准面高度比0要高,就会画到板块上面,同时颜色插值不够密集,简单处理一下:

利用Matlab绘制地图的超详细教程

纹理贴图

朝鲜半岛为例:

要绘制颜色映射图只需要将geoshow的’displaytype’属性设置为’texturemap’。

利用Matlab绘制地图的超详细教程

这个demcmap是一个可以描述为一个需要同时设置海洋色带和陆地色带的colormap,下面是mathworks自带的例子:

利用Matlab绘制地图的超详细教程

颜色可能不是太好看哈,下面给个我自己弄的配色:

利用Matlab绘制地图的超详细教程

线路图绘制

以美国马萨诸塞州康科德道路道路为例

利用Matlab绘制地图的超详细教程

各种路径一共有六类,不但可以为不同设置线性,还可以设置颜色,粗细等各种信息:

利用Matlab绘制地图的超详细教程

利用Matlab绘制地图的超详细教程

usamap

利用Matlab绘制地图的超详细教程

再换个颜色叭

利用Matlab绘制地图的超详细教程

axesm

创建一个robinson样式,带框的地图坐标区域:

利用Matlab绘制地图的超详细教程

创建好的axesm可以通过setm修改样式:

利用Matlab绘制地图的超详细教程

展示一下所有类型的地图:

利用Matlab绘制地图的超详细教程

展示一些网格设置:

利用Matlab绘制地图的超详细教程

mlinelimit是经线的纬度范围,mlineexception是不受经线长度范围影响的经线,通过设置这两个参数可以不让所有经线都汇集到极地以显的杂乱。

利用Matlab绘制地图的超详细教程

利用Matlab绘制地图的超详细教程

与之相对应的还有plinelimit、plineexception

利用Matlab绘制地图的超详细教程

更多详细信息可以去这里查看:the map grid – matlab & simulink – mathworks 中国

来个用axesm绘图的实例:

利用Matlab绘制地图的超详细教程

一些地图绘制可用简易函数

subplot

首先值得一提的是subplot函数依旧适用:

例如:

利用Matlab绘制地图的超详细教程

tightmap

取消图像的白边,非常好用

利用Matlab绘制地图的超详细教程

边框标签网格快速开关函数

边框,网格,经线标签,纬线标签快速设置,类似hold ongrid on:

colormap

还可以设置其他自带颜色

利用Matlab绘制地图的超详细教程

colorbar

利用Matlab绘制地图的超详细教程

以上就是利用matlab绘制地图的超详细教程的详细内容,更多关于matlab绘制地图的资料请关注<计算机技术网(www.ctvol.com)!!>其它相关文章!

需要了解更多c/c++开发分享利用Matlab绘制地图的超详细教程,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1057868.html

(0)
上一篇 2022年3月2日
下一篇 2022年3月2日

精彩推荐