Basemap入坑手册
前面的废话
本来只是想画个热点图,然后一路 百度地图API —> folium —> Basemap,因为前两个要html的知识,而我并没有,所以最后入坑了Basemap。
然而网上的资源虽然很多,但是比较零散,不过找到英文版的tutorial,全英文的怕自己读不下去,决定边学边记笔记,以及有好用的教程和资源也在这里马克一下。
0. 介绍
Python里画地图的。
1. 安装
每逢非pip可以安装的包就有点头大。
安装部分官方也有指南,大概的意思就是先装python (废话)、matplotlib、numpy、PROJ4、GEOS、Pillow(可选)再安装Basemap。
我是Mac的Anaconda,所以直接在下载了Source Code (tar.gz),解压后在终端安装。
具体过程:
解压后文件夹里会有setup.py的文件;
打开终端,输入
cd ./desktop/..
(Change Directory到setup.py的位置);- 输入
python setup.py install
; - 在python里输入
from mpl_toolkits.basemap import Basemap
,如果没有报错说明安装成功。
更详细的教程可以参考:
Mac:Mac Python+basemap安装
Linux:python番外(2)——Basemap安装
Windows:window下安装basemap
2. 画第一张图
最基础的图代码如下:
# 导入包
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 新建地图
map = Basemap() #Basemap类有很多属性,这里全都使用默认参数
# 画图
map.drawcoastlines()
# 显示结果
plt.show()
# 存储结果
plt.savefig('test.png')
得到这样的图
一丢丢进阶的图代码如下:
# 导入包
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 更改投影方式
map = Basemap(projection = 'ortho', lat_0 = 0, lon_0 = 0) #’ortho’指正射投影,具体参数后面再讨论;后面两个参数是设置中心点
# 给整个地图上蓝色
map.drawmapboundary(fill_color = 'aqua')
# 给陆地涂上珊瑚色,湖泊涂上蓝色
map.fillcontinents(color = 'coral', lake_color = 'aqua')
# 画图
map.drawcoastlines()
# 显示结果
plt.show()
但是error了……
\flag 嗷明天再解决吧
3. 地图投影专题
地图投影是利用一定数学法则把地球表面的经、纬线转换到平面上的理论和方法。——百度百科
tutorial指出Basemap里的投影方式跟其他库不太一样(如GDAL),所以要好好学一学。
3.1 地图投影基础
Basemap的投影方式是由projection
这一属性控制的,可选项如下:
选项 | 全称 | 解释 |
---|---|---|
cyl |
Tables | Are | Cool |
---|---|---|
col 3 is | right-aligned | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |
(备用)web标准颜色