PythonとGoogle Geocoding APIで場所の緯度経度(地理座標)を取得する方法
特定の場所の地理座標、つまり経度(longitude)と緯度(latitude)を取得したい場合、Google Mapsが提供する「Geocoding API」を利用するのが便利です。この記事では、Pythonを使ってGeocoding APIを呼び出し、地名から座標情報を取得する方法を解説します。
事前に必要なもの
場所の座標を取得するには、まずGoogleのGeocoding APIキーが必要です。以下の公式ページからAPIキーを発行できます。
https://developers.google.com/maps/documentation/geocoding/get-api-key
APIキーに加えて、Python側では以下の2つの標準的・一般的なライブラリを使用します。
- requests:HTTPリクエストを送信し、APIから座標データを取得する
- json:APIから返されるJSON形式のレスポンスを扱う
実装コード
以下は、ユーザーが入力した地名の緯度経度を取得するサンプルプログラムです。
# 必要なライブラリをインポート
import requests
import json
# 地名を入力してもらう
place = input("Please enter place name: ")
# 発行したGoogle MapsのAPIキーを変数に格納
apiKey = 'YOUR_API_KEY'
# Google Geocoding APIのURLを変数に保存
url = 'https://maps.googleapis.com/maps/api/geocode/json?'
# requestsモジュールのgetメソッドを呼び出し、レスポンスオブジェクトを取得
r = requests.get(url + 'address=' + place + '&key=' + apiKey)
# レスポンスオブジェクトからJSON形式の結果を取得
res = r.json()
# 結果を出力
print(res)実行結果
たとえば「Dehradun(デヘラードゥーン)」という地名を入力して実行すると、以下のようなJSON形式の結果が返されます。
Please enter place name: Dehradun
{'results': [{'address_components': [{'long_name': 'Dehradun', 'short_name': 'Dehradun', 'types': ['locality', 'political']}, {'long_name': 'Dehradun', 'short_name': 'Dehradun', 'types': ['administrative_area_level_2', 'political']}, {'long_name': 'Uttarakhand', 'short_name': 'UK', 'types': ['administrative_area_level_1', 'political']}, {'long_name': 'India', 'short_name': 'IN', 'types': ['country', 'political']}], 'formatted_address': 'Dehradun, Uttarakhand, India', 'geometry': {'bounds': {'northeast': {'lat': 30.4041936, 'lng': 78.1089305}, 'southwest': {'lat': 30.2466633, 'lng': 77.92533879999999}}, 'location': {'lat': 30.3164945, 'lng': 78.03219179999999}, 'location_type': 'APPROXIMATE', 'viewport': {'northeast': {'lat': 30.4041936, 'lng': 78.1089305}, 'southwest': {'lat': 30.2466633, 'lng': 77.92533879999999}}}, 'place_id': 'ChIJr4jIVsMpCTkRmYdRMsBiNUw', 'types': ['locality', 'political']}], 'status': 'OK'}結果の見方のポイント
返されたJSONの中で特に重要なのは、geometry内のlocationフィールドです。ここに目的の場所の緯度(lat)と経度(lng)が格納されています。上記の例では、デヘラードゥーンの中心座標として lat: 30.3164945 / lng: 78.0321917 が取得できています。
また、statusが'OK'であればリクエストが正常に処理されたことを意味します。地名が見つからない場合は'ZERO_RESULTS'、APIキーに問題がある場合は'REQUEST_DENIED'などが返されるため、エラー処理を実装する際はこのステータス値をチェックするとよいでしょう。
-
PythonのNews APIでトップニュースを取得する方法【サンプルコード付き】
News APIは、世界中のニュースサイトから記事を検索・取得できる非常に有名なAPIです。このAPIを利用すれば、任意のニュースサイトから最新のトップニュースの見出しを簡単に取得できます。 ただし、News APIを使うにはAPIキーが必要です。APIキーはNews API公式サイトで無料登録すると発行できますので、事前に取得しておきましょう。 サンプルコード:BBCのトップニュースを取得する 以下は、Pythonのrequestsライブラリを使って、BBC Newsのトップニュースの見出しを番号付きで表示するサンプルコードです。 import requests def top_new
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c