如何用Python畫出地圖

ODQOD 數碼 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庫繪製了地圖,希望能夠幫助大家掌握繪製地圖的方法。

回復

共1條回復 我來回復
  • 暫無回復內容