用Python制作中国地图、地球平面图及球形图

    绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Python 中绘制地图上的 2D 数据的工具包。

首先安装库:

1、安装 geos 库:Python 的 basemap 库是建立在 geos 中的,所以得先安装 geos,cmd 命令下,定位到 pip 所在的文件夹,使用 pip 命令安装。

 pip install geos 

2.安装 pyproj、basemap 库:下载 pyproj 和 basemap 两个包的 whl 文件,使用 pip 命令安装 pyproj 和 basemap 库。

whl 文件下载地址如下:

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

找出与python版本对应的whl 文件下载,然后再cmd中进入到whl 文件的目录下进行pip安装

pip install pyproj-1.9.6-cp35-cp35m-win_amd64.whl
pip install basemap-1.2.0-cp35-cp35m-win_amd64.whl

导入库:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon

创建黑白色世界平面图:

map = Basemap()#新建一张世界地图
map.drawcoastlines()#画出海岸线
plt.show()#打开窗口显示运行结果

创建世界球形图并给大地和湖泊加上颜色:

plt.figure(figsize=(10,7))#定义图的大小
m = Basemap(projection='ortho',lat_0=0,lon_0=0)#创建世界地图并增加投影
m.drawmapboundary(fill_color='aqua')#给地球涂上蓝色
m.fillcontinents(color='coral',lake_color='aqua')#给大地和海洋涂上颜色
m.drawcoastlines()#画海岸线
plt.show()
 
 




创建中国地图:

下载 中国 China 和 台湾 Taiwan 的 Shapefile 文件,注意还需要在Country的下拉框中选择台湾

网址如下:https://gadm.org/download_country_v3.htm

 

下载文件解压后用 readshapefile 方法读取下载的文件。

plt.figure(figsize=(16, 7))   # 定义图的大小
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc',
            lat_1=33, lat_2=45, lon_0=100)    # 创建中国地图
m.drawcountries(linewidth=1.5)   # 画出中国地图

m.readshapefile(r'C:\PyProject\learn\小技巧\地图\China\gadm36_CHN_1', 'states', drawbounds=True)
m.readshapefile(r'C:\PyProject\learn\小技巧\地图\TaiWan\gadm36_TWN_1', 'taiwan', drawbounds=True)


m.drawmapboundary(fill_color='aqua')        # 给地球涂上蓝色
m.fillcontinents(color='coral', lake_color='aqua')  # 给大陆和海洋分别涂上颜色
m.drawcoastlines()            # 画海岸线

# 给中国加上鲜艳颜色
ax = plt.gca()
for nshape, seg in enumerate(m.states):
    poly = Polygon(seg, facecolor='r')
    ax.add_patch(poly)

# 台湾不要忘了
m.readshapefile('C:\PyProject\learn\小技巧\地图\TaiWan\gadm36_TWN_1', 'taiwan', drawbounds=True)
for nshape, seg in enumerate(m.taiwan):
    poly = Polygon(seg, facecolor='r')
    ax.add_patch(poly)

plt.show()

 

转载于:https://www.cnblogs.com/Estate-47/p/10444691.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值