コンテンツにスキップ

NAVITIME Route(bicycle) API チュートリアル (Python編)

このチュートリアルでは、Pythonを使ってNAVITIME Route(bicycle) APIにアクセスする方法の一例を解説します。
リクエストには標準的なrequestsライブラリを使用します。

準備

  • APIキー: RapidAPIで取得したご自身のX-RapidAPI-Keyを用意してください。
  • pythonファイル : 以下のコードをpythonファイルに記述します。

requestsライブラリがインストールされていない場合は、以下のコマンドでインストールしてください。

pip install requests

1. pythonコードの作成(sample.py)

出発地点、到着地点を指定して自転車での経路検索を行います。

ソースコードを参照する場合はトグルをクリックしてください
import json
import requests

# 設定
# ご自身のRapidAPIキーに置き換えてください
API_KEY = 'YOUR_API_KEY'
API_HOST = 'navitime-route-bicycle.p.rapidapi.com'


def search_route(start, goal):
    """
    NAVITIME Route(bicycle) APIを使用して経路を検索する
    :param start: 出発地点
    :param goal: 目的地点
    """

    url = f"https://navitime-route-bicycle.p.rapidapi.com/route_bicycle"

    querystring = {
        "start": start,
        "goal": goal,
        "options": "turn_by_turn",  # 交差点等、進行情報を案内するための地点情報を取得
        "condition": "total_distance"  # ルート検索の優先事項に"総距離が短い"を指定
    }

    headers = {
        "X-RapidAPI-Key": API_KEY,
        "X-RapidAPI-Host": API_HOST
    }

    print(f"APIリクエストURL: {url}")
    print(f"パラメータ: {querystring}")


    try:
        requests.get(url, headers=headers, params=querystring)
        response = requests.get(url, headers=headers, params=querystring)
        data = response.json()
        return data

    except requests.exceptions.RequestException as e:
        print(f"エラーが発生しました: {e}")
        return None


if __name__== "__main__":
    # 実行例
    # 出発地点
    start_lat = 35.671422   #原宿駅付近の緯度
    start_lon = 139.703008  #原宿駅付近の経度
    start = f"{start_lat},{start_lon}"

    # 目的地点
    goal_lat = 35.671913    # 明治神宮外苑付近の緯度
    goal_lon = 139.72096   # 明治神宮外苑付近の経度
    goal = f"{goal_lat},{goal_lon}"

    # 経路探索
    result = search_route(start, goal)

    if result:
        print("\n--- APIレスポンス結果 ---")
        print(json.dumps(result, indent=2, ensure_ascii=False))
        if result.get('items'):
            for item in result['items']:
                summary = item.get('summary')
                print(f"\n--- 経路 {summary.get('no')} ---")

                move = summary.get('move')
                distance = move.get('distance') / 1000  # メートルをキロメートルに変換

                print(f"所要時間: {move.get('time')}分")
                print(f"距離: {distance}Km")

                print(f"\n--- 移動情報 ---")
                to_time = ''
                for section in item.get('sections'):
                    if section.get('type') == 'point':
                        point_name = section.get('name')
                        if (to_time != ''):
                            print(f"{to_time}{point_name}")

                    if section.get('type') == 'move':
                        # 移動情報
                        from_time = section.get('from_time').split('T')[1][0:5]
                        to_time = section.get('to_time').split('T')[1][0:5]
                        line_name = section.get('line_name', '')
                        time = section.get('time', '')

                        print(f"{from_time}{point_name}")
                        print(f"↓ {line_name} ({time}分)")

実行結果の例

内容を参照するにはトグルをクリックしてください
--- 経路 1 ---
所要時間: 8分
距離: 1.983Km

--- 移動情報 ---
15:29発 start
↓  (0分)
15:29着 交差点
15:29発 交差点
↓  (0分)
15:29着 案内地点
15:29発 案内地点
↓  (0分)
15:30着 案内地点
15:30発 案内地点
↓  (0分)
15:30着 案内地点
15:30発 案内地点
↓  (0分)
15:30着 竹下口
15:30発 竹下口
↓  (0分)
15:30着 交差点
15:30発 交差点
↓  (0分)
15:31着 案内地点
15:31発 案内地点
↓  (0分)
15:31着 案内地点
15:31発 案内地点
↓  (0分)
15:31着 案内地点
15:31発 案内地点
↓  (0分)
15:31着 案内地点
15:31発 案内地点
↓  (0分)
15:31着 案内地点
15:31発 案内地点
↓  (0分)
15:31着 交差点
15:31発 交差点
↓  (0分)
15:32着 案内地点
15:32発 案内地点
↓  (0分)
15:32着 案内地点
15:32発 案内地点
↓  (0分)
15:32着 案内地点
15:32発 案内地点
↓  (0分)
15:32着 案内地点
15:32発 案内地点
↓  (0分)
15:33着 案内地点
15:33発 案内地点
↓  (0分)
15:33着 案内地点
15:33発 案内地点
↓  (0分)
15:33着 案内地点
15:33発 案内地点
↓  (0分)
15:33着 神宮前三丁目
15:33発 神宮前三丁目
↓  (0分)
15:34着 案内地点
15:34発 案内地点
↓  (0分)
15:34着 案内地点
15:34発 案内地点
↓  (0分)
15:34着 案内地点
15:34発 案内地点
↓  (0分)
15:34着 案内地点
15:34発 案内地点
↓  (0分)
15:35着 案内地点
15:35発 案内地点
↓  (0分)
15:35着 交差点
15:35発 交差点
↓  (0分)
15:36着 外苑前
15:36発 外苑前
↓  (1分)
15:37着 赤坂消防署入口
15:37発 赤坂消防署入口
↓  (0分)
15:37着 青山2丁目
15:37発 青山2丁目
↓  (0分)
15:37着 goal

3. 使い方

  1. sample.py内のYOUR_API_KEYをご自身がお持ちのキーに書き換えます。
  2. sample.pyを配置したフォルダ内にて、下記コマンドを実行します。あるいは別のアプリケーションからsample.pyを実行します。
    python ./sample.py
    

最後に

このチュートリアルでは、NAVITIME Route(bicycle) APIの基本的な使い方として、出発地点、到着地点を指定した自転車での経路検索をご紹介しました。
ここで紹介したコードを元に、ぜひサービスやシステムに自転車経路検索機能を組み込んでみてください。
このチュートリアルが、今後の開発の一助となれば幸いです。