玩玩看地理空間資料!(1)— 用Geopandas資料視覺化

初探geopandas資料視覺化工具

Elena
6 min readOct 6, 2023

地理空間資料一直是筆者喜歡且擅長的領域,趁閒暇時間來玩玩看geopandas,其實非常好上手又方便視覺化! 本篇程式已整理至github

常見的地理空間資料格式有 shapefile, GeoJSON, KML等。在空間資訊領域會用QGIS等軟體視覺化空間資料,而Python其實也提供視覺化的工具~

本篇要來介紹如何使用python 套件geopandas來讀取、分析、視覺化地理空間資料。geopandas 蠻多參數或函數跟pandas相似,如果熟悉pandas會非常快上手。

Let’s start !

讀取台灣縣市界shapefile (shp),該資料是從政府資料開放平台取得。讀取資料後,來檢視資料看看。

import geopandas as gpd
# Read shp data of Taiwan county
# 縣市界
County_data = gpd.read_file("./County/COUNTY_MOI_1090820.shp")
# Display data 顯示前5筆
County_data.head()

table中有geometry資訊,即空間資料,它是以polygon的形式儲存坐標點(經緯度),可以將地理資訊視覺化。

## plot data
Sample_data = County_data.loc[:, ['COUNTYNAME', 'geometry']]
Sample_data.plot()
台灣地圖(經緯度)

x, y軸分別是經緯度,如果我們要用不同坐標系統顯示,可以藉由設置epsg來進行轉換。

EPSG是以參考橢球體、大地坐標、投影坐標系所建立的代碼,協助各地的空間資料進行轉換

EPSG:3826 代表的是TWD97 121分帶,因為投影到平面(台灣投影方式採用橫麥卡托二度分帶),所以中央經線為東經121度,投影原點向西平移250,000公尺。

County_data=County_data.to_crs(epsg=3826)
Sample_data = County_data.loc[:, ['COUNTYNAME', 'geometry']]
Sample_data.plot()

轉換後x, y軸變成以公尺顯示了! 更詳細的坐標轉換可以參考坐標系統及WebGIS常用的坐標轉換

台灣地圖(橫麥卡托二度分帶)

接下來讀取鄉鎮市區界圖,擷取出大台北地區,為了能顯示市區名,使用兩種方式顯示於圖中。第一是在地圖旁加上圖例,第二是直接顯示名稱在地圖區域上。

plot 函數可以傳遞legend參數,設定好圖例擺放位置、顯示的欄位、大小等參數,漂亮的地圖就產生啦!

# 鄉鎮市區界
Town_data = gpd.read_file("./Town/TOWN_MOI_1120825.shp")
Town_data.head()
Big_Taipei = Town_data[(Town_data['COUNTYNAME']=='臺北市') | (Town_data['COUNTYNAME']=='新北市')]
# add legend
leg_kwds={'title':'District Name',
'loc': 'upper left',
'bbox_to_anchor':(1, 1.03),
'ncol':3}

Big_Taipei.plot(column='TOWNENG', cmap = 'RdBu', legend=True, legend_kwds=leg_kwds)
大台北行政區地圖

如果要將行政區名直接顯示在各行政區上,可以藉由迴圈取出table中每列的值和坐標,將名稱繪至地圖上。

# add town name label
Big_Taipei['coords'] = Big_Taipei['geometry'].apply(lambda x: x.representative_point().coords[:])
Big_Taipei['coords'] = [coords[0] for coords in Big_Taipei['coords']]

Big_Taipei.plot(cmap = 'RdBu')
for idx, row in Big_Taipei.iterrows():
plt.annotate(text=row['TOWNENG'], xy=row['coords'],
horizontalalignment='center', fontsize = 5)
大台北行政區地圖

以上就是geopandas視覺化介紹~如果是空間資訊的學生,操作QGIS和ArcGIS還是比較直觀,但具有程式背景的人,不妨也來玩玩看! 如果喜歡這篇文章或覺得有幫助,可以按下 👏 👏 👏支持或分享給更多人!

相關系列

玩玩看地理空間資料!(2) — 地理資料幾何運算
玩玩看地理空間資料!(3) — 地理空間資料連接與分組操作
玩玩看地理空間資料!(4) — Folium互動式地圖

--

--

Elena

AI Engineer | Data | GIS | 金魚腦女子,希望可以透過文字記錄以喚起被遺忘的記憶。