今回やることの簡単な説明
GTFSという経路検索のフォームを用いて、過去の時刻表データを作成し、旅客輸送における時代変遷を調べようと思いました。
今回は、オープンソースを用いて自作のGTFSデータを動かすための準備を行います。
GTFSデータとは
GTFSデータとは、経路検索のための世界的な標準プラットフォームです。
GTFSデータの作り方
ここでは説明を省略します。西沢ツールやその筋屋を使うのが一般的です。
日本国内の路線バスでは、多くの路線がGTFSデータを公開しています。以下のサイトなどでその一覧を確認することができます。
具体的に利用するエリアや運行会社が決まっている場合は、「バス会社 GTFS」と調べてみるとよいでしょう。
参考になるQiita記事
これらはMacOSやUbuntuでの動作を説明しています。
操作手順の説明
操作手順は、
- OSM(OpenStreetMap)を編集するためのosmosisというソフトをインストール
- OSMデータのインストール
- OSMデータの編集(osmosisを用いる)
- 経路検索エンジンとなるOTP(OpenTripPlanner)のインストール
- OTP起動~解析
となります。
osmosisのインストール
OSMの生データをコマンドで編集できるソフトがosmosisです。
以下リンクからzipファイルをダウンロードしてください。解凍したら、C:\Program Files (x86)にソフトを入れましょう。
詳細はこの2つの記事を参考にしてください。
2つめのページだとPath環境変数の設定の仕方が以前のWindowsの方法となっていますので、以下を参考にPath変数を指定してください。これにより、コマンドプロンプトを開いたときにosmosisと入力するだけで起動可能です。
OSMデータのインストール
OpenStreetMapで使用されている道路のデータをダウンロードします。
geofabrik.deのサイトから各地域に分けてDLが可能です。
OSMデータの編集
自分のユーザーファイル(C:\User\Username)のところに「otp」のディレクトリ(新しいファイル)を作成します。
コマンドプロンプトに移動(Windowsマークの隣の検索画面からcmdと入力すると出てくる)して以下を入力してください。
cd otp
先ほどインストールしたosmosisは、それぞれコマンドを入力することでOpenStreetMapのデータの編集ができます。
例:osmoisを使って切り取り(chubu-latest.osm.pbfから山梨県西部を切り取り)
osmosis --read-pbf chubu-latest.osm.pbf --bounding-box top=37.0586280822754 left=138.397018432617 bottom=35.9853324890137 right=139.669952392578 completeWays=yes --write-pbf westyamanashi.pbf
例:osmosisを使って関東、中部のデータをmerge。
osmosis --rb chubu-latest.osm.pbf --rb kanto-latest.osm.pbf --merge --wb centjapan-latest.osm.pbf omitmetadata=true
例:mergeしたファイルを中央線沿線で切り取り。
osmosis --read-pbf centjapan-latest.osm.pbf --bounding-box top=36.00 left=138.20 bottom=35.14 right=139.72 completeWays=yes --write-pbf aroundyamanashi.pbf
今日紹介した以外のosmosisの使い方はこのサイトが参考になります。
OpenTripPlanner(OTP)のインストール
データの下準備が終わったので、実際に経路の解析を行うOpenTripPlannerをダウンロードしましょう。
手順は以下の通りです。
(1)さきほど作成した「otp」のディレクトリ(新しいファイル)を開く。
(2)以下リンクにアクセス。最新バージョンのディレクトリを開く。
(3)文末に「shadded.jar」と書かれたものを(1)で開いたディレクトリにダウンロード。
(4) 後ほど説明しますが、到達圏解析を行うのであれば1.5.0を使います。
OTPの起動
OTPは以下コマンドを入力することで起動ができます。
「otp」ディレクトリの中に含まれるosmデータおよびGTFSデータから解析が行われるので、編集前のダウンロードしたときのosmデータは消しておく。(コマンドプロンプトを使いこなせる人は、osmosisをほかのディレクトリで動作させて、完成したosmデータのみをotpディレクトリに入れるほうが良い)
メモリ10GBまでの利用を認める場合
java -Xmx10G -jar otp-1.5.0-shaded.jar --build ./ --inMemory
メモリ4GBまでの利用を認める場合
java -Xmx4G -jar otp-1.5.0-shaded.jar --build ./ --inMemory
コマンドを打つと、サーバーが起動し、OSMデータを計算してデータベースを作成し始めます。
下記メッセージが出たら準備完了です。
Grizzly server running.
以降はブラウザ上でURLを打つ形で実行します。
Chromeやfirefox等でやってみましょう。
接続が完了しているか確認する
http://localhost:8080/otp/routers/default/
入力GTFSデータ数の確認
http://localhost:8080/otp/routers/default/index/feeds
from甲府 to小淵沢 13:00出発
http://localhost:8080/otp/routers/default/plan?fromPlace=35.667125,138.568760&toPlace=35.863803,138.316423&time=1:00pm&date=11-30-2022&mode=TRANSIT,WALK&maxWalkDistance=300000&arriveBy=false&numItineraries=5
from新宿 to甲府 13:00到着
http://localhost:8080/otp/routers/default/plan?fromPlace=35.690190,139.700617&toPlace=35.667125,138.568760&time=1:00pm&date=11-30-2022&mode=TRANSIT,WALK&maxWalkDistance=300000&arriveBy=true&numItineraries=5
これらの検索では、numItinerariesで設定した数だけ経路が検索されて、XMLが返ってきます。
続いて、到達圏についてです。
到達圏の詳しいパラメータについては、以下のページを参考にしてください。
Ver.2以降では到達圏解析を行う機能をなくし、経路検索に特化していきました。
Conveyal R5というものを使うことが推奨されています。
OpenTripPlannerでの到達圏解析というのは少しレガシーなものになるかもしれません。