QGISと「GTFS-GO」でGTFSを可視化しよう！

## お知らせ

v2で運行頻度図の作成に対応しました

<img src="https://camo.qiitausercontent.com/f87b85fc8d9ea34e7869701f7d08f13712344597/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f37333139372f62353436343038662d306232372d353137322d383062342d3431643333343139613666622e706e67" width="560px">

https://qiita.com/Kanahiro/items/140f50b7f7894f260fde

## はじめに

![GTFS_GO.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/2e264619-86a0-8026-98bd-5f59ff047f97.gif)


![スクリーンショット 2020-12-09 21.23.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/ee8dcb71-25c2-ba79-cfbd-21940050eace.png)

### GTFSとは？

[General Transit Feed Specification / Wikipedia](https://ja.wikipedia.org/wiki/General_Transit_Feed_Specification)

正式名称を直訳するなら「交通情報全般の規格」でしょうか、その名のとおり、公共交通機関の時刻表や地理的情報に関するオープンフォーマットです。

昨今のオープンデータ界隈において、GTFSは最もホットな話題のひとつでしょう。GTFSを国内向けに拡張したGTFS-JPが定義されて以降、バス事業者をはじめとした多くの方々の手によりGTFSデータが整備され、オープンデータとして公開されています。

### 利用上の課題

GTFSデータは機械判読性は高いですが、可視化は容易ではなく使えるツールが限られています（ツール例：[https://tshimada291.sakura.ne.jp/transport/gtfs-viewer/](https://tshimada291.sakura.ne.jp/transport/gtfs-viewer/)）。また、可視化出来ても活用しやすい土壌があるとは言えませんでした。

そこで、みんなだいすきQGIS上で可視化できれば、色々なデータやプロセッシングを組み合わせてデータ分析したり、スタイルなど調整して路線図を作ったり出来てとても楽しいのではないか！ということで、QGISプラグイン開発を得意とする[MIERUNE](https://mierune.co.jp/)ならではのプロダクトとして制作し、オープンソースで公開しました。

## もくじ

<!-- TOC -->

- [GTFS-GO](#gtfs-go)
    - [使用例](#使用例)
    - [ライセンス](#ライセンス)
    - [インストール](#インストール)
- [使い方](#使い方)
    - [GTFSデータと出力先を選択](#gtfsデータと出力先を選択)
    - [処理の実行](#処理の実行)
    - [オプション](#オプション)
    - [gtfs_go_datalist.jsonについて](#gtfs_go_datalistjsonについて)
- [オープンソースプロジェクトとして](#オープンソースプロジェクトとして)
- [終わりに](#終わりに)

<!-- /TOC -->

## GTFS-GO

GitHub: https://github.com/MIERUNE/GTFS-GO
QGIS-Plugin-Repo: https://plugins.qgis.org/plugins/GTFS-GO-master/

### 使用例

#### まいどはやバス（富山県富山市）

![ss2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/2dfcc242-6bd2-fe1e-b494-c2b46e05b5c0.png)

#### コミュニティバス（大分県中津市）

![ss5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/6d833534-c5e9-fd66-f8cf-65289b2f35fa.png)

#### 拓殖バス（北海道帯広市）×人口メッシュ（国土数値情報）

![ss4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/f115f1ae-3e3d-424f-3039-ea05ee7c7859.png)

### ライセンス
- GPL-2
- ただしGTFS解析モジュールはMIT

### インストール

公式リポジトリに登録済みなので、QGIS上でインストールする事が出来ます。

- 「プラグインの管理とインストール」をクリック

![スクリーンショット 2020-12-09 21.09.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/9e190ad7-21bd-5b99-4236-c04556106a2b.png)

- GTFSと入力するといくつか候補が出てくるので「GTFS-GO」を選択して「インストール」をクリック

![スクリーンショット 2020-12-09 21.08.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/a822f15a-cd80-3f1c-ad91-4531d096752a.png)

- インストールに成功すると、メニューバーおよびパネルに、下記画像のようにアイコンが追加されます。

![スクリーンショット 2020-12-09 20.58.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/217549b2-e5f2-b493-8493-289f9d1dec29.png)

これらをクリックするとメインウィンドウが表示されます。

![スクリーンショット 2020-12-09 14.53.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/3545d3ed-0e49-e541-bd2b-160b0dc8d197.png)

## 使い方

### GTFSデータと出力先を選択

手元に保存済のZIPファイルを読み込ませるか、プリセットのURLからダウンロードするか、いずれかの方法でGTFSデータを解析することができます。

#### ZIPファイルを読み込ませる場合

「---zipファイルから読み込み---」を選択すると、直下のファイル選択が有効になるので、任意のGTFS-ZIPファイルを指定してください。

![スクリーンショット 2020-12-09 14.54.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/b9876483-d84f-c1b7-0f29-bcd39b65d49c.png)


#### プリセットのデータをダウンロードして読み込ませる場合

プルダウン内には、gtfs_go_datalist.json（後述）にて定義されたデータが存在します。それを選択して処理を実行すると、インターネット上のオープンデータを直接ダウンロードしてから解析します。

![スクリーンショット 2020-12-09 14.54.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/8a10b554-2aa9-5ca9-ec28-7dba2c02ee07.png)

また、指定したフォルダ内に、GTFSをパースしたデータであるstops.geojsonおよびroutes.geojsonを格納したフォルダが生成されます。

### 処理の実行

「QGISに読み込み」ボタンを押下すると処理がスタートします。解析（およびダウンロード）には、対象のGTFSデータの規模に比例した時間がかかります。

![スクリーンショット 2020-12-09 14.54.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/94d634b9-81a8-7dda-27ed-b0bb823c498c.png)

完了後、自動的にプロジェクトにレイヤーが追加されます。

![スクリーンショット 2020-12-09 14.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/0d29d47b-2f40-f7ef-0e67-3d6a904feb2f.png)

指定フォルダに、GeoJSONファイルを含むフォルダが生成されます。

![スクリーンショット 2020-12-09 14.58.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/860786bc-51e9-55dc-7ea6-db4ce99c8c49.png)

### オプション

#### shapes.txtを無視する

GTFSにおいて、走行ルートを示すshapes.txtは任意のデータなので、存在しない場合は停留所間を直線で接続してルートを疑似的に描画します。shapes.txtが存在すれば、そのデータを用いてルートを描画しますが、このオプションにチェックを入れると、データを存在しないものとして扱います（停留所同士を接続します）。

- チェックがない場合（shapes.txtをもとに描画）

![スクリーンショット 2020-12-09 15.02.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/4289d64f-bb55-c84d-a8c9-a03c82bde407.png)

- チェックがある場合（停留所間を接続）

![スクリーンショット 2020-12-09 15.01.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/17eb98c5-9065-150a-b3e5-2624cd590df5.png)

#### 経路を持たないstopsを無視する

stops.txtには、経路と紐づかない停留所データが含まれる事があります（往・復路の停留所の重心が含まれていることがよくある）。使い道によっては必ずしも必要なデータではない事から、このオプションにチェックを入れることで、そういった停留所は無視して解析する事ができます。

- チェックがない場合

![ss6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/2ef77782-3463-1fcd-0f53-8680c1c1d4ba.png)

- チェックがある場合（経路を持たない停留所データをスキップ）

![ss7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/188d5c0a-13a3-72e9-6bba-a5a0acc807d4.png)

### gtfs_go_datalist.jsonについて

プラグインフォルダ内にある[JSONファイル](https://github.com/MIERUNE/GTFS-GO/blob/master/gtfs_go_datalist.json)を編集する事で、プリセットデータを変更する事が出来ます。以下のようなシンプルなスキーマとなっておりますので、お好みに編集する事が可能です。

```json
[
    {
        "region": "北海道",
        "name": "北海道拓殖バス（一般路線バス・各町コミュニティバス）",
        "url": "https://www.takubus.com/app/download/10941479479/GTFS_regular_line.zip?t=1606785205"
    },
    // 以下略
]
```


## オープンソースプロジェクトとして

- このプラグインはオープンソースです、使用された皆さんからフィードバックなどをいただきながら、機能の追加・改善を行っていく予定です
- 不具合や要望などありましたら[Issue](https://github.com/MIERUNE/GTFS-GO/issues)にいただけますとスムーズです
- プロジェクト全体はGPL-2ですが、GTFSをパースするモジュールはMITライセンスです

## 終わりに

弊社はこういったQGISの追加機能開発を得意としており、これまで多くのお客様の多様なニーズに沿った機能を受注・開発してきております。もしご興味がございましたら、[弊社ウェブサイト](https://mierune.co.jp/)よりご気軽にお問い合わせくださいませ。

また本記事のスクリーンショットの背景でも活用している、地図配信サービスMapTilerを日本向けに展開しております。他社に比べ圧倒的に高いコストパフォーマンスでベクタータイル含む高品質な地図データを利用する事が出来ます。詳細は[MapTiler.jp](https://maptiler.jp/)からどうぞ。