資料都是從政府官方開放資料網站下載。
經過統整成 wgs1984 (epsg:4326) 之後,再轉乘 geojson --> pbf --> 以 gz 格式儲存在專案中。
轉成 geojson 主要是爲了將 shp 檔們存到 1個檔案中。
轉成 pbf 是因爲 geojson 佔空間; topojson 似乎在 python 不容易處理。
這工具主要是從專案中的 pbf.gz 檔案讀進去,轉成 gpd.GeoDataFrame 再回傳出來。
將 tgod 工具環境 叫進來
import tgod
畫圖工具,主要是示範用
import matplotlib.pyplot as plt
%matplotlib inline
目前整理好的空間靜態資料主要有行政界(縣市、鄉鎮、村裏、二級統計區、一級統計區(分縣市)、最小統計區(分縣市)),
以及一些交通運輸相關資料(國道、省道、臺鐵鐵路及車站、臺北及高雄捷運鐵路及車站、高鐵鐵路及車站、機場、碼頭、)
用以下兩個指令可以看得到有哪些資料的 key 。這些 key 是後面用來呼叫的 鑰匙。
(r=True 會將資料回傳, 預設爲 False,會直接列印出來,不回傳)
print tgod.get_map.get_boundary_key(r=True)
#tgod.get_map.get_boundary_key()
print tgod.get_map.get_transportation_key(r=True)
#tgod.get_map.get_transportation_key()
舉個行政界的例子,呈現如何叫出 GeoDataFrame
gdf = tgod.get_map.get_boundary('county')
print gdf.head()
GeoPandas 的 DataFrame 可以直接畫出來 當然也可以透過其 geometry 欄位的資料,用 shapely 的處理, 以 matplotlib 呈現。
#fig,ax = plt.subplots()
gdf.plot()
再舉個國道的例子
gdf = tgod.get_map.get_transportation('highway_1')
print gdf.head()
畫出來長這樣
fig,ax = plt.subplots()
ax.set_aspect('equal')
for i in range(len(gdf)):
ls = gdf.iloc[i]['geometry']
x,y = ls.xy
ax.plot(x,y)