しくみ
ここでは、「急がば漕げマップ」に表示されているデータがどのように処理・計算されているかを簡単にご紹介します。
概要
「急がば漕げマップ」では、東京の鉄道を点と線から表現される「グラフ」として表現することで、到達圏や最適経路、自転車ポテンシャルの分析を行っています。
主に路線情報や時刻表の静的データを用いて、各駅を点(ノード)、それらをつなぐ鉄道や乗り換えなどのつながりを線(リンク)として整理することによって、それぞれのノード同士の間の最短経路を計算することができます。それぞれのリンクには平日日中の平均での所要時間が割り当てられており、東京および近郊での移動にかかる大まかな時間を考えています。
これを用いて各駅から他のすべての駅までの所要時間を表示したものが到達圏マップで、ある駅から別の駅までのグラフ上での最短経路を検索することもできます。それぞれのリンクに着目したのがポテンシャルマップで、各リンクを利用する可能性のある人数を基に重要度を算出しています。
より詳細にデータ処理などについて知りたい方は、引き続き読み進めてください。
グラフの構築
使用データ
「急がば漕げマップ」では、公共交通オープンデータセンターにて提供されている鉄道・シェアサイクル関連データおよび国土数値情報の鉄道時系列データを主なソースとして利用しています。
データ | 使用目的 | 出典 |
---|---|---|
鉄道運行関連データ | グラフの構築・計算 | 公共交通オープンデータセンター |
鉄道路線データ | 地図上での表示・未提供データ補完 | 国土数値情報 鉄道時系列データ |
シェアサイクル関連GBFSデータ | 施設整備・リアルタイム状況把握 | 公共交通オープンデータセンター |
駅間流動データ | サイクルポテンシャルの計算 | 大都市交通センサス(令和3年度調査) |
後述の通り、公共交通オープンデータセンターの配信データに含まれていないデータは、制作チームが他の情報源から補完してデータを作成しています。事業者ごとのデータの利用・補完状況は以下のとおりです。
事業者 | 補完状況 |
---|---|
JR東日本・東京メトロ・東京都交通局・横浜市営地下鉄・東武鉄道・京王電鉄・相模鉄道・東京臨海高速鉄道・つくばエクスプレス | 補完の必要なし |
東急電鉄・京浜急行電鉄・小田急電鉄・西武鉄道・ゆりかもめ | 列車時刻表未提供のため、各列車所要時間をウェブサイト等から補完 |
京成電鉄・新京成電鉄・北総鉄道・芝山鉄道・埼玉高速鉄道・東葉高速鉄道・横浜高速鉄道・東京モノレール・江ノ島電鉄・山万・千葉都市モノレール・関東鉄道・湘南モノレール・鹿島臨海鉄道・ひたちなか海浜鉄道・ニューシャトル・小湊鉄道・横浜シーサイドライン・流鉄・秩父鉄道・ディズニーリゾートライン・いすみ鉄道 | データ未配信のため、全データを国土数値情報・ウェブサイト等から作成 |
グラフの概要
今回構築したグラフの概要図は以下のとおりです。
![構築されたグラフの概要](img/graph_main.png)
種類 | レイヤー | 説明 |
---|---|---|
自転車乗車ノード | 自転車レイヤー | 自転車に乗車・降車するためのノード。連続で自転車に乗ることを防ぐため、乗車・降車で別のノードを作成。 |
自転車降車ノード | ||
駅入場ノード | 地表レイヤー | 鉄道に乗るための駅グループを表すノードで、徒歩・自転車・鉄道のすべての移動手段を繋ぐ役割を持つ。各駅間の到達時間は、出発駅・到着駅の入場・出場ノードの組み合わせの中で最短経路が最も短いものを採用。 |
駅出場ノード | ||
路線・駅ノード | 駅ナカレイヤー | 各路線・駅を表すノードで、路線ごとにそれぞれ作成。乗り換え時にはこのレイヤーで路線間の行き来が行われ、地表レイヤーまでは行き着かない。例:「東京メトロ丸ノ内線 新宿駅」「JR山手線 新宿駅」 |
方面・種別ノード | 列車レイヤー | 各駅に停車する列車種別・方面を表すノード。通過する場合はこのノードは存在しない。上下線、各列車種別ごとに作成。列車はこのノード間を結ぶリンクとして存在する。例:「小田急小田原線 下北沢駅 快速急行 上り線」「小田急小田原線 下北沢駅 急行 上り線」 |
種類 | レイヤー | 接続ノード | 説明 |
---|---|---|---|
自転車 | 自転車 | 自転車乗車ノード→ | 駅間を自転車で移動する場合のリンク。駅間の道のりは直線距離の1.5倍、自転車の速さは分速300mと想定して所要時間を算出。 |
自転車 | 地表→ | 駅出場ノード→ | シェアサイクルを乗り降りする場合に通るリンク。駅ーシェアサイクルポート間の移動・準備を想定し、所要時間は乗車・降車ともに一律5分としています。 |
自転車 | 自転車→ | 自転車降車ノード→ |
|
徒歩リンク | 地表 | 駅出場ノード→ | 駅間を徒歩で移動する場合のリンク。駅間の道のりは直線距離の1.5倍、徒歩の速さは分速80mと想定して所要時間を算出。徒歩リンクを連続して通らないよう、出場ノードから入場ノードの一方通行としています。 |
入場 | 地表→ | 駅入場ノード→ | 鉄道に乗るために駅の中に入場するためのリンク。重みは0。 |
出場 | 駅ナカ→ | 路線・駅ノード→ | 鉄道を下車し地表レイヤーに戻るためのリンク。重みは0。 |
乗り換え | 駅ナカ | 路線・駅 | 鉄道路線間を乗り換えるためのリンク。所要時間の設定については本ページ後半にて解説しています。 |
乗車 | 駅ナカ→ | 路線・駅ノード→ | 列車に乗車する際に通るリンク。平均待ち時間で重み付けしています。 |
降車 | 列車→ | 方面・種別ノード→ | 列車を降りる際に通るリンク。重みは0。 |
列車 | 列車 | 方面・種別 | 各列車に乗って隣接駅に移動する際に通るリンク。列車の所要時間で重み付け。 |
直通 | 列車 | 方面・種別 | 異なる路線同士の直通運転の際に通るリンク。本線から支線への直通、地下鉄と郊外路線などの間の直通運転が存在する場合にリンクを付加しています。重み付けは一律で1分としています。 |
鉄道データ処理
配信データをもとに、上記のネットワークのノードとリンクを作成していきます。今回は、平日日中(10-16時)を想定してデータを構築しています。 データが配信されていない事業者や一部のみとなっている場合は、国土数値情報や各事業者ウェブサイト等の情報をもとに補完しています。
国土数値情報を利用するにあたっては、鉄道時系列データから、現在運行されている路線を抽出して使用しています。
路線データ
公共交通オープンデータセンターの路線データが存在しない路線については、国土数値情報の鉄道時系列データをもとに、路線のデータおよび駅のデータをオープンデータチャレンジと同様の形式で生成しています。
列車所要時間
列車リンクの重み付けは各駅間の所要時間としています。
各種別の停車駅間の所要時間については、列車時刻表データを基に計算しています。それぞれの種別ごとに、平日日中に走るすべての列車の各停車駅間の所要時間の平均を求め、各リンクの所要時間として割り当てています。
列車時刻表データ配信されていない路線については、鉄道会社ホームページや路線図などに記載されている各種別の駅間の所要時間をリンクの重みとして付与しています。
平日日中に運行されていない種別は本プロジェクトの対象外としています。
平均待ち時間
乗車リンクの重みは平均待ち時間、すなわち平均運行間隔の半分の時間を割り当てています。
駅時刻表データが配信されている路線については、駅時刻表の各種別の平日日中の運行本数を基に平均待ち時間を計算しています。データが配信されていない路線については、列車所要時間と同様にホームページなどを基に算出しています。
乗り換え時間
乗り換え時間については、それぞれの乗り換えの組み合わせに対し、以下の通り決めています。
原則として、同一会社間の乗り換えの場合(東京メトロと都営地下鉄を除く)は一律3分、異なる会社間および東京の地下鉄路線同士の場合は一律5分に設定。
ただし、同一ホーム乗り換えとなる場合(例:東京メトロ銀座線・丸ノ内線赤坂見附駅)や線路を共有している場合(例:北総鉄道・京成成田スカイアクセス線)は0.5分としています。
これらに関わらず、大都市交通センサスにおける乗り換え時間調査が存在する乗り換えについては、その所要時間を使用しています。その他、極端に距離が長いなど個別に調整すべき箇所は適宜修正を加えています。
シェアサイクル情報
シェアサイクルに関する情報は、公共交通オープンデータセンターにて配信されているGBFSデータを使用しています。利用状況データは1分おきに更新します。各駅の集計データは、近接するサイクルポートの値を合計したものです。
集計したデータを基に、サイクルポートが近接しているかどうかを判定し、必要に応じてグラフを編集します。
近接するシェアサイクルポートの考え方
近接するポートの検索においては、計算負荷軽減のためオープンソースの空間インデックスであるH3を活用しています。
解像度10の六角形グリッド(1辺約28m)において、各駅および各サイクルポートが含まれるマスを計算した上でそのマス同士のグリッド上での距離を求めることで、簡便に2点間の距離の概算を求めることができます。
マス目内の位置による誤差を考慮し、同一マス内であれば距離は50m以内、隣接マスであれば約100m、距離nの位置にあるマス同士の距離を50(n+1)mとしています。すなわち、下の図において、Aの位置にあるポートは駅からの距離50m以内、Bの位置であれば100m以内、Cであれば150m以内であると考えます。
![](img/h3_grid.png)
到達圏マップにおいてシェアサイクルポートが近接する駅のみを自転車ルートの対象とすることができますが、そこで設定される約300m以内、というのは隣接5マス以内を検索、という意味になります。このような距離計算を行っているため、実際の距離と計算された距離には多少の差があり、実際には設定距離以下のサイクルポートが含まれていなかったり、逆に設定距離をわずかに超えるサイクルポートが含まれたりする可能性があります。
なお、自転車および徒歩移動における駅間の距離は、実際の直線距離を用いて算出されています。道のりは直線距離の1.5倍とし、自転車は分速300m、徒歩は分速80mと仮定して所要時間を求めています。
経路検索
本マップで表示される経路については、構築したネットワーク上における最速経路をダイクストラ法を用いて計算したものです。到達圏マップで表示している「自転車不使用」「自転車使用」「提案経路」は、以下の通りです。
自転車不使用
自転車を使用しない場合の最速経路です。構築したネットワークから自転車関連ノード・リンクを除いたものを用いて計算しています。徒歩のリンクは残っているため、駅間を徒歩で移動している場合があります。
自転車使用
自転車を1回以上必ず使用した場合の最速経路です。自転車リンクのうち、ユーザーが設定した自転車リンクの最短・最長距離から外れるリンクについては計算前に除外しています。また、シェアサイクルのある駅のみを使用する設定の場合は、近隣にシェアサイクルポートがある駅のみ自転車乗降可能としています。
自転車の使用を必須にするため、ネットワーク全体を複製し自転車使用前・使用後レイヤーとした上で、自転車リンクのみによって両者を接続する構造を考えます。自転車使用前レイヤーにおける出発駅ノードから自転車使用後レイヤーにおける到着駅ノードまでの最速経路を計算することによって、自転車の使用を必須とした最速経路を算出しています。
提案経路
上記の2つの経路のうち、より適していると思われる方を提案経路として提示します。具体的には、双方の所要時間を比較し、自転車使用時の方が速い場合もしくは自転車使用によって増える所要時間がユーザーが設定した許容時間より短い場合は自転車使用経路、それ以上に時間を要してしまう場合には自転車不使用経路を提案経路として示します。
自転車ポテンシャルの計算
ポテンシャルマップにて表示されるサイクルポテンシャルについては、大都市交通センサスのODデータを基に、全員が提案経路を通ると仮定したときの1日あたりの自転車利用客数として算出しています。具体的な計算方法は以下の通りです。
駅間の移動人数として、大都市交通センサスの2次ODデータを使用しています。発着駅の組み合わせごとに1日あたりの利用人数xを集計し、自転車利用も含めた提案経路を計算します。提案経路上に自転車の利用がある場合、その自転車リンクおよび両端の駅の自転車ポテンシャルにxを加算します。これをすべてのODペアに対して繰り返すことで、その駅および自転車リンクの利用されうる人数を求めています。各駅の規模の指標としてよく用いられる1日あたり乗降客数と単位を揃えているので、自転車ポテンシャルの規模を体感として分かりやすく提示しています。
![サイクルポテンシャルマップの使い方01](img/cycle_potential_explanation01.png)
この計算方法は、グラフ理論におけるノードおよびリンクの重要性を示す指標のひとつである媒介中心性 (Betweenness Centrality) の考え方を援用しています。ODデータが存在する駅同士のみを発着駅とし、その重要度をOD間のフローで重み付けして計算しています。
なお、自転車ポテンシャルに関しては計算負荷が高いため、あらかじめ所定の条件で計算したデータを地図上に表示しています。
今回の手法の限界
今回使用した手法には以下の制約・限界があります。以下の点をご確認いただき、本マップでは平均的な情報を示しているものであることに留意したうえで、具体的な旅行の計画においては、乗換検索サービス等による確認をお願いいたします。
鉄道以外のモードへの不対応
本プロジェクトでは鉄道およびシェアサイクルでの移動のみを想定しており、バスやタクシーなどの他の交通モードでの移動は考慮されておりません。バス利用による所要時間の短縮効果およびシェアサイクルとの比較は非常に興味深いと思われるので、今後の課題としたいと思います。
一方で、自転車ポテンシャルの高い駅あるいは区間は、同区間におけるバスの潜在的需要が高いと考えられます。フィーダー交通的需要は考慮できておりませんが、2駅間をバスで移動する需要の多寡を表した地図として、現行のバス路線との比較も興味深いです。
平均待ち時間の使用による制約
列車乗車時の待ち時間を、種別ごとの各駅での平均待ち時間として計算しているため、実際の待ち時間とは異なる場合があります。また、上下線で所要時間が異なる場合もあります。例えば、以下のような場合が想定されます。
- 運転間隔のばらつきは反映されていないため、時間帯によって実際の運行間隔が大きく異なる場合、表示と異なる場合があります。
- 複数の種別が利用可能な場合でも平均待ち時間が個別に計算されるため、実態よりも待ち時間が長くなります。
- 一部列車が途中駅止まり、他の支線に直通する場合でも、出発駅における当該種別の運行本数に基づき平均待ち時間が計算されるため、実際に利用できる列車の待ち時間より短くなります。
- 上記に関連し、運行頻度の高い駅から運行頻度の低い駅までの経路の方が出発駅における待ち時間が短いため、逆の経路と比べて所要時間が短くなります。
- 異なる種別同士の連絡や支線区との乗換など、接続が考慮されたダイヤが組まれている場合でも、乗り換え時間は平均待ち時間となるため実態よりも長くなります。
- 極端に運行間隔が広い場合、鉄道利用が表示されずに徒歩や自転車による移動のみ表示される場合があります。
補完したデータに関する限界
本プロジェクトにおいては、配信されていないデータを他のデータソースを参照しながら補完しています。この際、平日日中のおおまかな傾向を掴んでデータ化していますが、手作業で行っているためデータに誤りがある可能性があります。
また、乗換時間・直通時間については一定のルールに基づいて所要時間を割り当てているため、実態とは異なる可能性があります。
徒歩・自転車の移動時間に関する制約
駅間の徒歩・自転車移動については、道のりを駅間の直線距離の1.5倍と仮定して所要時間を計算しているため、実際の移動距離とは異なる可能性があります。特に、河川や大通りをわたる場合など大きく迂回する必要がある場合などにおいては、実際の所要時間が地図上の表示を大幅に上回ってしまうことがあります。
自転車の連続使用に関する限界
自転車の連続使用は発生しづらいようネットワークの構造は工夫してありますが、鉄道利用が極端に不便な場合においては、自転車を連続で使用する経路が表示される場合があります。この場合、合計の自転車移動距離がユーザーが設定した範囲を上回ります。
経路においては途中の駅でサイクルポートと駅の徒歩での往復(合計10分)が表示されますので、休憩時間と捉え引き続き自転車に乗りましょう!
自転車の強制使用に関する限界
自転車を必ず使用する場合の経路選択において、(本来は直接乗り換えられるはずの)乗換駅前後で短区間のアリバイ的な自転車利用が行われる場合があります。この場合、自転車の最短利用距離を長く設定することで、より有効な自転車利用経路が表示される可能性を上げることができます。
ポテンシャルマップにおいても、このような利用によるターミナル駅付近の利用が増大しており、過大評価されている可能性があります。
大都市交通センサスのデータ提供範囲とネットワーク構築範囲の違いによる限界
ポテンシャルマップにおいて表示されるポテンシャルは、大都市交通センサスのデータを用いて計算されています。しかし、センサスの集計範囲と今回のネットワーク構築範囲が異なるため、一部区間においてポテンシャルが表示されなかったり、ポテンシャルの値が実態と異なる場合があります。特に周縁部において大都市交通センサスのデータが無い区間・路線があり、ポテンシャルが計算されていない場所があります。具体的な違いは以下の通りです。
大都市交通センサスのデータが提供されているがネットワークを構築していない路線
JR水戸線、JR両毛線、JR中央本線(高尾以西)、JR御殿場線、箱根登山鉄道線、伊豆箱根鉄道大雄山線
ネットワークが構築されているが大都市交通センサスのデータが無い路線
JR東海道本線(湯河原以西)・JR伊東線、JR東北本線(小山以北)、JR総武本線(横芝以東)、JR成田線(小見川以東)、JR高崎線(神保原以北)、JR八高線(児玉以北)、JR常磐線(石岡以北)、東急新横浜線(調査時未開通)、相鉄新横浜線(新横浜~羽沢横浜国大:調査時未開通)、東武伊勢崎線(多々良以北)、東武宇都宮線(野州大塚以北)、東武日光線(家中以北)、東武桐生線、東武小泉線、東武鬼怒川線、都電荒川線、秩父鉄道(波久礼以西)、いすみ鉄道(城見ヶ丘以東)、銚子電鉄、鹿島臨海鉄道、ひたちなか海浜鉄道、ディズニーリゾートライン
使用言語・パッケージ等
データの取得・処理にはPython、オンラインマップの表示はJavaScriptを使用しています。オンラインマップのソースコードは、GitHubのレポジトリをご参照ください。
使用した主なパッケージは以下の通りです。