您的位置:首页 > 编程语言 > Python开发

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

2020-01-15 09:55 453 查看

    绘制地图在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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Lee3680 发布了0 篇原创文章 · 获赞 1 · 访问量 625 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: