|
8 K3 u. E7 }# L- m( c3 o
作者:潮汐 , B# Y9 U0 D. n
来源:Python 技术
6 J8 f/ O- o1 V% c* G. a 今天咱们讲解一个画地图神器-BaseMap,看看这个神器讲给我们带来怎样的使用体验。 ! J% ~5 e+ [7 m( o& P
BaseMap 简介& ^# b9 C/ K/ M$ q. V! I) y; n+ E
在之前的文章中,我们有讲解过关于画图神器-Matplotlib 的文章,其实 Basemap 工具包就是 Matplotlib 包的子包,一个用于在 Python 绘制 2D 数据至地图的库,它提供了将坐标转化为 25 种不同地图投影的功能,然后调用 Matplotlib 扩展包绘制轮廓、图像和坐标点等。 ! t. ?9 F# p3 r* j0 A9 j8 D- a
该扩展包提供了海岸线、河流、政治边界数据集以及绘制方法。其中 GEOS 库在内部用于将海岸线和边界特征剪切到所需的地图投影区域。下面给出官网的翻译示例,源地址:
- {, b A: o- y3 _3 S https://matplotlib.org/basemap/users/geography.html
7 r. Q; _! Q) l: n( @0 V8 x Basemap 包括 GSSH(现在是GSHHG)海岸线数据集以及 GMT 格式的河流、州和国家边界的数据集。这些数据集可以用来以不同的分辨率绘制海岸线、河流和政治边界地图。相关方法如下: drawcoastlines(): 绘制海岸线。fillcontinents(): 通过填充海岸线多边形为地图着色。drawcountries(): 绘制国家边界。drawstates(): 在北美绘制状态边界。drawrivers(): 绘制河流。
' p* I3 j6 {+ ?: r% Z! X3 R1 F8 q 此外,可以将图像用作地图背景,而不是绘制海岸线和政治边界。Basemap提供了以下几个选项: drawlsmask(): 绘制高分辨率的海陆图像,指定陆地和海洋的颜色,数据源于 GSHHS 海岸线。bluemarble(): 绘制 NASA 蓝色大理石图像作为地图背景。shadedrelief(): 绘制阴影浮雕图像作为地图背景。etopo(): 绘制一张 etopo 浮雕图像作为地图背景。warpimage(): 使用 abitrary 图像作为地图背景,必须是全球的,从国际日东线向东和南极以北覆盖世界。
) P* L3 ?* k6 ?8 W! O Basemap 安装5 U/ H2 t4 v8 }. p
Basemap 安装我们从非官网网站下载下面两个扩展包,安装包名称中的 cp37 表示 Python3.7 版本,这个根据 Python 版本安装对应的包即可,Windows下 64 位环境加 amd64,你需要找到适合自己环境的文件。 + `0 I w" b7 t( n+ r9 z1 i0 ]
basemap-1.2.2-cp37-cp37m-win_amd64.whl pyproj-3.0.1-cp37-cp37m-win_amd64.whl ' }% ], s& N& L1 e; ?: Q( d, R
下载地址为: % p" j6 N7 V- \" v; y
https://www.lfd.uci.edu/~gohlke/pythonlibs/ ; ]$ g' z& |' o% F
下载图片如下:
7 J# C! e/ W( e z9 ? h' K6 E 7 q: Q6 M+ \" l6 s B9 _) B
' H! X% x' C/ T* D! M% B 下载好后将下载的whl文件放入Python安装的 Script 文件夹下,如下图所示: ; z t- {6 N8 ^! {* o: b
% Z% C$ ~, r2 k$ ` \
安装语句如下: pip install basemap-1.2.2-cp37-cp37m-win_amd64.whl) |- E) a4 O+ |7 C* i1 M
如下图即为安装成功。
6 C4 W3 q( f2 T) |& g c) Y
7 ?/ s$ I7 {4 W+ K. }# Q" J1 M$ ? Basemap实例3 K& ^( ]% I f% ~! {5 y7 y8 U
绘制海岸线、填充海洋和陆地区域from mpl_toolkits.basemap import Basemap
0 J, t/ g8 x/ Q+ j, K# L" M5 q: y5 m import matplotlib.pyplot as plt% f4 _' o$ U( b1 l! U' L6 _
5 f$ Y7 Q/ E) ~2 [; w5 a9 ^2 Z$ }
# 设置basemap-Lambert Conformal
. s* }$ j! y' p9 b8 u( l3 W- z% _4 e m = Basemap(width=12000000,height=9000000,projection=lcc,
4 ?1 K9 H( N+ B# J resolution=c,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)* F# c* ^* ~8 V
# 绘制海岸线
" q3 q6 V9 S2 P$ ~1 ]. y( E# {5 J% D1 ]
m.drawcoastlines()$ o- _7 I* C7 M; P8 g
6 c+ W1 d V. H, [, h6 r0 ] # 在地图周围绘制边界并填充背景aqua(这个背景最终成为海洋的颜色)
4 l6 Z2 _' n$ P2 g' ^7 D # 将大洲绘制在最上面/ Q4 H a P J3 o4 e4 h- A6 E
m.drawmapboundary(fill_color=aqua)
3 }/ Z- X* e l0 n! f3 [8 X( i. c1 ^# V, y' C$ M, r
# 填充大陆coral颜色,并设置湖泊颜色为 aqua" ]# X! T! f/ J ]' _
m.fillcontinents(color=coral,lake_color=aqua) e7 e# X; h7 w# Y6 L) i
plt.show()8 G. B6 e/ O! a! X6 }
( S" P7 \6 X$ p* U6 Y( A% n 运行结果如下图:
4 I1 ?4 s N* T( B; |( [: ?; @, H. M ' {5 H3 k. x8 ]2 o1 M* H' D; v
总结" E; M, u9 c8 ?' F- k; L7 t, y# M7 ~
今天的文章就到这里啦,有机会大家可以一起一探此款神器的神秘。
, ~2 W0 l0 ` l; ~3 q q" X2 e7 K0 {6 [
' z0 A7 k; {$ `, u- ^- \$ _+ h% e( J2 G9 h' d# Q9 P# ~
: h! |$ [* v) }$ d+ f |