LoginSignup
12
4

More than 5 years have passed since last update.

オープンソースの経路探索「OpenTripPlanner」をDockerで動かして岡山県で経路探索をする

Last updated at Posted at 2018-12-17

見覚えのあるタイトル!と思った方はヴァル研Qiitaマニア🤔
後輩が書いた記事をそっくりパクって参考にdocker使ってどこの環境でも動くものにしてしまおう。

細かい説明は、そちらの記事にあるので、そちらを見ていただいて...()
https://qiita.com/kumatira/items/658e7b75785c854f0f69

今回作成したDockerfileがこちら

多少、上の記事の手順を入れ替えてますが、同じ内容です。
https://github.com/soe-j/open-trip-planner/blob/master/Dockerfile

Dockerfile
FROM ubuntu:latest

RUN apt-get -y update 

RUN apt-get install -y openjdk-8-jre
RUN apt-get install -y wget

RUN cd /root && \
    mkdir otp && \
    cd otp && \
    wget "https://repo1.maven.org/maven2/org/opentripplanner/otp/1.3.0/otp-1.3.0-shaded.jar" && \
    wget "http://www3.unobus.co.jp/opendata/GTFS-2018-04-15.zip" -O unobus.gtfs.zip && \
    wget "http://www.shimoden.net/busmada/opendata/GTFS_JP.zip" -O shimodenbus.gtfs.zip && \
    wget "http://loc.bus-vision.jp/gtfs/ryobi/gtfsFeed" -O ryobibus.gtfs.zip && \
    wget "http://loc.bus-vision.jp/gtfs/okaden/gtfsFeed" -O okadenbus.gtfs.zip && \
    wget "http://loc.bus-vision.jp/gtfs/chutetsu/gtfsFeed" -O chutetsubus.gtfs.zip

RUN cd /root && \
    apt install -y osmctools && \
    wget "http://download.geofabrik.de/asia/japan/chugoku-latest.osm.pbf" && \
    osmconvert chugoku-latest.osm.pbf -b=133.455201,34.274923,134.298740,35.284564 --complete-ways -o=okayama.pbf && \
    mv okayama.pbf otp/ 

ENTRYPOINT java -Xmx5G -jar /root/otp/otp-1.3.0-shaded.jar --build /root/otp/ --inMemory

このDockerfileのあるディレクトリで、以下のコマンドを実行。
Image名のkumanoは特に意味はありません。uniqになれば何でもいいです。

$ docker build -t kumano/otp:0.1 ./
$ docker run --name otp -p 8080:8080 kumano/otp:0.1

docker-composeも使えるあなたはこちら

Dockerfileが同じディレクトリにある想定です。
https://github.com/soe-j/open-trip-planner/blob/master/docker-compose.yml

docker-compose.yml
version: "2"
services:
  otp:
    build:
      context: ./
    image: kumano/otp:0.1
    ports:
      - 8080:8080

dockerコマンドを叩く代わりに、このコマンドを実行。
docker-compose.ymlのあるディレクトリでお願いします。

$ docker-compose up

さて、動作確認

buildもrun(up)もめちゃめちゃ時間がかかるので、お茶でも淹れていましょう🍵
dockerコンテナが立ち上がった後も、じわりじわりとログが流れていてOTPが起動できてないことがわかります。

otp_1  | 10:36:50.176 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8080]
otp_1  | 10:36:50.181 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8081]
otp_1  | 10:36:50.184 INFO (HttpServer.java:300) [HttpServer] Started.
otp_1  | 10:36:50.184 INFO (GrizzlyServer.java:153) Grizzly server running.

上のようにポート8080が開通したら合図です。
以下のパスを叩いてみて喜びましょう👐

利用できる交通手段

http://localhost:8080/otp/routers/default/

Feedid一覧

http://localhost:8080/otp/routers/default/index/feeds

上で取れたFeedIDの一つを使ってFeedの提供事業者を見てみる

http://localhost:8080/otp/routers/default/index/agencies/1

上の情報から取れる事業者IDを使って、その事業者の全系統表示

http://localhost:8080/otp/routers/default/index/agencies/1/1260001000674/routes

経路探索

http://localhost:8080/otp/routers/default/plan?fromPlace=34.656513,133.975075&toPlace=34.665495,133.918570&time=1:02pm&date=11-14-2018&mode=TRANSIT,WALK&maxWalkDistance=500&arriveBy=false&numItineraries=5
http://localhost:8080/otp/routers/default/plan?fromPlace=34.779151,134.038106&toPlace=34.665495,133.918570&time=1:02pm&date=11-14-2018&mode=TRANSIT,WALK&maxWalkDistance=500&arriveBy=false&numItineraries=5

まとめ

Dockerを使ってこんなに手順を減らせました

$ git clone git@github.com:soe-j/open-trip-planner.git
$ cd open-trip-planner
$ docker-compose up

Docker最高。
@kumatira ご教示ありがとうございました!

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4