Python
 Computer >> コンピューター >  >> プログラミング >> Python

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'などが返されるため、エラー処理を実装する際はこのステータス値をチェックするとよいでしょう。

  1. PythonのNews APIでトップニュースを取得する方法【サンプルコード付き】

    News APIは、世界中のニュースサイトから記事を検索・取得できる非常に有名なAPIです。このAPIを利用すれば、任意のニュースサイトから最新のトップニュースの見出しを簡単に取得できます。 ただし、News APIを使うにはAPIキーが必要です。APIキーはNews API公式サイトで無料登録すると発行できますので、事前に取得しておきましょう。 サンプルコード:BBCのトップニュースを取得する 以下は、Pythonのrequestsライブラリを使って、BBC Newsのトップニュースの見出しを番号付きで表示するサンプルコードです。 import requests def top_new

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c