用Python製做中國地圖、地球平面圖及球形圖

    繪製地圖在python中主要用到的 basemap 庫,這個庫是 matplotlib 庫中一個用於在 Python 中繪製地圖上的 2D 數據的工具包。python

首先安裝庫:工具

一、安裝 geos 庫:Python 的 basemap 庫是創建在 geos 中的,因此得先安裝 geos,cmd 命令下,定位到 pip 所在的文件夾,使用 pip 命令安裝。spa

 pip install geos code

2.安裝 pyproj、basemap 庫:下載 pyproj 和 basemap 兩個包的 whl 文件,使用 pip 命令安裝 pyproj 和 basemap 庫。htm

whl 文件下載地址以下:blog

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

找出與python版本對應的whl 文件下載,而後再cmd中進入到whl 文件的目錄下進行pip安裝ci

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

導入庫:cmd

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

建立黑白色世界平面圖:it

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()

相關文章
相關標籤/搜索