鐵人賽2019 Day02 Geopandas初探

  1. 1. Geopandas介紹
  2. 2. 讀寫GIS資料
  3. 3. GeoDataFrame
  4. 4. Like a DataFrame

Pandas是資料分析熱門且好用的工具,相信熟悉資料分析的各路英雄好漢都不陌生
在Python中,與GIS相關的套件滿坑滿谷,這邊我們選定Geopandas作為資料操作的基礎
它與Pandas有很接近的操作體驗,並且依賴了許多GIS常用的Python套件。

Geopandas介紹

在Python上處理空間資料有許多套件們,這些套件都有不同的使用場景,例如shapely用在向量資料的處理、fiona則是幫助使用Python上操作OGR(支援超多格式的資料轉換),pyproj做坐標投影的轉換等等。

還好,Geopandas的出現,讓這些事情變得比較好上手,也讓分析資料時感受很像Pandas,
他主要依賴了以下Python空間資料處理的套件介面:

  • shapely
  • fiona
  • descartes
  • matplotlib
  • pyproj
  • numpy
    ..more

使用者可以跟Pandas操作DataFrame一般,在Geopandas操作GeoDataFrame,並且擁有許多空間資料處理的功能。
在Python環境中使用GeoPandas,依照官方文件的說明,安裝方法有兩種,第一種是使用Conda(請設定Python3.6環境):

1
conda install -c conda-forge geopandas

或是直接透過Geopandas Repo以pip安裝

1
pip install git+git://github.com/geopandas/geopandas.git

讀寫GIS資料

今天所使用的GIS資料為向量資料
其中shp為空間資料中最為常見的一種向量資料的格式,
它可以紀錄點、線、面等幾何

有關向量資料及格式的暸解,可以參考
[Day 6] 常見的GIS資料格式 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

我們可以利用GeoPandas讀取shp資料,以進行我們想要的各種處理或分析,以[臺灣鐵路 | 政府資料開放平臺]這個資料集為例,我們將其下載到本機,使用GeoPandas讀取為GeoDataFrame

1
2
3
import geopandas as gpd
gdf_Rail=gpd.read_file('data/Rail/Rail.shp',encoding='utf-8')
gdf_Rail

GeoPandas也支援常用的格式

GeoDataFrame

GeoDataFrame與DataFrame類似,在[官方文件]中對於DataFrame的基本類型有一些說明。

簡單來說,與dataframe相對,GeoPandas多了一個geometry的欄位。


Like a DataFrame

GeoDataFrame的許多基本操作與Pandas的DataFrame很
我們試著做一些Pandas上可以做的事情,

選擇欄位

1
subset=gdf_Rail['RAILNAME']


subset again

1
subset=gdf_Rail.iloc[:3]


排序資料

1
sample=gdf_Rail.sort_values(by='MDATE')

另外,GeoDataFrame對於地理資料有基本的繪圖功能

1
sample.plot()


其採用matplotlib繪圖引擎,例如可以依照欄位來繪圖(下面案例是以鐵道支線名稱分色)

1
sample.plot(column='RAILNAME')


GeoDataFrame讓GIS資料處理更方便,他與DataFrame操作體驗接近,今天也初探了一些簡單的功能

對於DataFrame或者GeoDataFrame的操作,可以參考Data wrangling with Pandas的圖表,
對於Pandas的功能有一些快速指南,大部分也都通用於Geopandas。

今天的相關測試可以參考GitHub