收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

神器-可视化分析之Basemap入门详

[复制链接]
9 S+ H+ C: I6 T7 t3 D

作者:潮汐

8 ]. C7 `% c& L# H$ u# I9 o

来源:Python 技术

7 H1 J1 Q# z! X. {5 {, b3 I7 k# T

今天咱们讲解一个画地图神器-BaseMap,看看这个神器讲给我们带来怎样的使用体验。

$ e- k5 ~. K9 y8 i/ |7 e

BaseMap 简介

. g. [. q7 q) z g+ q" R

在之前的文章中,我们有讲解过关于画图神器-Matplotlib 的文章,其实 Basemap 工具包就是 Matplotlib 包的子包,一个用于在 Python 绘制 2D 数据至地图的库,它提供了将坐标转化为 25 种不同地图投影的功能,然后调用 Matplotlib 扩展包绘制轮廓、图像和坐标点等。

3 Y [. V) ~# G5 G1 u! t

该扩展包提供了海岸线、河流、政治边界数据集以及绘制方法。其中 GEOS 库在内部用于将海岸线和边界特征剪切到所需的地图投影区域。下面给出官网的翻译示例,源地址:

& z, p+ i( \4 s8 R0 X

https://matplotlib.org/basemap/users/geography.html

" V0 W2 w) \/ N2 ^

Basemap 包括 GSSH(现在是GSHHG)海岸线数据集以及 GMT 格式的河流、州和国家边界的数据集。这些数据集可以用来以不同的分辨率绘制海岸线、河流和政治边界地图。相关方法如下:

drawcoastlines(): 绘制海岸线。fillcontinents(): 通过填充海岸线多边形为地图着色。drawcountries(): 绘制国家边界。drawstates(): 在北美绘制状态边界。drawrivers(): 绘制河流。( x& \5 X) l( c/ X0 Q) u. t* s) Y

此外,可以将图像用作地图背景,而不是绘制海岸线和政治边界。Basemap提供了以下几个选项:

drawlsmask(): 绘制高分辨率的海陆图像,指定陆地和海洋的颜色,数据源于 GSHHS 海岸线。bluemarble(): 绘制 NASA 蓝色大理石图像作为地图背景。shadedrelief(): 绘制阴影浮雕图像作为地图背景。etopo(): 绘制一张 etopo 浮雕图像作为地图背景。warpimage(): 使用 abitrary 图像作为地图背景,必须是全球的,从国际日东线向东和南极以北覆盖世界。+ ?% N+ X8 z& k

Basemap 安装

7 l1 i2 U# H6 F& b- _! n! _5 p

Basemap 安装我们从非官网网站下载下面两个扩展包,安装包名称中的 cp37 表示 Python3.7 版本,这个根据 Python 版本安装对应的包即可,Windows下 64 位环境加 amd64,你需要找到适合自己环境的文件。

$ m% ]5 w1 h* I0 F5 k \/ O

basemap-1.2.2-cp37-cp37m-win_amd64.whl pyproj-3.0.1-cp37-cp37m-win_amd64.whl

4 h# n' Q, M: @+ m+ E4 j M1 A+ @

下载地址为:

, q+ U' D/ V' s- R9 x0 w( D

https://www.lfd.uci.edu/~gohlke/pythonlibs/

/ g0 y" j: I( w! t O. q

下载图片如下:

" `8 V: ^% A3 q' F5 J1 T' K
, ]* F$ R5 I5 y; x
% T% L0 P$ w* L6 [1 R% j3 u

下载好后将下载的whl文件放入Python安装的 Script 文件夹下,如下图所示:

/ h2 y' v' D% V
2 R7 T W& F9 ^. b1 ~9 v7 O; B

安装语句如下:

pip install basemap-1.2.2-cp37-cp37m-win_amd64.whl 7 I7 r( _9 H/ |1 i# [

如下图即为安装成功。

9 _0 z; b9 `. l3 q3 `: X" ~0 H" _7 Y
# H9 R# ?* W6 i

Basemap实例

1 L/ x# @5 g( I0 x+ [

绘制海岸线、填充海洋和陆地区域

from mpl_toolkits.basemap import Basemap* C# c. o) T4 n7 z- Y3 L import matplotlib.pyplot as plt$ U& \* K# V9 `6 [: ^. ^6 p ! G: k3 O3 T/ d4 j! l" U7 A0 ` # 设置basemap-Lambert Conformal / Z. g [( \) E$ u m = Basemap(width=12000000,height=9000000,projection=lcc, - A& U: `( W2 ?2 A: m. V resolution=c,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)1 s: W5 I) D3 g9 y7 }2 h- z # 绘制海岸线 7 |0 O, |% H% Z' r3 ~! j( S: L& B2 s' N8 {: } w8 j: |7 N; k m.drawcoastlines() 9 j2 C4 }& ~: Y r# c, a& @$ H4 F4 l! S$ E# i% ^; u # 在地图周围绘制边界并填充背景aqua(这个背景最终成为海洋的颜色) $ ^3 J; B. \- k9 D6 ~, R- ?4 i$ @ # 将大洲绘制在最上面* ^* w8 ]: q6 n! ^$ M m.drawmapboundary(fill_color=aqua) ; ]8 Y8 w# o w ?: w / N$ b% P! n/ x' ]4 D+ D8 D # 填充大陆coral颜色,并设置湖泊颜色为 aqua0 u `0 w0 P0 W" [# L; e m.fillcontinents(color=coral,lake_color=aqua) 8 }! T. Q$ n; n \4 [ plt.show(): h; `7 q4 B& f, y& W2 h! i+ k& j0 [ # U6 }8 }% g7 {1 l; [# i

运行结果如下图:

! ]2 w$ ~8 \6 O
& ]$ n% h/ T- \9 h' t

总结

( V# O, C S6 S

今天的文章就到这里啦,有机会大家可以一起一探此款神器的神秘。

, P; ~, x4 }8 q& t3 [- `% f , F" y: _# u/ ]0 j: K, K: ?/ s& ~( o7 K- e; H2 K# w ; M9 P/ E: }' \: ~1 S . N5 s) V2 S C) |0 z. `
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
白小禾
活跃在2024-1-28
快速回复 返回顶部 返回列表