- 积分
- 3946
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-9-17
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 英语得优秀... 于 2018-4-7 09:05 编辑
最近画我国地图时遇到要添加长江黄河的问题,第一想法是来论坛里寻找长江黄河的shape文件。遗憾的是查询无果,论坛里出现的shp文件并没有只显示长江黄河的。于是,手动提取了matlab自带worldrivers的部分数据,用于m_map绘图。现分享一些经验,供大家参考。
matlab的worldrivers是一个128*1维的结构体数据,读者可执行如下操作进行数据读取。其中,黄河的信息包含在第69和第73个变量内,长江则包含在第82和第84个变量中。 - rivers = shaperead('worldrivers', 'UseGeoCoords', true);
- %rivers = 128x1 struct array(128条河流) with fields:
- % Geometry 几何结构:线型
- % BoundingBox 河流端点的经纬度
- % Lon 纬度(点集)
- % Lat 经度(与经度对应)
- % Name 名字
- %显示河流
复制代码
提取出二河流的经、纬度信息,分别存放于"yellow.mat"和"yangtze.mat"文件内。完成上述步骤后,即可利用m_map绘制包含长江黄河的中国地图。代码如下(地图中除叠加长江黄河外,同时增加了南海地图的绘制): - %包含长江和黄河的中国地图绘制
- %%
- guojie = shaperead('bou2_4l.shp'); % 读取地图文件;
- bou1_4px = [guojie(:).X]; % 读取国界和省界信息;
- bou1_4py = [guojie(:).Y]; % X为经度,Y为纬度;
- load('F:\matlab_scripts\analysis\2.spatial\yellow.mat'); % 读取黄河的经纬度数据;
- load('F:\matlab_scripts\analysis\2.spatial\yangtze.mat'); % 读取长江的经纬度数据;
- m_proj('Miller','lon',[73,136],'lat',[15,55]); % 设置地图投影方式及画图的经纬度范围;
- m_plot(bou1_4px,bou1_4py,'Color','k'); % 绘制地图;
- m_grid('Tickdir','in','FontSize',16,'LineStyle','none','LineWidth',1.2); % 设置坐标轴属性;
- hold on
- m_plot(yellow_x,yellow_y,'Color','b','LineWidth',1.3); % 叠加长江黄河;
- m_plot(yangtze_x,yangtze_y,'Color','b','LineWidth',1.3);
- %叠加南海地图
- h1 = axes('Position',[0.786 0.139 0.12 0.24]); % 设置南海地图在图中的位置;
- m_proj('Miller','lon',[106,122],'lat',[2,26]);
- m_plot(bou1_4px,bou1_4py,'Color','k');
- m_grid('XTick',[],'YTick',[]);
- print(gcf,'-djpeg','-r600',['F:\map.jpeg']);
复制代码 |
评分
-
查看全部评分
|