• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用matlab绘制中国地图 - limanjihe

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

用matlab绘制中国地图

 

 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命令起作用(后两张图效果不错)。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
JavaScript新发展 CoffeeScript Dart Rust Node.js发布时间:2022-07-18
下一篇:
RUST交叉编译arm64的浮点函数问题发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap