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. 使い方
sample.py内のYOUR_API_KEYをご自身がお持ちのキーに書き換えます。sample.pyを配置したフォルダ内にて、下記コマンドを実行します。あるいは別のアプリケーションからsample.pyを実行します。python ./sample.py
最後に
このチュートリアルでは、NAVITIME Route(bicycle) APIの基本的な使い方として、出発地点、到着地点を指定した自転車での経路検索をご紹介しました。
ここで紹介したコードを元に、ぜひサービスやシステムに自転車経路検索機能を組み込んでみてください。
このチュートリアルが、今後の開発の一助となれば幸いです。