ここではGoogle Maps APIを用いたGeocodingについて解説します。Google Maps APIでは、様々なサービスが提供されており、様々な空間情報を得ることができます。主な機能として「マップ」、「ルート」、「プレイス」があります。「マップ」はGoogleマップの様々な機能、「ルート」は道路ネットワークを使用した機能、「プレイス」は場所に関連する様々な機能となります。これに加えて、2023年からEnvironment API 群が公開されました。それぞれの主な具体的な機能は下記のサイトなどを参照ください。
> https://www.zenrin-datacom.net/solution/gmapsapi/function#function_environment
Google Maps APIの機能を利用するためには、まずGoogle Maps Platformに登録する必要があります。※Googleアカウントを持っていない場合は、Googleアカウントの登録から始めてください。
では、Google Maps Platformに登録するところから始めてみましょう。下記のULRよりGoogle Maps Platformにアクセスしてください。
Google Maps Platform https://mapsplatform.google.com/intl/ja/
次に「使ってみる」をクリックし、「アカウント設定を完了」からアカウントの設定を行います。ここで、お支払い情報を入力する必要があるため、クレジットカードの情報を事前に用意しておいてください。ただし、利用開始したからといってすぐに支払いが発生するわけではなく、1 か月あたりの無料利用枠として$200が与えられているため、この金額を超えない限り無料で利用できます。今回使用するGeolocation APIは1000件あたり$5なので、40,000件までは無料となります(2024年5月5日現在)。料金については、下記のURLを参照してください。
登録画面を進めていくと、「自分のAPIキー」が提供されるので、これをテキストなどで保存しておいてください。また、「このプロジェクトですべてのGoogle Maps APIを有効にします」に必ずチェックしてください。さらに、「Googleマップの1か月のクレジット($200)を超えそうなときに通知を受け取る」にもチェックをしておくと安心です。
Figure 2.1: Google Maps Platform トップ画面
Figure 2.2: アカウントの登録1
Figure 2.3: アカウントの登録2
Figure 2.4: APIキー
Google Maps Platformへの登録が完了したら、まずはプロジェクトを作ってみましょう。デフォルトでMy Maps Projectという名前のプロジェクトが作成されますので、新しく作る必要がない人は、こちらのプロジェクトを使ってもらっても構いません。左上のプロジェクトを選択から、「新しいプロジェクト」を選択してください。プロジェクト名は「Geocodeing」として作成してください。次にAPIを有効にしますが、「このプロジェクトですべてのGoogle Maps APIを有効にします」にチェックを入れていれば、すでに有効化は完了しています。もし有効化が出来ていなければ、概要欄からAPIを有効化してください。
Pythonを用いてGeocodingを行っていきます。ここでは、Google Colaboratoryを用いた演習を行います。Google Colaboratoryとは、Googleが提供しているブラウザからPythonが実行できるサービスです。Googleのアカウントさえあれば、簡単にどこからでもPythonを実行できます。さらにGoogleドライブの共有機能を使えば、簡単に他ユーザーと共有することも可能です。
Figure 3.1: Google Colaboratoryのトップ画面
Figure 3.2: 新しいノートブック
今回は、港区にある大学の住所情報をもとに緯度経度を付与していきます。まず、Google Maps APIのモジュールであるgooglemapsをインストールし、呼び出します。
#pip install googlemaps
#import pandas as pd
#import googlemaps
次に、演習用データである「大学住所.csv」をファイルに追加します。追加する方法は、左側のファイルマークをクリックし、開かれたサイドバーにドラッグ&ドロップするだけで簡単に追加できます。データが追加出来たら、pythonに読み込みます。読み込めたら、変数名をアルファベットに変えておきます。
#df = pd.read_csv("大学住所.csv")
#df
#df = pd.read_csv("大学住所.csv")
#df = df.rename(columns = {"住所": "address","大学名": "university_name" })
#df.head()
Figure 3.3: データの追加
ここまで出来れば、あとは先ほど取得した自分のAPIキーを入力し、ループ関数ですべての住所情報に緯度経度を付与していきます。
#MAPS_API_KEY = '自分のAPI_KEYを入力する'
#def geocode(address):
#try:
#gmaps = googlemaps.Client(key=MAPS_API_KEY)
#result = gmaps.geocode(address)
#lat = result[0]['geometry']['location']['lat']
#lng = result[0]['geometry']['location']['lng']
#return lat, lng
#except:
#print("error")
#return None, None
問題なく緯度経度が付与されていれば、これをエクセルでエクスポートして終わりです。
#df.to_excel("大学住所_xy.xlsx", index=None)