【python資料探勘課程】二十二.Basemap地圖包安裝入門及基礎知識講解
1.Basemap安裝過程
2.地圖繪製官方簡單案例
3.Basemap繪製地圖
本篇文章為基礎性文章,希望對你有所幫助,提供些思路,如果文章中存在錯誤或不足之處,還請海涵。同時,推薦大家閱讀我以前的文章瞭解基礎知識。
前文參考:
【Python資料探勘課程】一.安裝Python及爬蟲入門介紹
【Python資料探勘課程】二.Kmeans聚類資料分析及Anaconda介紹
【Python資料探勘課程】三.Kmeans聚類程式碼實現、作業及優化
【Python資料探勘課程】四.決策樹DTC資料分析及鳶尾資料集分析
【Python資料探勘課程】五.線性迴歸知識及預測糖尿病例項
【Python資料探勘課程】六.Numpy、Pandas和Matplotlib包基礎知識
【Python資料探勘課程】七.PCA降維操作及subplot子圖繪製
【Python資料探勘課程】八.關聯規則挖掘及Apriori實現購物推薦
【Python資料探勘課程】九.迴歸模型LinearRegression簡單分析氧化物資料
【python資料探勘課程】十.Pandas、Matplotlib、PCA繪圖實用程式碼補充
【python資料探勘課程】十一.Pandas、Matplotlib結合SQL語句視覺化分析
【python資料探勘課程】十二.Pandas、Matplotlib結合SQL語句對比圖分析
【python資料探勘課程】十三.WordCloud詞雲配置過程及詞頻分析
【python資料探勘課程】十四.Scipy呼叫curve_fit實現曲線擬合
【python資料探勘課程】十五.Matplotlib呼叫imshow()函式繪製熱圖
【python資料探勘課程】十六.邏輯迴歸LogisticRegression分析鳶尾花資料
【python資料探勘課程】十七.社交網路Networkx庫分析人物關係(初識篇)
【python資料探勘課程】十八.線性迴歸及多項式迴歸分析四個案例分享
【python資料探勘課程】十九.鳶尾花資料集視覺化、線性迴歸、決策樹花樣分析
【python資料探勘課程】二十.KNN最近鄰分類演算法分析詳解及平衡秤TXT資料集讀取
【python資料探勘課程】二十一.樸素貝葉斯分類器詳解及中文文字輿情分析
安裝包及程式碼CSDN下載地址:http://download.csdn.net/download/eastmount/10230303
為何現在不能上傳免費資源了,可惜啦!
一. Basemap安裝過程
安裝方法作者強推這篇文章: 神農嘗百草---Windows環境下為Python3.X安裝basemap
這裡作者只做簡單介紹,我們從非官網網站下載下面兩個擴充套件包,cp27表示Python2.7版本,Windows下64位環境,你需要找到適合自己環境的檔案。下載地址為:https://www.lfd.uci.edu/~gohlke/pythonlibs/
- basemap‑1.1.0‑cp27‑cp27m‑win_amd64.wh
- pyproj‑1.9.5.1‑cp27‑cp27m‑win_amd64.whl
先安裝Pyproj,再安裝Basemap擴充套件包,命令如下:
cd C:\Software\Program Software\Python\Scripts\basemap
pip install pyproj-1.9.5.1-cp27-cp27m-win_amd64.whl
pip install basemap-1.1.0-cp27-cp27m-win_amd64.whl
安裝如下圖所示,顯示"Successfully installed basemap-1.1.0"表示安裝成功。接下來呼叫該擴充套件包,不再報錯即表示安裝成功。
二. 地圖繪製官方簡單案例
首先作者給出官方文件的介紹以及簡單案例,讓讀者體會下Basemap的魅力。
官方網址:https://matplotlib.org/basema
介紹
Basemap工具包是Matplotlib包的子包,一個用於在Python繪製2D資料至地圖的庫,它提供了將座標轉化為25中不同地圖投影的功能,然後呼叫Matplotlib擴充套件包繪製輪廓、影象和座標點等。該擴充套件包提供了海岸線、河流、政治邊界資料集以及繪製方法。其中GEOS庫在內部用於將海岸線和邊界特徵剪下到所需的地圖投影區域。
示例
下面給出官網的翻譯示例,源地址:https://matplotlib.org/basemap/users/geography.html
Basemap包括GSSH(現在是GSHHG)海岸線資料集以及GMT格式的河流、州和國家邊界的資料集。這些資料集可以用來以不同的解析度繪製海岸線、河流和政治邊界地圖。相關方法如下:
drawcoastlines(): 繪製海岸線。
fillcontinents(): 通過填充海岸線多邊形為地圖著色。
drawcountries(): 繪製國家邊界。
drawstates(): 在北美繪製狀態邊界。
drawrivers(): 繪製河流。
此外,可以將影象用作地圖背景,而不是繪製海岸線和政治邊界。Basemap提供了以下幾個選項:
drawlsmask(): 繪製高解析度的海陸影象,指定陸地和海洋的顏色,資料來源於GSHHS海岸線。
bluemarble(): 繪製NASA藍色大理石影象作為地圖背景。
shadedrelief(): 繪製陰影浮雕影象作為地圖背景。
etopo(): 繪製一張etopo浮雕影象作為地圖背景。
warpimage(): 使用abitrary影象作為地圖背景,必須是全球新的,從國際日東線向東和南極以北覆蓋世界。
1.繪製海岸線、填充海洋和陸地區域
程式碼
# -*- coding: utf-8 -*-
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 設定basemap-Lambert Conformal
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# 繪製海岸線
m.drawcoastlines()
# 在地圖周圍繪製邊界並填充背景aqua(這個背景最終成為海洋的顏色)
# 將大洲繪製在最上面
m.drawmapboundary(fill_color='aqua')
# 填充大陸coral顏色,並設定湖泊顏色為blue
m.fillcontinents(color='coral',lake_color='blue')
plt.show()
繪製圖形如下所示:程式碼
# -*- coding: utf-8 -*-
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 設定basemap Lambert-Conformal
# 設定解析度引數resolution=None 跳過處理邊界資料集
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# 為地圖背景繪製海陸罩
# lakes=True 意味著內陸湖和海洋顏色一致
m.drawlsmask(land_color='coral',ocean_color='aqua',lakes=True)
plt.show()
繪製如下圖所示:3.繪製美國宇航局藍色大理石影象(the NASA Blue Marble)
程式碼
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.bluemarble()
plt.show()
繪製如下圖所示:4.繪製帶陰影的浮雕影象
程式碼
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.shadedrelief()
plt.show()
繪製如下圖所示:5.繪製etopo浮雕影象
程式碼
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.etopo()
plt.show()
繪製如下圖所示:三. Basemap繪製地圖
可能讀者已經發現了,Basemap擴充套件包是繪製地圖最重要的一個庫,所以作者先講解該庫函式。同時,由於作者沒有找到系統的引數介紹,只能摸著石頭過河學習,也希望對您有點幫助。
為方便呈現,需要將三維球座標系轉換為二維笛卡爾座標系,利用地圖投影(Map Projection)實現。
官網給出的25種對映方式如下:https://matplotlib.org/basemap/users/mapsetup.html
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
height:高度。
projection='lcc':表示規定的投影方法,改變投影方法繪製的結果也將不同,25種方式。
resolution=None:表示跳過處理邊界資料集。
lat_0=50: 維度設定為50(Latitude,值為-90到90)。
lon_0=-107:經度設定為-107(Longitude,值為-180到180)。
示例參考:https://matplotlib.org/basemap/users/aeqd.html
# -*- coding: cp936 -*-
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
width = 28000000; lon_0 = -105; lat_0 = 40
m = Basemap(width=width,height=width,projection='aeqd',
lat_0=lat_0,lon_0=lon_0)
# 填充背景
m.drawmapboundary(fill_color='aqua')
# 繪製海岸線並填充大陸
m.drawcoastlines(linewidth=0.5)
m.fillcontinents(color='coral',lake_color='aqua')
# 20度經緯度,範圍-80到81 -180到180
m.drawparallels(np.arange(-80,81,20))
m.drawmeridians(np.arange(-180,180,20))
# 在中心繪製一個黑點
xpt, ypt = m(lon_0, lat_0)
m.plot([xpt],[ypt],'ko')
# 繪製標題
plt.title('Azimuthal Equidistant Projection')
plt.show()
繪製圖形如下圖所示:m = Basemap(projection='merc',llcrnrlat=-80,urcrnrlat=80,
llcrnrlon=-180,urcrnrlon=180)
引數介紹如下:
projection=merc':表示規定的投影方法,墨卡託投影(Mercator Projection),廣泛應用谷歌地圖。
llcrnrlat=-80:所需地圖域左下角的緯度(度)Latitude。
urcrnrlat=80:所需地圖域的右上角的緯度(度)Latitude。
llcrnrlon=-180:所需地圖域左下角的經度(度)Longitude。
urcrnrlon=180:所需地圖域(度)的右上角的經度Longitude。
示例:
# -*- coding: utf-8 -*-
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(projection='merc', llcrnrlat=-80, urcrnrlat=80,
llcrnrlon=-180, urcrnrlon=180)
m.drawcoastlines()
plt.show()
繪製圖形如下所示:同時,繪製一個城市點程式碼的常見兩種方式如下:
# 上海經緯度 (31.23N,121.47E)
x = 31.23
y = 121.47
xpt, ypt = m(x,y)
m.scatter(xpt,ypt,s=2)
x = 31.23
y = 121.47
xpt, ypt = m(x,y)
m.plot([xpt],[ypt],'ko')
最後給出比較好的參考資料,供自己和大家後面學習。希望文章對大家有所幫助,該篇文章主要是個安裝引入,後面還將結合專案及管網深入介紹,如果存在錯誤或不足之處,還請海涵。
python利用basemap疊加地圖 - 瑜之姬
地理資訊視覺化:Python之matplotlib Basemap簡介 - dushenzhi
BASEMAP使用筆記 - KalariKong
Basemap視覺化地圖資訊 - zm(強推)
[經驗總結] 一點總結:Ubuntu+anaconda+Python+basemap(+WRF) - 氣象家園
繪圖: matplotlib Basemap簡介 - Vamei
Creating a Choropleth Map of the World in Python using Basemap
Basemap繪製中國地圖 - 落葉小唱
用Python畫一箇中國地圖 - 張京(強推)
(By:Eastmount 2018-01-29 晚上7點 http://blog.csdn.net/eastmount/ )
相關文章
- 【Python資料探勘課程】六.Numpy、Pandas和Matplotlib包基礎知識Python
- 【Redis學習⑴】Redis入門安裝及基礎資料的知識Redis
- 資料庫基礎知識講解資料庫
- 開源 | Python基礎入門課程Python
- Python基礎知識入門(二)Python
- Python入門基礎知識(二)Python
- 資料庫安裝以及基礎知識資料庫
- 【Python資料探勘課程】五.線性迴歸知識及預測糖尿病例項Python
- Python入門必知的知識點!Python基礎入門Python
- SQL與NoSQL資料庫入門基礎知識詳解SQL資料庫
- Python入門基礎知識例項,Python
- Python入門之基礎知識(一)Python
- Python類的基礎入門知識Python
- 開源 | Python基礎入門(視訊)課程Python
- JavaScript 基礎知識入門JavaScript
- MySql入門--基礎知識MySql
- css 入門基礎知識CSS
- Python 基礎(一):入門必備知識Python
- Python入門基礎知識學什麼?Python
- Python快速入門之基礎知識(一)Python
- 【Python資料探勘課程】七.PCA降維操作及subplot子圖繪製PythonPCA
- Python爬蟲從入門到精通系列──第1課 基礎知識Python爬蟲
- 前端基礎技術知識講解-面試圖譜前端面試
- 面試圖譜:前端基礎技術知識講解面試前端
- 大資料分析入門基礎知識學什麼?大資料
- 資料庫安全基礎入門知識簡介(轉)資料庫
- JavaScript入門①-基礎知識築基JavaScript
- sql入門基礎知識分享SQL
- Dubbo基礎入門知識點
- Java基礎知識入門-JDKJavaJDK
- Java入門基礎知識點Java
- Python常用函式有哪些?Python基礎入門課程Python函式
- 半導體分立器件基礎知識講解
- hadoop大資料平臺安全基礎知識入門Hadoop大資料
- 圖解 IP 基礎知識!圖解
- 【python資料探勘課程】十三.WordCloud詞雲配置過程及詞頻分析PythonCloud
- [知識圖譜構建] 二.《Neo4j基礎入門》基礎學習之建立圖資料庫節點及關係資料庫
- Python基礎入門知識點——if 語句簡介Python