Matlab绘制中国地图超全教程详解

目录
  • 各省边界线绘图
  • 省份填色图
  • 中国公路交通图
  • 中国铁路交通图
  • 中国河流图
  • 组合美化图
    • 美化图一
    • 美化图二

依旧需要用到Mapping Toolbox不会安装的可以看我上一篇

虽然我们只读取shp文件,但需要保证文件夹里还有shx文件及dbf文件

各省边界线绘图

provinces=shaperead('bou2_4l.shp','UseGeoCoords',true);

% 绘图
worldmap('China');
geoshow(provinces)

省份填色图

provinces=shaperead('bou2_4p.shp','UseGeoCoords',true);

% 绘图
worldmap('China');
faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(provinces)],'FaceColor',polcmap(numel(provinces))});
geoshow(provinces,'DisplayType','polygon','SymbolSpec',faceColors)

改个颜色:

provinces=shaperead('bou2_4p.shp','UseGeoCoords',true);

% 插值定义颜色
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(provinces)),'linear')';
C1(:,2)=interp1(0:5,C(:,2),linspace(0,5,numel(provinces)),'linear')';
C1(:,3)=interp1(0:5,C(:,3),linspace(0,5,numel(provinces)),'linear')';

% 绘图
worldmap('China');
faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(provinces)],'FaceColor',C1});
geoshow(provinces,'DisplayType','polygon','SymbolSpec',faceColors)

标注省份名称

provinces=shaperead('bou2_4p.shp','UseGeoCoords',true);

% 插值定义颜色
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(provinces)),'linear')';
C1(:,2)=interp1(0:5,C(:,2),linspace(0,5,numel(provinces)),'linear')';
C1(:,3)=interp1(0:5,C(:,3),linspace(0,5,numel(provinces)),'linear')';

% 绘图
worldmap('China');
faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(provinces)],'FaceColor',C1});
geoshow(provinces,'DisplayType','polygon','SymbolSpec',faceColors)

% 读取首都和省级行政中心位置信息并标记
pnames=shaperead('res1_4m.shp','UseGeoCoords',true);
for i=1:numel(pnames)
    textm(pnames(i).Lat,pnames(i).Lon,pnames(i).NAME, ...
   'HorizontalAlignment','center','FontSize',5,'color','k')
end

单独绘制某个省份:

worldmap([42,55],[120,137]);

% 从中国省份数据文件中获取黑龙江省
P=shaperead('bou2_4p.shp','UseGeoCoords',true,...
  'Selector',{@(name) strcmp(name,'黑龙江省'),'NAME'});
patchm(P.Lat,P.Lon, [0.5 0.7 0.5])

中国公路交通图

borders=shaperead('bou1_4p.shp','UseGeoCoords',true);
roads=shaperead('roa_4m.shp','UseGeoCoords',true);
worldmap('China');

geoshow(borders,'FaceColor',[239,238,234]./255)
geoshow(roads,'Color',[250,227,158]./255,'LineWidth',1.5)

中国铁路交通图

borders=shaperead('bou1_4p.shp','UseGeoCoords',true);
rails=shaperead('rai_4m.shp','UseGeoCoords',true);
worldmap('China');

geoshow(borders,'FaceColor',[239,238,234]./255)
geoshow(rails,'Color',[.2,.2,.2],'LineWidth',1,'LineStyle','-.')

中国河流图

borders=shaperead('bou1_4p.shp','UseGeoCoords',true);
riversp=shaperead('hyd1_4p.shp','UseGeoCoords',true);
riversl=shaperead('hyd1_4l.shp','UseGeoCoords',true);
worldmap('China');

geoshow(borders,'FaceColor',[239,238,234]./255)
geoshow(riversp,'FaceColor',[127,141,181]./255,'EdgeColor',[127,141,181]./255)
geoshow(riversl,'Color',[127,141,181]./255,'LineWidth',1)

组合美化图

美化图一

ax=worldmap('China');
setm(ax,'FFaceColor',[153,179,204]./255)

% 绘制附近大陆
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])

% 绘制中国国界
bordersl=shaperead('bou1_4l.shp','UseGeoCoords',true);
geoshow(bordersl,'Color',[.3,.3,.3],'LineWidth',1)
bordersp=shaperead('bou1_4p.shp','UseGeoCoords',true);
patchm([bordersp.Lat],[bordersp.Lon],[239,238,234]./255);

% 绘制河流
riversp=shaperead('hyd1_4p.shp','UseGeoCoords',true);
riversl=shaperead('hyd1_4l.shp','UseGeoCoords',true);
geoshow(riversp,'FaceColor',[127,141,181]./255,'EdgeColor',[127,141,181]./255)
geoshow(riversl,'Color',[127,141,181]./255,'LineWidth',1)

% 绘制公路
roads=shaperead('roa_4m.shp','UseGeoCoords',true);
geoshow(roads,'Color',[250,227,158]./255,'LineWidth',1.5)

tightmap

美化图二

ax=worldmap('china');
setm(ax,'mapprojection','mercator');

% 绘制国界
bordersl=shaperead('bou1_4l.shp','UseGeoCoords',true);
geoshow(bordersl,'Color',[.3,.3,.3],'LineWidth',1)
% 绘制省份
colorList=[197,228,212;255,254,216;251,197,221;199,205,231]./255;
colorList=repmat(colorList,[250,1]);
provinces=shaperead('bou2_4p.shp','UseGeoCoords',true);
colorList=colorList(1:numel(provinces),:);
faceColors=makesymbolspec('Polygon',{'INDEX',[1 numel(provinces)],'FaceColor',colorList});
geoshow(provinces,'DisplayType','polygon','SymbolSpec',faceColors)

% 首都
pnames=shaperead('res1_4m.shp','UseGeoCoords',true);
geoshow(pnames(1).Lat,pnames(1).Lon,'DisplayType','point','Marker','p',...
    'MarkerEdgeColor',[.8,0,0],'MarkerFaceColor',[.8,0,0])

% 指北针
northarrow('latitude',50,'longitude',80,'scaleratio',.08,'FaceColor',[.4,.4,.4])

% 比例尺
scaleruler on
setm(handlem('scaleruler1'), ...
    'XLoc',-3.2e6,'YLoc',1.8e6, ...
    'MajorTick',0:500:2000,...
    'MinorTick',0:40:200,'FontSize',7)
scaleruler('units','nm')
setm(handlem('scaleruler2'), ...
    'XLoc',-3.15e6, ...
    'YLoc',1.7e6, ...
    'TickDir','down', ...
    'MajorTick',0:250:1000,...
    'MinorTick',0:40:200,...
    'MajorTickLength',km2nm(25),...
    'MinorTickLength',km2nm(12.5),'FontSize',7)

% 小地图
h2=axes('pos',[0.67 0.15 0.13 0.2]);
worldmap([1 22],[106 122])
setm(h2,'FFaceColor',[197,213,236]./255,'FEdgeColor',[.3,.3,.3],'FLineWidth',1.5)
insert1=shaperead('bou2_4l.shp','UseGeoCoords',true);
geoshow(insert1,'Color',[.2,.2,.2],'LineWidth',1)
insert2=shaperead('bou2_4p.shp','UseGeoCoords',true);
geoshow(insert2,'FaceColor','w')
mlabel off
plabel off
gridm off

代码和数据:

链接:https://pan.baidu.com/s/1ZvMTLVElEWgQ3TFOmDXyCg  提取码:1234

到此这篇关于Matlab绘制中国地图超全教程详解的文章就介绍到这了,更多相关Matlab绘制地图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Python实现画一个中国地图

    为什么是Python 先来聊聊为什么做数据分析一定要用Python或R语言.编程语言这么多种,Java, PHP都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用Python语言? 数据分析只是一个需求,理论上来讲,任何语言都可以满足任何需求,只是麻烦与简易之别.Python这门语言诞生也相当之早,它的第一个版本是26年前发表的,曾经(或者说当前)也被用于web开发,但是就流行程度来说,远远干不过Java和PHP.东方不亮西方亮,在与Java干仗失败的这20几年时光里,Python练就了

  • matlab画三维图像的示例代码(附demo)

    当我们学习surface命令时,已经看到了三维作图的一些端倪.在matlab中我么可以调用mesh(x,y,z)函数来产生三维图像. 首先,我们用z=cos(x)sin(y)在-2pi ≤x,y≤ 2pi内的图像来看看: [x,y] = meshgrid(-2*pi:0.1:2*pi); z = cos(x).*sin(y); mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z') 显示图像如下: 同样用mesh命令产生z = ye-(x2+y2)的三维图

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

    目录 MappingToolbox工具箱安装 局部区域陆地绘制 映射贴图 纹理贴图 线路图绘制 usamap axesm 一些地图绘制可用简易函数 subplot tightmap 边框标签网格快速开关函数 colormap colorbar worldmap和usamap是axesm的子类,worldmap是用于生成世界地图坐标区域,usamap用于生成美国地图坐标区域,本文先在worldmap函数基础上讲解如何导入各种数据绘制各种类型图片,略提一下如何使用usamap,再讲解axesm的各种

  • 利用Matlab绘制各类特殊图形的实例代码

    Matlab绘图介绍 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作.这类操作将图形的每个图形元素(如坐标轴.曲线.文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分. Matlab绘制特殊图形 1. 绘制极坐标图 说明:使用polarplot函数绘制极

  • java和matlab画多边形闭合折线图示例讲解

    1.使用matlab作闭合多边形图 没有找到直接画多边形的函数,只能是将各个点的坐标保存在数组中,将一个点与其相邻的点相连,并将最后一个点与第一个点连接.下面是一个示例的.m文件: 复制代码 代码如下: clear;clc;a=[0 2 4 6 8 10 12 14;0 2 1 4 6 6 5 7];  %要连接的点坐标 x;y[n,m]=size(a);for i=1:m-1;    line([a(1,i),a(1,i+1)],[a(2,i),a(2,i+1)]);  %连接节点line([

  • Python pyecharts实现绘制中国地图的实例详解

    目录 实例演示 1.pyecharts 1.9.1 版本安装与数据准备 2.添加数据项,默认中国地图显示 常用配置项及参数解析 1.设置是否默认选中 2.设置地图颜色类型是否分段显示 3.缩放平移配置 4.启用和关闭图形标记 5.关闭标签名称显示 6.颜色设置:标签颜色.区域颜色.边框颜色 实例演示 先给大家看下效果图哈. 1.pyecharts 1.9.1 版本安装与数据准备 首先需要安装 pyecharts 库,直接 pip install pyecharts 就好了. 新版本的话不需要单独

  • MATLAB数学建模之画图汇总

    1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 1.plot()函数 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横.纵坐标的二维曲线. 例: t=0:0.1:2*pi; x=2 * t; y=t.*sin(t).*sin(t); plot(x, y); 2. 含多个输入参数的plot函数 plot函数可以包含若干组向量对,每一组可以绘制出一条曲线.含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,-,xn,

  • Matlab绘制中国地图超全教程详解

    目录 各省边界线绘图 省份填色图 中国公路交通图 中国铁路交通图 中国河流图 组合美化图 美化图一 美化图二 依旧需要用到Mapping Toolbox不会安装的可以看我上一篇 虽然我们只读取shp文件,但需要保证文件夹里还有shx文件及dbf文件 各省边界线绘图 provinces=shaperead('bou2_4l.shp','UseGeoCoords',true); % 绘图 worldmap('China'); geoshow(provinces) 省份填色图 provinces=sh

  • Java四个线程常用函数超全使用详解

    目录 前言 1. wait() 2. join() 3. sleep() 4. yield() 5. 总结 5.1 wait和join的区别 5.2 wait和sleep的区别 前言 之前没怎么关注到这两个的区别以及源码探讨 后面被某个公司面试问到了,开始查漏补缺 1. wait() 使当前线程等待,直到它被唤醒,通常是通过被通知或被中断,或者直到经过一定的实时时间. 本身属于一个Object 类,查看源代码也可知:public class Object { 查看其源码可知,一共有三个重载的方法

  • vue+echarts实现中国地图流动效果(步骤详解)

    @vue+echarts实现中国地图流动效果 #话不多说看效果图 操作步骤: 执行命令:npm run echarts -s 并回车 看到这样的提示代表安装成功 PS:网络不好的情况建议用cnpm淘宝镜像(全局终端执行命令:npm i -g cnpm --registry=https://registry.npm.taobao.org) 下载china.js 链接: https://pan.baidu.com/s/1EODVh9tJNEbFebbrhKyd_Q 提取码: gjz4 引入 impo

  • Matlab绘制散点密度图的教程详解

    目录 效果 1工具函数完整代码 2参数说明 3使用方式 3.1散点赋色 3.2等高线图 3.3带直方图的散点图 3.4带直方图的等高线图 4使用方式扩展–与ggplot修饰器联动 效果 原理也很简单,通过matlab自带的ksdensity获得网格每一点密度,通过密度拟合曲面,再计算每个数据点对应的概率,并将概率映射到颜色即可为了怕大家找不到函数这次工具函数放到最前面 1工具函数完整代码 function [CData,h,XMesh,YMesh,ZMesh,colorList]=density

  • Python可视化绘制图表的教程详解

    目录 1.Matplotlib 程序包 2.绘图命令的基本架构及其属性设置 3.Seaborn 模块介绍 3.1 未加Seaborn 模块的效果 4.描述性统计图形概览 4.1制作数据 4.2 频数分析 python 有许多可视化工具,但本书只介绍Matplotlib.Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在python脚本,IPython的交互环境下.Web应用程序中使用.该项目是由John Hunter 于2002年启动,其目的是为python构建MA

  • vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解

    在开发过程中发现 vue-baidu-map 封装的 BmPolyline 折线组件不能顺利绘制出带箭头的纹理. 原因是 BmPolyline 文档中虽然有 icons 属性,但是对应的源文件中并没有props接收 icons 最初的开发思路: 根据 vue-baidu-map 折线组件的官方文档,在vue中通过Prop,为 BmPolyline 组件传递一个 icons 数组,数组的元素必须为 IconSequence 类的实例对象. 而 IconSequence 类的实例对象则是在 Baid

  • 利用python绘制中国地图(含省界、河流等)

    我们可以使用Basemap这个工具包来实现中国地图的绘制 首先需要加载一些包: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap Basemap包就是气象画图的利器,现在我们就可以愉快的画图了! plt.figure(1) map=Basemap() map.drawcoastlines() plt.title(r'$World\ Map$',fontsize=2

  • vue 使用 echarts 绘制中国地图的实现代码

    1. 插入echarts 所需模块 import echarts from "echarts"; import 'echarts/map/js/china' // 使用中国地图需把China.js文件引入 2. 正式代码部分 //初始化echarts实例 通过传参获取要放置的id名称 var myChart = echarts.init(document.getElementById("容器的id名称")); // 指定图表的配置项和数据 var optionMap

  • Python绘制散点图的教程详解

    少废话,直接上代码 import matplotlib.pyplot as plt import numpy as np # 1. 首先是导入包,创建数据 n = 10 x = np.random.rand(n) * 2# 随机产生10个0~2之间的x坐标 y = np.random.rand(n) * 2# 随机产生10个0~2之间的y坐标 # 2.创建一张figure fig = plt.figure(1) # 3. 设置颜色 color 值[可选参数,即可填可不填],方式有几种 # col

随机推荐