玩玩看地理空間資料!(1)— 用Geopandas資料視覺化
地理空間資料一直是筆者喜歡且擅長的領域,趁閒暇時間來玩玩看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互動式地圖