4
3

More than 1 year has passed since last update.

公共交通オープンデータセンターにあるドコモ・バイクシェアのstation_information情報をCSVファイルにする

Posted at

当記事では公共交通オープンデータセンターにあるドコモ・バイクシェアのstation_information情報をpythonを使ってダウンロードし、CSVファイルにする方法を説明します。

1. 公共交通オープンデータセンターとユーザ登録

公共交通オープンデータセンターとは:
(https://www.odpt.org/overview/  より引用)

公共交通オープンデータセンターでは、公共交通オープンデータ協議会に参画する交通事業者のデータを、一般の開発者やICTベンダー等にワンストップで提供します。

  • 鉄道・バス・航空・旅客船事業者のデータを、リアルタイムデータ等も含め、広くサポートします。
  • 事前処理(クレンジング)を行ったデータを、REST APIを通じて、共通のJSON形式で提供します。
  • バスや旅客船のデータを中心に、GTFS形式でのデータ提供も行います。

公共交通オープンデータを使用したい場合は、公共交通オープンデータセンター開発者サイトで、ユーザ登録が必要です。」となっているのですが、今回使用するドコモ・バイクシェアのstation_information情報はアクセストークンなしでアクセスできてしまいます。なので、以下は参考までに!


ユーザ登録が完了すると開発者サイトに記載されているAPI仕様に沿って、公共交通データを利用することが可能になります。ユーザ登録は無料です。

登録を申請いただいた後、申請内容に問題がない場合、最大2営業日程度で承認完了のメールをお送りします。

 と申請フォームには書かれていましたが、私の場合は、登録して1時間もぜずに(10分くらい?)承認完了のメールが来ました。

2. アクセストークンの確認(参考)

1でも書きましたが、今回使用するドコモ・バイクシェアのstation_information情報はアクセストークンなしでアクセスできてしまいます。なので、以下は参考までに!


登録が完了したら、アクセストークンを確認しましょう。
公共交通オープンデータセンター開発者サイトにログインします。

画面右上の Account から、 「アクセストークンの確認・追加」をクリックします。
image.png

デフォルトで1つ作成されています。アクセストークンはここからコピーしてください。
image.png

3. ドコモ・バイクシェア バイクシェア関連情報(GBFS形式)

こちらにあります:
https://ckan.odpt.org/dataset/c_bikeshare_gbfs-d-bikeshare

GBFS形式で提供されています。GBFS(General Bikeshare Feed Specification)形式はマイクロモビリティの標準的なデータフォーマットとして規格化されているJSON形式のフォーマットです。
詳細は、以下のQiitaの記事がわかりやすかったです:

今回はこちらバイクシェア関連情報 station_informationをpythonからAPIでアクセスして、CSVファイルに保存してみます。

station_information はいわゆるサイクルポート情報で、サイクルポートの名前や経度・緯度、収容台数などの情報です。

4. station_informationをpythonからAPIでアクセスして、CSVファイルに保存

では早速やってみます。
バイクシェア関連情報 station_information
にアクセスすると以下のようなWebページが表示されます。
image.png

私は最初、点線で囲まれたURLでアクセストークンを指定して情報取得していたのですが、よくみると一番上にアクセストークンなしのURLがありましたので(上のイメージの実線の四角で囲まれた部分)、こちらのURLを使用することにします。

このURLをクリックするとわかりますが、アクセスすればそのままGBFS形式のJSONが返ってきます。よってそのJSONをpandasのDataFrameに入れた後、csvとして保存すればOKです。

以下はstation_information.csvに保存する例です:

import requests
import json
import pandas as pd

req_url = 'https://api-public.odpt.org/api/v4/gbfs/docomo-cycle-tokyo/station_information.json'

# URLにアクセス
request = requests.get(req_url)

# 必要な部分のみ抜き出し
data_json = json.loads(request.text)['data']['stations']

# pandasのDataFrameに入れる
df = pd.read_json(json.dumps(data_json))

# 保存
df.to_csv('station_information.csv', index=False)

以上です。

4
3
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
4
3