MATLAB绘制一幅中国地图

博主跟大家分享一下如何用MATLAB制作一幅中国地图,那废话不多说,我们先看一下最终效果吧。

在这里插入图片描述

mercator墨卡托圆柱投影地图

在这里插入图片描述

lambert兰伯特圆锥投影地图

一张中国地图大概包括以下要素:

中国矢量数据(面、省界线等shp数据)、地图四要素(图名或标题、指北针、比例尺、图例),最好加一个海南岛及南海诸岛的鹰眼图。

大概思路:

清理内存

地图投影

加载面文件

加载省界线文件(包含国界(含九段线))

显示省会点

省会标注

添加图名

添加图例

添加指北针

添加鹰眼图

整体代码如下:

close all, clear all, clc, dbstop if error

h1=worldmap('china')
setm(h1,'mapprojection','mercator');%圆柱投影
%setm(h1,'mapprojection','lambert');%正形圆锥投影
setm(h1,'FFaceColor','w')%图廓

ChinaP=shaperead('bou1_4p.shp','UseGeoCoords',true)%中国面文件
ChinaL=shaperead('bou2_4l.shp','UseGeoCoords',true)%中国省界线文件(包含九段线)
CapLon=[117.000923,115.48333,125.35000,127.63333,123.38333,111.670801,87.68333,103.73333,106.26667,112.53333,108.95000,113.65000,117.283042,119.78333,120.20000,118.30000,113.23333,115.90000,110.35000,108.320004,106.71667,113.00000,114.298572,104.06667,102.73333,91.00000,96.75000,117.20000,121.55333,106.45000,116.41667,121.30,114.10000,113.50000];
CapLat=[36.675807,38.03333,43.88333,47.75000,41.80000, 41.818311,43.76667,36.03333,37.46667,37.86667,34.26667,34.76667, 31.86119,32.05,30.266,26.0833,23.16667,28.68333,20.01667, 22.8240,26.56667,28.2166, 30.58435,30.6666,25.05000,30.600,36.5666,39.133,31.2000, 29.566,39.9166, 25.03,22.20,22.20];
names={'济南','石家庄','长春','哈尔滨','沈阳', '呼和浩特','乌鲁木齐','兰州','银川','太原','西安','郑州','合肥','南京','杭州','福州','广州','南昌','海口','南宁','贵阳','长沙','武汉','成都','昆明','拉萨','西宁','天津','上海','重庆', '北京','台北','香港','澳门'};

geoshow(ChinaP,'Facecolor',[1 1 0.5])%显示面
geoshow(ChinaL,'LineStyle','-.','Color','k','LineWidth',1)%显示界线
geoshow(CapLat,CapLon,'DisplayType','point','Marker','.','MarkerEdgeColor','red')%省会点
geoshow(39.9166,116.41667,'DisplayType','point','Marker','p','MarkerEdgeColor','red')%首都
%省会标注
for i=1:numel(names)
    textm(CapLat(i)+0.3,CapLon(i)+0.3,names(i),'color','k','FontSize',8)
end
%图名
title('中国政区地图','FontSize',20);

%图例
legend({'省界线','省会','首都','国界线'},'FontSize',12,'Location','southwest')

%比例尺
scaleruler('units','km')
setm(handlem('scaleruler1'),'RulerStyle','lines','MajorTick',0:500:1000,'MinorTick',0:250:500,'TickDir','down')

%海南岛及南海诸岛
h2=axes('pos',[0.5922 0.15 0.13 0.2])
worldmap([5.559248066 20.549868679],[106.680363685 122.034461754])
setm(h2,'FFaceColor','w')
insert1=shaperead('bou2_4l.shp','UseGeoCoords',true)
geoshow([insert1.Lat],[insert1.Lon],'Color','k','LineWidth',1)
mlabel
plabel
gridm
setm(h2,'FFacecolor','c')
title('海南岛及南海诸岛','FontSize',6)

% 指北针
northarrow('latitude',50,'longitude',62)
h=handlem('NorthArrow');
set(h,'FaceColor','k')

运行结果图:

在这里插入图片描述

数据文件在博主主页文件ChinaMap.rar压缩包中,请自行下载。

在这里插入图片描述

扫码关注微信公众号
要用MATLAB绘制一幅风速等值图,我们需要以下步骤: 1. 准备数据:首先,需要获取包含风速数据的矩阵。这个矩阵可以是二维的,也可以是三维的,具体取决于你的数据。每个元素表示一个特定位置的风速值。 2. 创建网格:基于你的数据矩阵,我们可以创建一个网格来表示不同位置的风速数据。使用"meshgrid"函数可以方便地生成一组坐标点。对于二维矩阵,可以使用两个向量表示 x 和 y 轴上的坐标点。 3. 绘制等值线:使用 "contour" 或者 "contourf" 函数,我们可以将网格数据进行等值线的绘制。"contour" 函数绘制的是带有等值线的图像,而 "contourf" 函数绘制的是填充了颜色的等值线图像。你可以根据自己的需求选择其中一个函数。 4. 添加标签和标题:为了增加图像的可读性,你可以考虑添加一些标签和标题。使用 "xlabel"、"ylabel" 和 "title" 函数,我们可以为 x 轴、y 轴和整个图像添加文本标签。 5. 设置颜色映射:你也可以通过设置 colormap 来为你的风速等值图添加颜色。MATLAB 提供了许多内置的颜色映射,你可以选择最适合你数据和可视化风格的颜色。 6. 显示图像:最后,使用 "colorbar" 函数显示颜色刻度标尺,并使用 "axis" 函数设定图像的坐标轴范围。使用 "legend" 函数添加图例,以解释颜色与风速的对应关系。 综上所述,以上是使用MATLAB绘制一幅风速等值图的主要步骤。具体的代码实现将根据你的数据结构和需求而有所不同。希望这些步骤能对你有所帮助。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值