見出し画像

人流調査データでつくば市の通勤状況を可視化する

こんにちは。つくばに住む研究者です。

今回は人流調査データを使い、つくば市の通勤者の人流を可視化します。今回使うデータは、パーソントリップ調査データおよびそれを元にしたOD調査データです。

使用するデータについて

まず、パーソントリップ(PT)調査について簡単に説明しておきます。下記は国土交通省からの引用です。

パーソントリップ調査は、都市における人の移動に着目した調査です。調査は、世帯や個人属性に関する情報と1日の移動をセットで尋ねることで、「どのような人が、どのような目的で、どこから どこへ、どのような時間帯に、どのような交通手段で」移動しているかを把握することができます。その名の通り、「人(パーソン)」に着目しているため、一つの交通手段だけでなく、公共交通、自動車、自転車、徒歩といった交通手段の乗り継ぎ状況を捉えることができます。

 日本では、1967年に広島都市圏で初めて本格的な調査が実施されて以来、全国各地の都市圏で実施され、都市交通の現況の把握、将来交通需要の予測、都市交通マスタープランの作成等に活用されています。調査周期は概ね10年に1度です。

https://www.mlit.go.jp/toshi/tosiko/toshi_tosiko_tk_000031.html
https://www.mlit.go.jp/toshi/tosiko/toshi_tosiko_tk_000031.html

PT調査データによって、例えば「鉄道を利用してつくば市へ通勤する人」や「鉄道を利用してつくば市から通勤する人」などの人流の様子を知ることができます。

調査データの数字の単位は”トリップ”であり、各トリップは個人の目的別の移動を示します。全数調査ではないので実際の人数を推定するにはサンプル数と母集団の大きさから計算する必要がありますので、比較等においては注意が必要になります。また、茨城県のつくば市以北の都市は首都圏PT調査のエリアに含まれていませんので、つくば市から水戸市などへの移動者やその逆方向の移動者については把握することができないなどの制限があります。

次にOD調査データについてもみてみます。OD調査とは、始点(Origin),終点(Destination)毎にトリップをまとめたものであり、PT調査の結果などをまとめて作成したものです。これらの数値情報データは国土交通省のHPからダウンロードすることができます。

今回やること

「鉄道を利用してつくば市へ通勤する人」および「鉄道を利用してつくば市から通勤する人」の2種類について数字を整理し、地図上にコロプレス図をつくって表示してみようと思います。

すなわちこんな感じの図を作成します。

鉄道を利用した通勤者の目的地

図の作成のために、まずはOD量を整理します。OD調査では発着地を「ゾーン」という単位で区切っています。


今回は出発地点を「つくば市」としますが、「つくば市」はOD調査において、市内を8つの地域に分けています。これは市内でも徒歩やバスでの移動などについても調査を可能とするためです。つくば市のゾーンは下図のように区切られています。

PT調査におけるつくば市の地区分割の様子

従って「つくば市から出る人」は基本的には「上記の8つの地域を出発する人」ということになります。

コーディング


該当するゾーンの番号を東京都市圏ゾーンコード一覧から調べ、データを読み込みます。

必要なライブラリをインポートします。

!pip install --upgrade geopandas --q
!pip install japanize-matplotlib --q
from google.colab import drive
import pandas as pd
import numpy as  np
import geopandas as gpd

import japanize_matplotlib
japanize_matplotlib.japanize()

drive.mount('/content/drive')

OD調査データを読み込みます。

dir_path  = 'データの置き場所'

gfiles = [dir_path+'S05-b-10_SYUTO-1-g_PersonTripODAmount.shp',
          dir_path+'S05-b-10_SYUTO-2-g_PersonTripODAmount.shp',
          dir_path+'S05-b-10_SYUTO-3-g_PersonTripODAmount.shp']
gdf_all =  gpd.GeoDataFrame(pd.concat([gpd.read_file(files, encoding='Shift-JIS') for files in gfiles]))

zones = ['5210','5211','5212','5213','5214','5215','5216','5217']
gdf = gdf_all[gdf_all['S05b_003'].isin(zones)].reset_index(drop=True)
gdf.crs = "epsg:4326"

上記では8つのゾーンから出発するすべての人が対象になっていますので、ゾーンコードをまとめた集計を計算します。

tag = 'S05b_005' #鉄道による通勤のデータのみを抽出
gdf_g = gdf.groupby(['S05b_004'],as_index=False)[[tag]].sum()
gdf_g = gdf_g.reset_index(drop=True)

OD調査データは始点と終点を結ぶ線(Linestring)のオブジェクトです。多地点を同時に見る場合に便利ですが、つくば市だけを対象に見るにはヒートマップ(コロプレス図)のほうが直感的にわかりやすいため、ゾーン形状をパーソントリップのデータから読みこみます。

gdf_pt = gpd.read_file(dir_path+'/S05-a-10_SYUTO-g_Occurred_ConcentratedTrafficVolumeOfPersonTrip.shp',encoding='shift-jis')
gdf_pt.crs = "epsg:4326"
gdf_pt = gdf_pt[gdf_pt['S05a_003']=='1'].reset_index(drop=True)
gdf_pt.head(3)

ゾーン形状をもったデータフレームに、先程集計した「つくばから出る鉄道利用の通勤者」の数字を入れていきます。
*ここはforではなくjoinで作った方が綺麗にかけます。forを使う場合は.iterrows()を使う方がスマートです。

gdf_pt['people_out']=0
for i in range(0,len(gdf_pt)):
  try:
    gdf_pt.loc[i,'people_out'] = float(gdf_g[gdf_g['S05b_004']==gdf_pt.iloc[i]['S05a_004']][tag])
  except ValueError:
    gdf_pt.loc[i,'people_out'] = 0
  except TypeError:
    gdf_pt.loc[i,'people_out'] = 0

for i in range(0,len(gdf_pt)):
  if gdf_pt.iloc[i]['S05a_004'] in zones:
    gdf_pt.loc[i,'people_out']=0

これまでと同じように地図を書きます。

v= np.arange(0, 500, 50)
c = cm.Reds(range(0,250,int(250/len(v))))
df2 = make_color_codes(gdf_pt, v,c, 'people_out')
draw_colors(c,v,skips=2)
カラーバーと数字の対応
map = draw_maps2(df2,w=1000,h=1000,body_color='blue')
map
つくば市を出る通勤者(鉄道利用)の様子

出勤者の目的地は東京に集まっています。柏市や守谷市などのTX沿線駅の他、大宮(さいたま新都心)への出勤者も多いようです。

PT調査データを使えば市内/市外での移動の様子が分析でき、交通網への投資の判断やマーケティングに役立ちます。今回は単年での分析をしましたが、時系列で追うことで交通網の変化に伴う発見も期待できます。例えばCOVID19の影響により通勤者の様子はどう変化したのかなどは大変興味のあるところですが、コロナ後のPT調査はまだ整備されていません。
つくば市に関して言えばTX開通の前後での変化も気になりますね。

それでは。

この記事が気に入ったらサポートをしてみませんか?