【Python】GoogleMapAPIを使ってルート案内の指示を全部取得してみた

こんにちは、ヒガシです。

 

今回は、以下の画像のようにGoogleMapを使ってルート案内したときに表示される通行指示をチェックポイントごとに全部取得するということをやってみました。

Web版GoogleマップとAPI版の指示を比較した結果

どんな作業を行ったかを記録しておきます。

スポンサーリンク

まずはルートAPIから情報を得る

まずは出発地点、目的地、出発時刻をGoogleMapAPIのルート案内APIに入力します。

def get_root(origin, destination, dep_time):
    endpoint = 'https://maps.googleapis.com/maps/api/directions/json?'
    dtime = datetime.datetime.strptime(dep_time, '%Y/%m/%d %H:%M')
    unix_time = int(dtime.timestamp())
    nav_request = 'language=ja&origin={}&destination={}&departure_time={}&key={}'.format(origin,destination,unix_time,api_key)
    nav_request = urllib.parse.quote_plus(nav_request, safe='=&')
    request = endpoint + nav_request
    response = urllib.request.urlopen(request).read()
    directions = json.loads(response)
    return directions
origin = '東京駅'
destination = '品川駅'
dep_time = '2024/5/26 12:00'
directions = get_root(origin, destination, dep_time)

※api_keyはご自身のものを入力してください。

 

これで変数directionsの中に、冒頭にご紹介したような通行指示を含んだ膨大な情報が格納されていることになります。

 

スポンサーリンク

各チェックポイントごとの通行指示を表示する

ここまでくればあとはゴリゴリ情報を抜き出してくるだけです。

num_trip_data = len(directions['routes'][0]['legs'][0]['steps'])
for i in range(num_trip_data):
    step = directions['routes'][0]['legs'][0]['steps'][i]
    instructions = str(step['html_instructions'])
    print(instructions)

 

こいつを実行すると以下の結果が出力されました。

APIからルート指示を取得した結果

 

なにやらHTMLタグが紛れ込んでますね。

 

スポンサーリンク

HTMLタグを削除する

見にくいので<>を削除する関数もつくっておきましょう。

def remove_instructions_html(instructions):
    while instructions.find('<')!=-1:
        start_pos = instructions.find('<') end_pos = instructions.find('>')
        instructions = instructions[:start_pos] + instructions[end_pos + 1:]
    return instructions

 

<>を削除する関数をかませたあとの結果を表示してみます。

num_trip_data = len(directions['routes'][0]['legs'][0]['steps'])
for i in range(num_trip_data):
    step = directions['routes'][0]['legs'][0]['steps'][i]
    instructions = str(step['html_instructions'])
    instructions = remove_instructions_html(instructions)
    print(instructions)

文字列からHTMLタグを削除した結果

 

完璧!!

 

スポンサーリンク

おわりに

というわけで今回はGoogleMapAPIを使って、ルート案内の指示を全部取得するということをやってみました。

他にもいろいろな情報を取得できるのでぜひ遊んでみてください。

 

それではまた!

コメント

タイトルとURLをコピーしました