如何使用 Python 获取城市的经度和纬度?
tkinterpythongui-programming更新于 2025/2/14 21:32:17
要获取城市的经度和纬度,我们将使用 geopy 模块。 geopy 使用第三方地理编码器和其他数据源来定位地址、城市、国家等的坐标。
首先,确保安装了 geopy 模块 −
pip install geopy
在下面的示例中,我们将使用 Nominatim 地理编码器查找城市"海得拉巴"的经度和纬度。
步骤 −
从 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
在此示例中,我们执行与示例 1 相反的操作。我们将首先提供一组坐标,然后找到这些坐标所代表的城市、州和国家。我们不会在控制台上打印输出,而是创建一个带有四个标签的 tkinter 窗口来显示输出。
步骤 −
初始化 Nominatium 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="Given Latitude and Longitude: " + coordinates, font=("Calibri", 24, "bold"))
label1.pack(pady=20)
label2=Label(text="The city is: " + city, font=("Calibri", 24, "bold"))
label2.pack(pady=20)
label3=Label(text="The state is: " + state, font=("Calibri", 24, "bold"))
label3.pack(pady=20)
label4=Label(text="The country is: " + country, font=("Calibri", 24, "bold"))
label4.pack(pady=20)
win.mainloop()
输出
它将产生以下输出 -
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

