爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 20833|回复: 16

[源程序] MATLAB三种绘制中国地图的方法(m_map/mapshow,geoshow/worldmap+geoshow)

[复制链接]

新浪微博达人勋

发表于 2017-6-18 14:25:28 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
MATLAB绘制中国地图的三种方式有:
(A)使用m_map工具箱命令绘制中国地图;
(B)使用mapshow和geoshow命令直接绘制中国地图;
(C)使用worldmap+geoshow命令绘制中国地图。
说明:
(1)使用m_map工具箱命令绘制中国地图需要先安装m_map工具箱,这篇百度经验"MATLAB学习与使用:安装M_Map工具箱和测试使用"
http://jingyan.baidu.com/article/22fe7cedc689253003617f54.html,详细介绍了m_map工具箱的安装、测试和简单使用。
(2)使用A,B和C三种方式绘制中国地图时,都用到了.shp格式的中国国界省界地图数据,关于.shp地图数据下载网上有很介绍。

使用(A),(B)和(C)三种方式绘制中国地图源代码如下:figure(1),figure(2)和figure(3)分别使用了A、B、C三种方式绘制中国地图。关于代码中命令的说明,参考百度经验“MATLAB3种方式绘制地图(m_map/mapshow/geoshow)
http://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html

close all, clear all, clc, dbstop if error
infoL=shapeinfo('D:\Matlab\MATLAB2017\bou2_4l.shp')
infoP=shapeinfo('D:\Matlab\MATLAB2017\bou2_4p.shp')
ChinaL=shaperead('D:\Matlab\MATLAB2017\bou2_4l.shp');
ChinaP=shaperead('D:\Matlab\MATLAB2017\bou2_4p.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);

figure(2)
fnshp_L='D:\Matlab\MATLAB2017\bou2_4l.shp';
fnshp_P='D:\Matlab\MATLAB2017\bou2_4p.shp';
readL=shaperead(fnshp_L);readP=shaperead(fnshp_P);
subplot(2,2,1);mapshow(readL,'Color','k');        title('China mapshow PolyLine_1')
subplot(2,2,2);mapshow(readP,'FaceColor','r'); title('China mapshow Polygon_2')
subplot(2,2,3);geoshow(readL,'Color','r');         title('China geoshow PolyLine-3')
subplot(2,2,4);geoshow(readP,'FaceColor','y'); title('China geoshow Polygon-4')

figure(3)
subplot(2,2,1);
worldmap('China');               mapshow(fnshp_L,'Color','k');
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,'Color','k');
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')

心得和问题:(1)bou2_4p.shp作为Polygon类型的数据,用m_map工具箱中哪个命令才可以画出填色的图像,而不是只画出边界(figure(1)右图只是边界线)。(2)采用worldmap+mapshow命令不起作用(看图figure(3)前两张图可知),只有worldmap+geoshow命令起作用(可以画出lambert投影的感觉)。(3)如果没有worldmap命令,只采用geoshow命令,其绘图将与figure(2)一样,没有lambert投影的感觉。(4)其实,mapshow和geoshow命令可以直接画图,例如mapshow('D:\Matlab\MATLAB2017\bou2_4l.shp')或者geoshow('D:\Matlab\MATLAB2017\bou2_4l.shp')直接就出图,根本不用shaperead命令。上述代码复杂,有时只是强迫症而已。

以上不足,欢迎指导,也欢迎对两篇百度经验关注、评论。
(1)MATLAB学习与使用:安装M_Map工具箱和测试使用             http://jingyan.baidu.com/article/22fe7cedc689253003617f54.html
(2)MATLAB3种方式绘制地图(m_map/mapshow/geoshow)  http://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html
最后上图,采用A,B和C三种方式画的图figure(1),figure(2),figure(3)


2.jpg

4.jpg

6.jpg

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-6-18 15:11:43 | 显示全部楼层
附bou2_4l.shp和bou2_4p.shp数据

bou2_4l.shp

1.33 MB, 下载次数: 95, 下载积分: 金钱 -5

bou2_4p.shp

1.44 MB, 下载次数: 77, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-18 21:36:35 | 显示全部楼层
很好的资源,学习啦~~~{:eb502:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-19 22:10:42 | 显示全部楼层
好东西{:5_213:}{:5_213:}{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-8-28 15:47:24 | 显示全部楼层
{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-8-29 06:33:54 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-29 13:07:10 | 显示全部楼层
可以画到市级吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-24 08:32:14 | 显示全部楼层
Violet_/wx 发表于 2017-8-29 13:07
可以画到市级吗?

可以画地级市,下图为证 微信图片_20171026065736.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-7 23:46:52 | 显示全部楼层
喔 真的可以诶 谢谢楼主
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-12-26 19:05:05 | 显示全部楼层
请问楼主要是想画腾格里沙漠能画吗,数据去哪下载
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表