Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để lấy kinh độ và vĩ độ của một thành phố bằng Python?


Để nhận kinh độ và vĩ độ của thành phố, chúng tôi sẽ sử dụng geopy mô-đun. geopy sử dụng bộ mã hóa địa lý của bên thứ ba và các nguồn dữ liệu khác để định vị tọa độ của địa chỉ, thành phố, quốc gia, v.v.

Trước hết, hãy đảm bảo geopy mô-đun đã được cài đặt -

pip install geopy

Trong ví dụ sau, chúng tôi sẽ sử dụng Nominatim bộ mã hóa địa lý để tìm kinh độ và vĩ độ của thành phố "Hyderabad".

Các bước -

  • Nhập Bộ mã hóa địa lý Nominatim từ geopy mô-đun.

  • Khởi tạo API Nominatim và sử dụng mã địa lý để lấy vị trí của chuỗi đầu vào.

  • Cuối cùng, lấy vĩ độ và kinh độ của vị trí theo location.latitude location.longitude .

Ví dụ 1

# Import the required library
from geopy.geocoders import Nominatim

# Initialize Nominatim API
geolocator = Nominatim(user_agent="MyApp")

location = geolocator.geocode("Hyderabad")

print("The latitude of the location is: ", location.latitude)
print("The longitude of the location is: ", location.longitude)

Đầu ra

Nó sẽ in đầu ra sau trên bảng điều khiển -

The latitude of the location is: 17.360589
The longitude of the location is: 78.4740613

Trong ví dụ này, hãy làm ngược lại với Ví dụ 1. Chúng ta sẽ bắt đầu bằng cách cung cấp một tập hợp các tọa độ và tìm thành phố, tiểu bang và quốc gia mà các tọa độ đó đại diện. Thay vì in đầu ra trên bảng điều khiển, chúng tôi sẽ tạo một cửa sổ tkinter với bốn nhãn để hiển thị đầu ra.

Các bước -

  • Khởi tạo API Nominatium.

  • Sử dụng geolocator.reverse () chức năng và cung cấp các tọa độ (vĩ độ và kinh độ) để lấy dữ liệu vị trí.

  • Nhận địa chỉ của vị trí bằng cách sử dụng location.raw ['address'] và duyệt dữ liệu để tìm thành phố, tiểu bang và quốc gia bằng cách sử dụng address.get () .

  • Tạo nhãn bên trong cửa sổ tkinter để hiển thị dữ liệu.

Ví dụ 2

from tkinter import *
from geopy.geocoders import Nominatim

# Create an instance of tkinter frame
win = Tk()

# Define geometry of the window
win.geometry("700x350")

# Initialize Nominatim API
geolocator = Nominatim(user_agent="MyApp")

# Latitude & Longitude input
coordinates = "17.3850 , 78.4867"

location = geolocator.reverse(coordinates)

address = location.raw['address']

# Traverse the data
city = address.get('city', '')
state = address.get('state', '')
country = address.get('country', '')

# Create a Label widget
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()

Đầu ra

Nó sẽ tạo ra kết quả sau -

Làm cách nào để lấy kinh độ và vĩ độ của một thành phố bằng Python?