Matlab画地图之m_map
⼏个缺的图请移驾博客园:
参考:
⽓象家园:
毕业生骂翟天临M-Map:
shp的⽹站:
matlab利⽤m_map⼯具包画中国地图及散点云图:
百度经验出图:
快应⽤:
shp⽂件下载:
世界国家+中国⼤陆部分:
国家基础地理数据:
代码下载:
求内切圆外接圆:
缩放矩阵或图像:
扣shp:
⽂章⽬录
1、shp数据
⽬前搞到的shape⽂件有:中国科学院资源环境数据、从CSDN上下载的、奇哥给的。
1.1 中国科学院资源环境数据
这个数据精度很⾼,⽐如,数据2的P2 长度为925,这个数据P2长度是4461;当然精度⾼同时画起来也超级慢,我的lj 电脑画个图就可以吃⼀碗泡⾯了。
它配套⼀个xls⽂件:中国各省份与地级市的编码.xls⾥⾯存了省市代码。P2数据存在下⾯的问题:有的省名字缺失,P3数据有的也缺失,但是其对应的代码查询不到,所以不管了。下⾯补⼀下P2的省名字。
修正后的shp⽂件名为:sheng.shp。
1.2 从CSDN上下载的
P1file='D:\下载\Useful\shp\国家基础地理数据\bou1_4m\bou1_4p.shp';%国界多边形
L2file='D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4l.shp';%省界线
P2file='D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4p.shp';%省界多边形
P3file='D:\下载\Useful\shp\国家基础地理数据\bou3_4m\diquJie_polyline.shp';%地市级L4file='D:\下载\Useful\shp\国家基础地理数据\bou4_4m\BOUNT_line.shp';%县界线
P4file='D:\下载\Useful\shp\国家基础地理数据\bou4_4m\BOUNT_poly.shp';%县界多边形%读取国界shp⽂件的内容
L1=shaperead(L1file);
P1=shaperead(P1file);
L2=shaperead(L2file);
P2=shaperead(P2file);
P3=shaperead(P3file);
L4=shaperead(L4file);
P4=shaperead(P4file);
bou1_4lx=[L1(:).X];%提取经度信息
bou1_4ly=[L1(:).Y];%提取纬度信息
bou1_4px=[P1(:).X];%提取经度信息
bou1_4py=[P1(:).Y];%提取纬度信息
bou2_4lx=[L2(:).X];%提取经度信息
bou2_4ly=[L2(:).Y];%提取纬度信息
bou2_4px=[P2(:).X];%提取经度信息
bou2_4py=[P2(:).Y];%提取纬度信息
bou3_4px=[P3(:).X];%提取经度信息
bou3_4py=[P3(:).Y];%提取纬度信息
bou4_4lx=[L4(:).X];%提取经度信息
bou4_4ly=[L4(:).Y];%提取纬度信息
bou4_4px=[P4(:).X];%提取经度信息
郑恺女友程晓玥bou4_4py=[P4(:).Y];%提取纬度信息
figure;
subplot(231);
mapshow(L1,'Color','k');title('1China mapshow PolyLine-1')
subplot(232);
mapshow(P1,'FaceColor','r');title('1China mapshow Polygon-2')
subplot(233);
geoshow(P2,'FaceColor','y');title('2China geoshow Polygon-3')
subplot(234);
mapshow(L2,'Color','g');title('2China mapshow PolyLine-4')
subplot(235);
m_proj('miller','lon',[70,140],'lat',[10,60]);%选择投影⽅式
m_plot(bou3_4px,bou3_4py);%绘国界,默认⿊⾊,
m_grid;%绘制边框
title('3China m-proj PolyLine-5')
subplot(236);
m_proj('robinson','lon',[70,140],'lat',[10,60]);%选择投影⽅式
m_plot(bou4_4lx,bou4_4ly,'b');%绘国界,蓝⾊
m_grid;%绘制边框
title('4China m-proj PolyLine-6')
结果:
可以看到地级市只有内部线,想要使⽤,得和省界线配合使⽤
L3file='D:\下载\Useful\shp\国家基础地理数据\bou3_4m\diquJie_polyline.shp';%地市级
L2=shaperead(L2file);
L3=shaperead(L3file);
bou2_4lx=[L2(:).X];%提取经度信息
bou2_4ly=[L2(:).Y];%提取纬度信息
bou3_4lx=[L3(:).X];%提取经度信息
bou3_4ly=[L3(:).Y];%提取纬度信息
m_plot(bou3_4lx,bou3_4ly,'k');
hold on;
m_plot(bou2_4lx,bou2_4ly,'linewidth',3,'color','k');
1.3 奇哥给的
奇哥给的和上⾯那个是⼀样的,多了世界国家。下⾯将两个整合到⼀起。
代码⽤的是 3 中的功能1,然后将 NAME 改成 FCNAME 即可。调⽤:
Sjfile='D:\下载\Useful\shp\国家基础地理数据\世界国家\世界国家.shp';
sj=shaperead(Sjfile);
drawsheng(Sjfile,'中国');
1.4 数据汇总
⽂件名描述
猪肉炖粉条是哪个地方的菜bou1_4m中国国界
bou2_4m中国省界
bou3_4m中国地市级(只有内部线)
bou4_4m中国县级
hyd1_4m中国⼀级河流
hyd2_4m中国⼆级河流
hyd4_4m中国四级河流
hyd5_4m中国五级河流
rai_4m中国主要铁路
res1_4m省会标⽰
res2_4m地市级以上居民地
res4_4m县以上居民地级
陈冠希全集roa_4m中国主要公路
世界国家世界国家
省界另⼀个省界(不⽤)中国省级⾏政区划_shp.rar⼀般不⽤
县级_截⽌08年_shp.rar⼀般不⽤
sheng中国省界(精度⾼,慢)含修正后的
shi中国市界(精度⾼,慢)
常⽤数据路径汇总:
P1file='D:\下载\Useful\shp\国家基础地理数据\bou1_4m\bou1_4p.shp';%国界多边形
L2file='D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4l.shp';%省界线
P2file='D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4p.shp';%省界多边形
L3file='D:\下载\Useful\shp\国家基础地理数据\bou3_4m\diquJie_polyline.shp';%地市级
L4file='D:\下载\Useful\shp\国家基础地理数据\bou4_4m\BOUNT_line.shp';%县界线
P4file='D:\下载\Useful\shp\国家基础地理数据\bou4_4m\BOUNT_poly.shp';%县界多边形
P03file='D:\下载\Useful\shp\中国科学院资源环境数据\shi\CN-shi-A.shp';%地级市
P021file='D:\下载\Useful\shp\中国科学院资源环境数据\sheng\CN-sheng-A.shp';%省
P02file='D:\下载\Useful\shp\中国科学院资源环境数据\sheng\sheng.shp';%修正之后的省
Sjfile='D:\下载\Useful\shp\国家基础地理数据\世界国家\世界国家.shp';
%读取国界shp⽂件的内容
L1=shaperead(L1file);
P1=shaperead(P1file);
L2=shaperead(L2file);
P2=shaperead(P2file);
P02=shaperead(P02file);
P021=shaperead(P021file);
边做边爱 歌词L3=shaperead(L3file);
P03=shaperead(P03file);
L4=shaperead(L4file);
P4=shaperead(P4file);
bou1_4lx=[L1(:).X];%提取经度信息
bou1_4ly=[L1(:).Y];%提取纬度信息
bou1_4px=[P1(:).X];%提取经度信息
bou1_4py=[P1(:).Y];%提取纬度信息
bou2_4lx=[L2(:).X];%提取经度信息
bou2_4ly=[L2(:).Y];%提取纬度信息
bou2_4px=[P2(:).X];%提取经度信息
bou2_4py=[P2(:).Y];%提取纬度信息
bou3_4lx=[L3(:).X];%提取经度信息
bou3_4ly=[L3(:).Y];%提取纬度信息
bou4_4lx=[L4(:).X];%提取经度信息
bou4_4ly=[L4(:).Y];%提取纬度信息
bou4_4px=[P4(:).X];%提取经度信息
bou4_4py=[P4(:).Y];%提取纬度信息
下⾯对中国⾏政单位划分做个总结:
详细描述请移驾:
⾏政区划代码查询:
2、m_map 使⽤笔记
2.1 安装
下好⼯具箱解压后,将⽂件夹放在⼀个不常动的地⽅,我放在了D:\MATLAB\R2017a\toolbox中,然后打开matlab,点击set path(设置路劲),将m_map路径加进去就⾏了。测试是否成功的话,就在matlab命令空间敲m_demo(1)括号⾥⾯可以是1-15,这实际上m_map中附带的⼀个函数,在⽂件m_demo.m,看看可不可以画出来图。
2.2 常⽤命令
User Guide:
m_proj get //得到当前地图的投影⽅式
m_proj('set','xxx');//xxx见下表,查看投影⽅式的细节
m_proj('xxx');//设置当前投影⽅式
m_scale(250000);//⽐例尺设成1:250000
m_scale('auto');//默认⽐例尺
a=m_scale //返回当前⽐例尺
保罗沃克死了吗m_coord('IGRF-geomagnetic',datenum(2000,1,1));//设置IGRF-2000
m_coast('line',...optional line arguments );
/*m_coast函数可以访问M_Map数据库。
将海岸线绘制为简单的线条。
可选参数是线的样式、宽度、颜⾊等。
*/
m_coast('patch',...optional patch arguments );
m_coast('patch',[.7.7.7],'edgecolor','g');//绘制灰⾊⼟地,绿⾊勾画
m_coast('speckle',....optional m_hatch arguments);
m_elev('contour',LEVELS,'edgecolor','b');//画轮廓
m_elev('contourf',LEVELS, optional contourf arguments);//填充轮廓
[Z,LONG,LAT]=m_elev([LONG_MIN LONG_MAX LAT_MIN LAT_MAX]);//返回深度Z的矩形矩阵的位置,经纬度
m_plot(LONG,LAT,...line properties)% draw a line on a map(erase current plot)
m_plot(bou2_4lx,bou2_4ly,'linewidth',3,'color','k');
m_line(LONG,LAT,...line properties)% draw a line on a map
m_text(LONG,LAT,'string')% Text
m_quiver(LONG,LAT,U,V,S)% A quiver plot
m_patch(LONG,LAT,..patch properties)% Patches.
m_annotation('line',LON,LAT)% Annotation
可⽤的投影⽅式有:
发布评论