欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用python画中国地图

程序员文章站 2022-06-08 13:01:28
...

安装Basemap

先安装相应的组件。我假定你已经都安装好了Python以及Jupyter等等。如果没有安装的话,就去尝试一下brew install python3brew install jupyter吧,网上有很多教程。

然后你需要用pip3 install很多我们下面可能需要用到的库。但是因为我们要用一个叫做Basemap的库,而这个库没有办法用简单的pip3 install安装,所以稍多两个步骤:

brew install geos
pip3 install https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz

开始画图

启动Jupyter之后,我们还是本着从最简单的代码开始。先画一个世界地图:
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

plt.figure(figsize=(16,8))
m = Basemap()
m.drawcoastlines()

plt.show()

前面两行引入相应的库,真正的代码就4行,够简单吧。第1行甚至可以不写,它定义了图的大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样:

用python画中国地图

然后我们开始画上国家,又是1行代码:

m.drawcountries(linewidth=1.5)

就变成了这样:

用python画中国地图

如果我们想显示中国地图,只需要在创建Basemap时指定一下经纬度就行了:

m = Basemap(llcrnrlon=73, llcrnrlat=18, urcrnrlon=135, urcrnrlat=53)
然后就得到了中国地图:

用python画中国地图

看上去有点变形,这是因为我们没有添加任何投影的原因,Basemap提供24种不同的投影方式,你可以自己一个个试一下,比较常用的是兰勃特投影,我们添加一下:

m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
这次终于看上去比较正常了:

用python画中国地图

我们想加上省的边界怎么办呢?Basemap缺省的包里没有中国的省区,只有美国的州,毕竟是美国人做的嘛。不过好在世界很大,有专门的国际组织干这事,在https://gadm.org/download_country_v3.html 你可以下载全世界任何一个国家的行政区划Shape文件,然后我们给它加上:

m.readshapefile('CHN_adm_shp/CHN_adm1', 'states', drawbounds=True)

然后就得到了下图:

用python画中国地图

再往后,你还可以往图上改颜色啦,写数字啦,这些就留待你研究吧

原文链接:https://segmentfault.com/a/1190000010871928