请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 21655|回复: 13

[程序设计] matlab在地图上叠加长江黄河

[复制链接]

新浪微博达人勋

发表于 2018-4-7 04:33:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 英语得优秀... 于 2018-4-7 09:05 编辑

   最近画我国地图时遇到要添加长江黄河的问题,第一想法是来论坛里寻找长江黄河的shape文件。遗憾的是查询无果,论坛里出现的shp文件并没有只显示长江黄河的。于是,手动提取了matlab自带worldrivers的部分数据,用于m_map绘图。现分享一些经验,供大家参考。

    matlab的worldrivers是一个128*1维的结构体数据,读者可执行如下操作进行数据读取。其中,黄河的信息包含在第69和第73个变量内,长江则包含在第82和第84个变量中。
  1. rivers = shaperead('worldrivers', 'UseGeoCoords', true);  
  2. %rivers =   128x1 struct array(128条河流) with fields:  
  3.      %   Geometry  几何结构:线型
  4.      %   BoundingBox  河流端点的经纬度
  5.      %   Lon  纬度(点集)
  6.      %   Lat  经度(与经度对应)
  7.      %   Name  名字
  8. %显示河流  
复制代码

    提取出二河流的经、纬度信息,分别存放于"yellow.mat"和"yangtze.mat"文件内。完成上述步骤后,即可利用m_map绘制包含长江黄河的中国地图。代码如下(地图中除叠加长江黄河外,同时增加了南海地图的绘制):
  1. %包含长江和黄河的中国地图绘制

  2. %%
  3. guojie = shaperead('bou2_4l.shp');                                         % 读取地图文件;
  4. bou1_4px = [guojie(:).X];                                                  % 读取国界和省界信息;
  5. bou1_4py = [guojie(:).Y];                                                  % X为经度,Y为纬度;
  6. load('F:\matlab_scripts\analysis\2.spatial\yellow.mat');                   % 读取黄河的经纬度数据;
  7. load('F:\matlab_scripts\analysis\2.spatial\yangtze.mat');                  % 读取长江的经纬度数据;

  8. m_proj('Miller','lon',[73,136],'lat',[15,55]);                             % 设置地图投影方式及画图的经纬度范围;
  9. m_plot(bou1_4px,bou1_4py,'Color','k');                                     % 绘制地图;
  10. m_grid('Tickdir','in','FontSize',16,'LineStyle','none','LineWidth',1.2);   % 设置坐标轴属性;

  11. hold on
  12. m_plot(yellow_x,yellow_y,'Color','b','LineWidth',1.3);                     % 叠加长江黄河;
  13. m_plot(yangtze_x,yangtze_y,'Color','b','LineWidth',1.3);  

  14. %叠加南海地图
  15. h1 = axes('Position',[0.786 0.139 0.12 0.24]);                             % 设置南海地图在图中的位置;
  16. m_proj('Miller','lon',[106,122],'lat',[2,26]);                           
  17. m_plot(bou1_4px,bou1_4py,'Color','k');
  18. m_grid('XTick',[],'YTick',[]);
  19. print(gcf,'-djpeg','-r600',['F:\map.jpeg']);
复制代码
map.jpeg

yangtze.mat

4.66 KB, 下载次数: 75, 下载积分: 金钱 -5

yellow.mat

4.63 KB, 下载次数: 68, 下载积分: 金钱 -5

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
二爷名声在外 + 10 + 2

查看全部评分

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

新浪微博达人勋

 楼主| 发表于 2018-4-7 05:26:32 | 显示全部楼层
本帖最后由 英语得优秀... 于 2018-4-7 05:36 编辑

尝试了很多次添加图片,都显示没有合法的文件上传,还望大家谅解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2018-4-7 08:11:12 | 显示全部楼层
英语得优秀... 发表于 2018-4-7 05:26
尝试了很多次添加图片,都显示没有合法的文件上传,还望大家谅解

如果不能按照图片方式上传,可以试试以附件方式上传添加
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-7 08:22:30 | 显示全部楼层
感谢楼主,我也想了好久没时限
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-7 08:59:21 | 显示全部楼层
二爷名声在外 发表于 2018-4-7 08:11
如果不能按照图片方式上传,可以试试以附件方式上传添加

多谢二爷的打赏和提醒,把输出图片的分辨率调成了300,发现就可以上传了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-7 12:46:14 | 显示全部楼层
学习了,感谢楼主。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-31 20:20:50 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-4-1 22:31:47 | 显示全部楼层
谢谢分享,学习了!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-4-2 08:25:27 | 显示全部楼层
优秀的小伙子
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-29 17:13:08 | 显示全部楼层
谢谢楼主的分享!很赞
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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