如何用Python畫出地圖
數碼 2
本文將從數據獲取、數據處理、繪製地圖三個方面進行闡述,讓大家能夠掌握用Python繪製地圖的方法。
繪製地圖首先需要有地圖數據,而要獲取地圖數據,最方便的方式是使用第三方庫,這裡我們選擇使用GeoPandas。
首先,我們需要安裝GeoPandas庫:
!pip install geopandas
接下來,我們從GeoPandas庫中獲取“中國地級市界限數據”,具體代碼如下:
import geopandas as gpd
# 讀取中國地級市的邊界數據
china = gpd.read_file('https://geo.datav.aliyun.com/areas_v2/bound/geojson?code=100000')
cities = gpd.read_file('https://geo.datav.aliyun.com/areas_v2/bound/geojson?code=010000')
# 查看數據前5行
print(china.head())
這樣我們就成功獲取了中國地級市的邊界數據。
獲取到地圖數據之後,我們需要對數據進行一些必要的處理,以便於繪製地圖。
GeoPandas默認使用的地圖坐標系是WGS84,而繪製地圖需要使用的是墨卡托投影坐標系,因此需要對數據進行坐標系的轉換。
# 將坐標系轉換為墨卡托投影坐標系
china = china.to_crs(epsg=3857)
cities = cities.to_crs(epsg=3857)
在進行數據篩選時,我們可以按照自己的需求選取想要繪製的區域。
# 篩選出四個直轄市的數據
bj = cities[cities['name']=='北京市']
sh = cities[cities['name']=='上海市']
tj = cities[cities['name']=='天津市']
cq = cities[cities['name']=='重慶市']
cities = bj.append(sh).append(tj).append(cq)
繪製地圖時,我們可以使用第三方庫Basemap或者Plotly等,這裡我們選擇使用Folium庫。
首先,我們需要安裝Folium庫:
!pip install folium
接下來,我們可以通過Folium庫的地圖對象Map()來繪製地圖:
import folium
# 創建地圖對象
map = folium.Map(location=[30.5, 114.3], zoom_start=4, tiles='cartodbpositron')
# 添加圖層
folium.Choropleth(
geo_data=china, # 地圖數據
name='China', # 圖層名稱
data=None,
columns=None,
key_on='id',
fill_color='YlOrRd', # 顏色
fill_opacity=0.6,
line_opacity=0.2,
reset=True,
legend_name='China' # 圖例標題
).add_to(map)
folium.Choropleth(
geo_data=cities, # 地圖數據
name='Cities', # 圖層名稱
data=None,
columns=None,
key_on='id',
fill_color='PuRd', # 顏色
fill_opacity=0.6,
line_opacity=0.2,
reset=True,
legend_name='Cities' # 圖例標題
).add_to(map)
# 顯示地圖
map
本文通過GeoPandas庫獲取地圖數據,對數據進行轉換和篩選,並使用Folium庫繪製了地圖,希望能夠幫助大家掌握繪製地圖的方法。