matlab安装 超详细

您所在的位置:网站首页 matlab怎么安装 matlab安装 超详细

matlab安装 超详细

2022-05-31 16:12| 来源: 网络整理| 查看: 265

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

Mapping Toolbox工具箱安装

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

点击附加功能:在这里插入图片描述

搜索Mapping Toolbox,并点击进入介绍界面:在这里插入图片描述

点安装一路点确定:在这里插入图片描述

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

% 创建世界地图坐标区域 worldmap('World') % 导入海岸线数据 load coastlines % 绘制海岸线 plotm(coastlat,coastlon)

在这里插入图片描述 附带陆地区域、湖泊、河流、城市的世界地图:

% 创建世界地图坐标区域 ax=worldmap('World'); setm(ax,'Origin',[0 180 0]) % 绘制陆地 land=shaperead('landareas.shp','UseGeoCoords',true); geoshow(ax,land,'FaceColor',[0.5 0.7 0.5]) % 绘制湖泊 lakes=shaperead('worldlakes.shp','UseGeoCoords',true); geoshow(lakes,'FaceColor','blue') % 绘制河流 rivers=shaperead('worldrivers.shp','UseGeoCoords',true); geoshow(rivers, 'Color', 'blue') % 绘制城市 cities=shaperead('worldcities.shp','UseGeoCoords',true); geoshow(cities,'Marker','.','Color','red')

在这里插入图片描述

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

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

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

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

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

latlim=[-50 50]; lonlim=[160 -30]; worldmap(latlim,lonlim)

在这里插入图片描述

数据导入部分:

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

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

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

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

\mcr\toolbox\map\mapdata\Contents.m

局部区域陆地绘制

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

% 创建世界地图坐标区域并将区域设置为南极洲 worldmap('antarctica') % 从陆地区域数据文件中获取南极洲大陆数据并绘图 antarctica = shaperead('landareas.shp', 'UseGeoCoords', true,... 'Selector',{@(name) strcmp(name,'Antarctica'), 'Name'}); patchm(antarctica.Lat, antarctica.Lon, [0.5 1 0.5])

在这里插入图片描述

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

‘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’

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

% 创建世界地图坐标区域并将区域设置为中国 worldmap('China') % 从陆地区域数据文件中获取亚欧非大陆数据并绘图 antarctica = shaperead('landareas.shp', 'UseGeoCoords', true,... 'Selector',{@(name) strcmp(name,'Africa and Eurasia'), 'Name'}); patchm(antarctica.Lat, antarctica.Lon, [0.5 0.7 0.5]) % 加个海岸线美化一下 load coastlines plotm(coastlat,coastlon)

在这里插入图片描述

映射贴图

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

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

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

% 大地水准面高度数据及海岸线数据导入 load geoid60c.mat load coastlines % 创建某经纬度范围世界地图坐标区域 latlim=[-50 50]; lonlim=[160 -30]; worldmap(latlim,lonlim) % 绘制图像 geoshow(geoid60c,geoid60cR,'DisplayType','surface') geoshow(coastlat,coastlon,'Color','k')

在这里插入图片描述

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

% 大地水准面高度数导入 load geoid60c.mat % 创建某经纬度范围世界地图坐标区域 latlim=[-50 50]; lonlim=[160 -30]; ax=worldmap(latlim,lonlim); % 设置颜色 C=[222,238,209;126,190,174;144,213,220; 33,118,155;30,69,128;20,49,127]./255; geoshow(ax,geoid60c,geoid60cR,'DisplayType','surface') colormap(C) % 应用颜色 land=shaperead('landareas.shp','UseGeoCoords',true); geoshow(ax,land,'FaceColor',[0.5 0.7 0.5])

在这里插入图片描述

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

% 大地水准面高度数导入 load geoid60c.mat % 创建某经纬度范围世界地图坐标区域 latlim=[-50 50]; lonlim=[160 -30]; ax=worldmap(latlim,lonlim); % 设置颜色并插值细化 C=[222,238,209;126,190,174;144,213,220; 33,118,155;30,69,128;20,49,127]./255; C1(:,1)=interp1(0:5,C(:,1),0:.5:5,'linear')'; C1(:,2)=interp1(0:5,C(:,2),0:.5:5,'linear')'; C1(:,3)=interp1(0:5,C(:,3),0:.5:5,'linear')'; % 下面减了个100为了让最大值也小于0 geoshow(ax,geoid60c-100,geoid60cR,'DisplayType','surface') colormap(C1) % 应用颜色 land=shaperead('landareas.shp','UseGeoCoords',true); geoshow(ax,land,'FaceColor',[0.5 0.7 0.5])

在这里插入图片描述

纹理贴图

朝鲜半岛为例:

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

% 导入数据并绘制贴图版地图 load korea5c worldmap(korea5c,korea5cR); geoshow(korea5c,korea5cR,'DisplayType','texturemap') % 修改颜色 demcmap(korea5c)

在这里插入图片描述

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

load korea5c worldmap(korea5c,korea5cR); geoshow(korea5c,korea5cR,'DisplayType','texturemap') cmapsea=[.8 0 .8; 0 0 .8]; cmapland=[.7 0 0; .8 .8 0; 1 1 .8]; demcmap(korea5c,32,cmapsea,cmapland)

在这里插入图片描述

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

load korea5c worldmap(korea5c,korea5cR); geoshow(korea5c,korea5cR,'DisplayType','texturemap') cmapsea=[20,49,127;30,69,128;33,118,155;144,213,220]./255; cmapland=[10,133,102;197,226,102]./255; demcmap(korea5c,32,cmapsea,cmapland)

在这里插入图片描述

线路图绘制

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

roads=shaperead('concord_roads.shp'); lineStyle = makesymbolspec('Line',... {'CLASS',[1 3], 'LineStyle',':'},... {'CLASS',[4 6],'LineStyle','-.'}); mapshow(roads,'SymbolSpec',lineStyle);

在这里插入图片描述

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

roads=shaperead('concord_roads.shp'); lineStyle=makesymbolspec("Line", ... {'CLASS',2,'Color','#A2142F'}, ... {'CLASS',3,'Color','#77AC30'}, ... {'CLASS',6,'Color','#0072BD'}, ... {'Default','Color','k'}); mapshow(roads,'SymbolSpec',lineStyle);

在这里插入图片描述

roads=shaperead('concord_roads.shp'); lineStyle=makesymbolspec("Line", ... {'CLASS',[1 3],'LineStyle',':','LineWidth',2}, ... {'CLASS',[4 6],'LineStyle','-.','LineWidth',0.25}); mapshow(roads,'SymbolSpec',lineStyle);

在这里插入图片描述

usamap usamap("conus"); states=shaperead("usastatelo.shp",'UseGeoCoords',true); % 俩州离太远画不开,不要 for i=length(states):-1:1 if states(i).Name=="Alaska"||states(i).Name=="Hawaii" states(i)=[]; end end faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(states)],'FaceColor',... polcmap(numel(states))}); geoshow(states, 'DisplayType','polygon','SymbolSpec', faceColors)

在这里插入图片描述

再换个颜色叭

usamap("conus"); states=shaperead("usastatelo.shp",'UseGeoCoords',true); % 俩州离太远画不开,不要 for i=length(states):-1:1 if states(i).Name=="Alaska"||states(i).Name=="Hawaii" states(i)=[]; end end % 插值定义颜色 C=[222,238,209;126,190,174;144,213,220; 33,118,155;30,69,128;20,49,127]./255; C1(:,1)=interp1(0:5,C(:,1),linspace(0,5,numel(states)),'linear')'; C1(:,2)=interp1(0:5,C(:,2),linspace(0,5,numel(states)),'linear')'; C1(:,3)=interp1(0:5,C(:,3),linspace(0,5,numel(states)),'linear')'; faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(states)],'FaceColor',C1}); geoshow(states, 'DisplayType','polygon','SymbolSpec', faceColors)

在这里插入图片描述

axesm

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

axesm('MapProjection','robinson','Frame','on')

在这里插入图片描述

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

axesm('MapProjection','robinson','Frame','on') setm(gca,'FLineWidth',3,'Grid','on')

在这里插入图片描述

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

mapType={'balthsrt', 'behrmann', 'bsam', 'braun', 'cassinistd', 'cassini', 'ccylin', 'eqacylin', 'eqdcylin', 'giso', 'gortho', 'gstereo', 'lambcyln',... 'mercator', 'miller', 'pcarree', 'tranmerc', 'trystan', 'utm', 'wetch', 'apianus', 'collig', 'craster', 'eckert1', 'eckert2', 'eckert3', 'eckert4',... 'eckert5', 'eckert6', 'flatplrp', 'flatplrq', 'flatplrs', 'fournier', 'goode', 'hatano', 'kavrsky5', 'kavrsky6', 'loximuth', 'modsine', 'mollweid',... 'putnins5', 'quartic', 'robinson', 'sinusoid', 'wagner4', 'winkel', 'eqaconicstd', 'eqaconic', 'eqdconicstd', 'eqdconic', 'lambertstd', 'lambert',... 'murdoch1', 'murdoch3', 'polyconstd', 'polycon', 'vgrint1', 'bonne', 'werner', 'breusing', 'eqaazim', 'eqdazim', 'globe', 'gnomonic', 'ortho',... 'stereo', 'ups', 'vperspec', 'wiechel', 'aitoff', 'bries', 'hammer'}; for i=1:72 subplot(9,8,i) axesm('MapProjection',mapType{i},'Frame','on','FLineWidth',3,'Grid','on') tightmap end

在这里插入图片描述

展示一些网格设置:

% 某些视角下的地图坐标区 axesm('MapProjection','ortho','Frame','on',... 'grid','on','Origin',[40,40,14])

在这里插入图片描述

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

% 某些视角下的地图坐标区,经线的纬度范围[-75 75] axesm('MapProjection','ortho','Frame','on',... 'grid','on','Origin',[40,40,14],... 'MLineLimit',[-75 75])

在这里插入图片描述

% 某些视角下的地图坐标区,其他经线的纬度范围[-75 75],四条经线绘制完全 axesm('MapProjection','ortho','Frame','on',... 'grid','on','Origin',[40,40,14],... 'MLineLimit',[-75 75],... 'MLineException',[-90,0,90,180])

在这里插入图片描述

与之相对应的还有PLineLimit、PLineException

% 某些视角下的地图坐标区 axesm('MapProjection','ortho','Frame','on',... 'grid','on','Origin',[40,40,14],... 'PLineLimit',[-75 75])

在这里插入图片描述

更多详细信息可以去这里查看:The Map Grid - MATLAB & Simulink - MathWorks 中国

来个用axesm绘图的实例:

% 某些视角下的地图坐标区,其他经线的纬度范围[-75 75],四条经线绘制完全 axesm('MapProjection','ortho','Frame','on',... 'grid','on','Origin',[40,40,14],... 'MLineLimit',[-75 75],... 'MLineException',[-90,0,90,180]) % 导入海岸线数据 load coastlines % 绘制海岸线 plotm(coastlat,coastlon)

在这里插入图片描述

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

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

例如:

load korea5c subplot(1,2,1) worldmap('China') antarctica = shaperead('landareas.shp', 'UseGeoCoords', true,... 'Selector',{@(name) strcmp(name,'Africa and Eurasia'), 'Name'}); patchm(antarctica.Lat, antarctica.Lon, [0.5 0.7 0.5]) subplot(1,2,2) worldmap('Europe') antarctica = shaperead('landareas.shp', 'UseGeoCoords', true,... 'Selector',{@(name) strcmp(name,'Africa and Eurasia'), 'Name'}); patchm(antarctica.Lat, antarctica.Lon, [0.5 0.7 0.5])

在这里插入图片描述

tightmap

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

subplot(1,2,1) axesm('MapProjection','robinson','Frame','on','Grid','on') subplot(1,2,2) axesm('MapProjection','robinson','Frame','on','Grid','on') tightmap

在这里插入图片描述

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

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

framem on gridm on mlabel on plabel on % framem off gridm off mlabel offf plabel off colormap

还可以设置其他自带颜色

% 大地水准面高度数据及海岸线数据导入 load geoid60c.mat load coastlines subplot(1,2,1) % 创建某经纬度范围世界地图坐标区域 latlim=[-50 50]; lonlim=[160 -30]; ax1=worldmap(latlim,lonlim); % 绘制图像 geoshow(geoid60c,geoid60cR,'DisplayType','surface') colormap(ax1,summer) geoshow(coastlat,coastlon,'Color','k') subplot(1,2,2) % 创建某经纬度范围世界地图坐标区域 latlim=[-50 50]; lonlim=[160 -30]; ax2=worldmap(latlim,lonlim); % 绘制图像 geoshow(geoid60c,geoid60cR,'DisplayType','surface') colormap(ax2,pink) geoshow(coastlat,coastlon,'Color','k')

在这里插入图片描述

colorbar % 导入数据并绘制贴图版地图 load korea5c worldmap(korea5c,korea5cR); geoshow(korea5c,korea5cR,'DisplayType','texturemap') % 修改颜色 demcmap(korea5c) % 添加颜色栏 colorbar

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3