Pythonで都市の緯度・経度を取得する方法|geopyライブラリの使い方を解説
都市の緯度と経度を取得したい場合、Pythonではgeopyモジュールが便利です。geopyは、サードパーティ製のジオコーダやさまざまなデータソースを利用して、住所・都市・国などの座標情報を特定できるライブラリです。
まず、geopyモジュールがインストールされていることを確認しましょう。未インストールの場合は、以下のコマンドでインストールできます。
pip install geopy
以下の例では、Nominatimというジオコーダを使用して、都市「ハイデラバード(Hyderabad)」の緯度と経度を取得します。
手順
geopyモジュールからNominatimジオコーダをインポートします。
Nominatim APIを初期化し、geocodeメソッドに入力文字列を渡して位置情報を取得します。
location.latitudeおよびlocation.longitudeで、その地点の緯度と経度をそれぞれ取得します。
例1:都市名から緯度・経度を取得する
# 必要なライブラリをインポート
from geopy.geocoders import Nominatim
# Nominatim APIを初期化
geolocator = Nominatim(user_agent="MyApp")
location = geolocator.geocode("Hyderabad")
print("この地点の緯度は:", location.latitude)
print("この地点の経度は:", location.longitude)
実行結果
コンソールには以下のように出力されます。
この地点の緯度は: 17.360589 この地点の経度は: 78.4740613
なお、Nominatimを利用する際はuser_agentの指定が必須です。これは利用規約によって求められている項目のため、アプリケーション名などを指定しておきましょう。
続いて、例1とは逆の処理を行う例を紹介します。今度は座標(緯度と経度)を先に与え、その座標が示す都市・州・国を特定します。結果はコンソールに出力する代わりに、ラベルを4つ配置したtkinterウィンドウに表示します。このように、座標から住所情報を得る処理は「逆ジオコーディング」と呼ばれます。
手順
Nominatim APIを初期化します。
geolocator.reverse()関数に座標(緯度と経度)を渡して、位置情報データを取得します。
location.raw['address']で住所情報を取得し、address.get()を使って都市・州・国の値を取り出します。
tkinterウィンドウ内にラベルを作成し、取得したデータを表示します。
例2:座標から都市・州・国を特定する(逆ジオコーディング)
from tkinter import *
from geopy.geocoders import Nominatim
# tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウのサイズを定義
win.geometry("700x350")
# Nominatim APIを初期化
geolocator = Nominatim(user_agent="MyApp")
# 緯度・経度の入力
coordinates = "17.3850 , 78.4867"
location = geolocator.reverse(coordinates)
address = location.raw['address']
# データをたどって必要な情報を取得
city = address.get('city', '')
state = address.get('state', '')
country = address.get('country', '')
# ラベルウィジェットを作成
label1=Label(text="指定された緯度・経度:" + coordinates, font=("Calibri", 24, "bold"))
label1.pack(pady=20)
label2=Label(text="都市:" + city, font=("Calibri", 24, "bold"))
label2.pack(pady=20)
label3=Label(text="州:" + state, font=("Calibri", 24, "bold"))
label3.pack(pady=20)
label4=Label(text="国:" + country, font=("Calibri", 24, "bold"))
label4.pack(pady=20)
win.mainloop()
実行結果
上記のコードを実行すると、以下のようなウィンドウが表示されます。

-
PythonとMatplotlibで点群の中心座標を取得・可視化する方法
一連のポイント(点群)の中心を求めるには、リスト内のすべての要素を合計し、その合計値をリストの要素数(長さ)で割ります。この計算結果が、対応する各軸における中心座標となります。これはいわゆる「平均値」であり、点群の重心を表します。実装の手順データポイントとして x 座標と y 座標の2つのリストを作成します。plot() メソッドを使って、x および y のデータポイントをプロットします。x と y の各リストから、sum() と len() を組み合わせて中心座標のタプルを算出します。算出した中心点をグラフ上にプロットします。annotate() メソッドを使い、中心点に「center」とい
-
PythonのTkinterでファイル選択ダイアログを使い、選択したディレクトリの場所を表示・保存する方法
ダイアログボックスは、さまざまな種類のアプリケーションでおなじみのUI要素であり、ユーザーとの対話が重要となるアプリケーション開発において非常に役立ちます。ダイアログボックスを利用すれば、ユーザーにファイルの選択を求め、その後、ファイルの読み込みや書き込みといった操作を実行できます。Pythonでは、filedialogモジュールを使用することで、こうしたダイアログボックスを簡単に作成できます。 サンプルコード 以下の例では、ローカルディレクトリからファイルを選択するようユーザーに促し、選択されたファイルの場所(パス)をラベルウィジェットで表示するアプリケーションを作成します。 #Import