今天博主跟大家讲一下如何用MATLAB制作一幅中国地图,那废话不多说,我们先看一下最终效果吧。
mercator墨卡托圆柱投影地图
lambert兰伯特圆锥投影地图
一张中国地图大概包括以下要素:
中国矢量数据(面、省界线等shp数据)、地图四要素(图名或标题、指北针、比例尺、图例),最好加一个海南岛及南海诸岛的鹰眼图。
大概思路:
清理内存
地图投影
加载面文件
加载省界线文件(包含国界(含九段线))
显示省会点
省会标注
添加图名
添加图例
添加指北针
添加鹰眼图
整体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | close all , clear all , clc , dbstop if error h1=worldmap( 'china' ) setm(h1, 'mapprojection' , 'mercator' ); %圆柱投影%setm(h1,'mapprojection','lambert');%正形圆锥投影 setm(h1, 'FFaceColor' , 'w' ) %图廓 ChinaP=shaperead( 'bou1_4p.shp' , 'UseGeoCoords' ,true) %中国面文件 ChinaL=shaperead( 'bou2_4l.shp' , 'UseGeoCoords' ,true) %中国省界线文件(包含九段线) CapLon=[117.000923,115.48333,125.35000,127.63333,123.38333,111.670801,87.68333,103.73333,106.26667,112.53333,108.95000,113.65000,117.283042,119.78333,120.20000,118.30000,113.23333,115.90000,110.35000,108.320004,106.71667,113.00000,114.298572,104.06667,102.73333,91.00000,96.75000,117.20000,121.55333,106.45000,116.41667,121.30,114.10000,113.50000]; CapLat=[36.675807,38.03333,43.88333,47.75000,41.80000, 41.818311,43.76667,36.03333,37.46667,37.86667,34.26667,34.76667, 31.86119,32.05,30.266,26.0833,23.16667,28.68333,20.01667, 22.8240,26.56667,28.2166, 30.58435,30.6666,25.05000,30.600,36.5666,39.133,31.2000, 29.566,39.9166, 25.03,22.20,22.20]; names={ '济南' , '石家庄' , '长春' , '哈尔滨' , '沈阳' , '呼和浩特' , '乌鲁木齐' , '兰州' , '银川' , '太原' , '西安' , '郑州' , '合肥' , '南京' , '杭州' , '福州' , '广州' , '南昌' , '海口' , '南宁' , '贵阳' , '长沙' , '武汉' , '成都' , '昆明' , '拉萨' , '西宁' , '天津' , '上海' , '重庆' , '北京' , '台北' , '香港' , '澳门' }; geoshow(ChinaP, 'Facecolor' ,[1 1 0.5]) %显示面 geoshow(ChinaL, 'LineStyle' , '-.' , 'Color' , 'k' , 'LineWidth' ,1) %显示界线 geoshow(CapLat,CapLon, 'DisplayType' , 'point' , 'Marker' , '.' , 'MarkerEdgeColor' , 'red' ) %省会点 geoshow(39.9166,116.41667, 'DisplayType' , 'point' , 'Marker' , 'p' , 'MarkerEdgeColor' , 'red' ) %首都 %省会标注 for i =1: numel (names) textm(CapLat( i )+0.3,CapLon( i )+0.3,names( i ), 'color' , 'k' , 'FontSize' ,8) end %图名 title ( '中国政区地图' , 'FontSize' ,20); %图例 legend ({ '省界线' , '省会' , '首都' , '国界线' }, 'FontSize' ,12, 'Location' , 'southwest' ) %比例尺 scaleruler( 'units' , 'km' ) setm(handlem( 'scaleruler1' ), 'RulerStyle' , 'lines' , 'MajorTick' ,0:500:1000, 'MinorTick' ,0:250:500, 'TickDir' , 'down' ) %海南岛及南海诸岛 h2= axes ( 'pos' ,[0.5922 0.15 0.13 0.2]) worldmap([5.559248066 20.549868679],[106.680363685 122.034461754]) setm(h2, 'FFaceColor' , 'w' ) insert1=shaperead( 'bou2_4l.shp' , 'UseGeoCoords' ,true) geoshow([insert1.Lat],[insert1.Lon], 'Color' , 'k' , 'LineWidth' ,1) mlabel plabel gridm setm(h2, 'FFacecolor' , 'c' ) title ( '海南岛及南海诸岛' , 'FontSize' ,6) % 指北针 northarrow( 'latitude' ,50, 'longitude' ,62) h=handlem( 'NorthArrow' ); set (h, 'FaceColor' , 'k' ) |
运行结果图:
数据文件在博主主页文件ChinaMap.rar压缩包中,请自行下载。
扫码关注微信公众号
pygis,培养思维,分析实践
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步