reference:https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html

shp: http://muchong.com/html/201304/5748467.html

MATLAB是著名的科学软件,具有绘图、编程、仿真等强大的功能。现在介绍MATLAB绘制中国地图的三种方式,分别是(1)使用m_map工具箱命令绘制中国地图;(2)使用mapshow和geoshow命令直接绘制中国地图;(3)使用worldmap+geoshow命令绘制中国地图。

由于没有找到合适的shp数据包,P/L用同一个shp;老旧的shp中缺少南海部分;

%E:\wml\matlab_workspace\map\chain_sharp.shp
close all, clear all, clc, dbstop if error
infoL=shapeinfo('E:\matlab_workspace\map\chain_sharp.shp')
infoP=shapeinfo('E:\matlab_workspace\map\chain_sharp.shp')
ChinaL=shaperead('E:\matlab_workspace\map\chain_sharp.shp');
ChinaP=shaperead('E:\matlab_workspace\map\chain_sharp.shp');
bou2_4lx=[ChinaL(:).X];
bou2_4ly=[ChinaL(:).Y];
bou2_4px=[ChinaP(:).X];
bou2_4py=[ChinaP(:).Y];
figure(1)
subplot(1,2,1);
m_proj('lambert','lon',[70,140],'lat',[0,60]);m_plot(bou2_4lx,bou2_4ly,'k');
m_grid;
subplot(1,2,2);
m_proj('robinson','lon',[70,140],'lat',[0,60]);m_plot(bou2_4px,bou2_4py,'k');
m_grid;
m_coast('color','r','linewidth',1);

  

左图使用的兰伯特(lambert)投影,右图使用的罗宾逊(robinson)投影和增加了海岸线(coast)。


fnshp_L='E:\matlab_workspace\map\chain_sharp.shp';
fnshp_P='E:\matlab_workspace\map\chain_sharp.shp';
infoL=shapeinfo(fnshp_L);
infoP=shapeinfo(fnshp_P);
readL=shaperead(fnshp_L);
readP=shaperead(fnshp_P); subplot(2,2,1);mapshow(readL,...
'DefaultFaceColor', 'green', ...
'DefaultEdgeColor', 'black');
title('China mapshow PolyLine_1')
subplot(2,2,2);mapshow(readP,...
'DefaultFaceColor', 'green', ...
'DefaultEdgeColor', 'black');
title('China mapshow Polygon_2')
subplot(2,2,3);geoshow(readL, ...
'DefaultFaceColor', 'red', ...
'DefaultEdgeColor', 'black');
title('China geoshow PolyLine-3')
subplot(2,2,4);geoshow(readP, ...
'DefaultFaceColor', 'red', ...
'DefaultEdgeColor', 'black');
title('China geoshow Polygon-4')

直接使用MATLAB本身自带的mapshow和geoshow命令绘制中国地图。这两个命令可以直接读取.shp格式的中国国界省界数据。

其中图1和图2使用的mapshow命令画得,并且图1使用的.shp数据为PloyLine属性的,图2使用的.shp数据为Ploygon属性的;图3和图4使用的geoshow命令画得,并且图3使用的.shp数据为PloyLine属性的,图4使用的.shp数据为Ploygon属性的。值得注意的是,title(‘ ’)命令中的下划线可以起到下角标的作用,而中划线就无此作用(对比Figure 2的前两幅图和后两幅图的标题就会发现)。


fnshp_L='E:\matlab_workspace\map\chain_sharp.shp';
fnshp_P='E:\matlab_workspace\map\chain_sharp.shp';
% infoL=shapeinfo(fnshp_L);
% infoP=shapeinfo(fnshp_P);
% readL=shaperead('E:\matlab_workspace\map\chain_sharp.shp');
% readP=shaperead('E:\matlab_workspace\map\chain_sharp.shp');
%figure(3)
subplot(2,2,1);
worldmap('China');
mapshow(fnshp_L,...
'DefaultFaceColor', 'green', ...
'DefaultEdgeColor', 'black'); subplot(2,2,2);
worldmap([0,55],[70,140]);
mapshow(fnshp_P,'FaceColor',[0.5,1.0,0.5]);
setm(gca,'MLineLocation',10);
setm(gca,'PLineLocation',10);
setm(gca,'MLabelLocation',20);
setm(gca,'PLabelLocation',10); subplot(2,2,3);
worldmap('China');
geoshow(fnshp_L, ...
'DefaultFaceColor', 'white', ...
'DefaultEdgeColor', 'black'); subplot(2,2,4);
worldmap([0,55],[70,140]);
geoshow(fnshp_P,'FaceColor',[0.5,1.0,0.5]);
setm(gca,'MLineLocation',10);
setm(gca,'PLineLocation',10);
setm(gca,'MLabelLocation',20);
setm(gca,'PLabelLocation',10);
title('中国地图','FontSize',14,'FontWeight','Bold')

 其中worldmap([0,55],[70,140])为设置显示纬度经度范围;setm(gca,'MLineLocation',10)为设置经度间隔;setm(gca,'PLineLocation',10)为设置纬度间隔;setm(gca,'MLabelLocation',20)为设置经度标签每隔几度;setm(gca,'PLabelLocation',10)为设置纬度标签每隔几度。 

可以看出worldmap+mapshow命令不起作用(前两张图不显示);然后worldmap+geoshow命令起作用(后两张图效果不错)。

用matlab绘制中国地图的更多相关文章

  1. Android 绘制中国地图

    最近的版本有这样一个需求: 有 3 个要素: 中国地图 高亮省区 中心显示数字 面对这样一个需求,该如何实现呢? 高德地图 因为项目是基于高德地图来做的,所以很自然而然的想到了高德.但是当查阅高德地图 ...

  2. Javascript实战开发:教你使用raphael.js绘制中国地图

    最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大 ...

  3. R绘制中国地图,并展示流行病学数据

    流行病学的数据讲究“三间分布”,即人群分布.时间分布和空间分布.其中的“空间分布”最好是在地图上展示,才比较清楚.R软件集统计分析与高级绘图于大成,是最适合做这项工作了.关于地图的绘制过程,谢益辉.邱 ...

  4. D3.JS V4 绘制中国地图

    参考:http://bl.ocks.org/almccon/fe445f1d6b177fd0946800a48aa59c71 http://blog.csdn.net/lzhlzz/article/d ...

  5. 利用d3.js绘制中国地图

    d3.js是一个比較强的数据可视化js工具. 利用它画了一幅中国地图,例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3ZhcDE=/ ...

  6. 用echarts绘制中国地图

    在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...

  7. echarts 如何在世界地图中绘制中国地图

    1.导入 world.china.js  这个js是将world.js 文件 以及china.js文件进行合并 (网上一些中国地图勾勒的身份曲线感觉很飘  所以自己加工了一下china.js中的数据, ...

  8. 基于D3JS绘制中国地图

    仿照D3JS官网上的美国地图制作了一个中国版的地图. D3JS官网上的版本: http://bl.ocks.org/NPashaP/a74faf20b492ad377312 中国版的地图效果: 如要制 ...

  9. R语言作图 绘制中国地图

    参考:https://zhuanlan.zhihu.com/p/27360411 第一步.下载shapefile文件 一直都没有找到下载地址,死在了第一步 第二步.导入shp文件 第三步.画图

随机推荐

  1. Python 编程快速上手 第十一章 Web scrapping

    前言 这一章讲了如何在 Web 上抓取相关的信息,工具是三个模块: webbrowser 模块:用于打开浏览器指定页面 requests 模块:用于下载文件 Beautiful Soup 模块:用于解 ...

  2. boke练习: category类的编辑修改,总是提示:该分类名称已经存在

    boke练习: category类的编辑修改,总是提示:该分类名称已经存在 本利采用的dao是: jpaRepository方式 先看原始代码: category的实体类 @Entity public ...

  3. centos7: 将nginx,php-fpm加入开机启动

    1. 自己新建一个脚本,如centnet-service.sh 经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动nginx,phpf-pm等服务 ...

  4. p1460 Healthy Holsteins

    列举所有的子集找最优就行. #include <iostream> #include <cstdio> #include <cmath> #include < ...

  5. 关于linux中用vi新建立一个.c文件无法保存,显示E212错误的时候

    在ubuntu16.04环境下,用vi新键.c文件,怎么保存也不能 先按ESC  然后:  在后wq  可是显示文件212错误. 后来知道在建立.c的文件夹的权限不对.这里的权限用 ls -l来查看 ...

  6. 将一台电脑上的虚拟机上的系统复制到另一台电脑的虚拟机上!!!and想询问大神们问题的解决办法??

    虚拟机是Oracle VM VitualBox版本 前段日子oracle老师让课下安装虚拟机+windows8+oracle数据库,但悲伤的我安了七八遍(重装系统+安装数据库+配置数据库)依旧在配置数 ...

  7. sun.misc.BASE64Encoder图片编码,并在页面显示

    Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.在上面的Data URI中,data表示取得数据的协定名称,image/pn ...

  8. Python的字典dict和set

    Python内置了字典:dict的支持,dict全称dictionary: 表达式为dict{key,value} 使用键值对来存储数据 eg: 使用dict来存储姓名和分数 d = {'bob':2 ...

  9. vijos 清点人数

    背景 NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去.由于NK中学的学生很多,在火车开之前必须清点好人数. 描述 初始时,火车上没有学生:当同学们开始上火车时,年级主任从第一节车厢出 ...

  10. 浅谈mysql中各种表空间(tablespaces)的概念

    mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...