Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 도시의 위도와 경도 좌표를 손쉽게 얻는 방법

도시의 위도와 경도를 확인하려면 Python의 geopy 모듈을 활용하면 됩니다. geopy는 다양한 서드파티 지오코더(geocoder)와 데이터 소스를 사용하여 주소, 도시, 국가 등의 좌표를 찾아주는 강력한 라이브러리입니다.

geopy 설치하기

먼저 geopy 모듈이 설치되어 있는지 확인하세요. 아직 설치하지 않았다면 아래 명령어로 간단히 설치할 수 있습니다.

pip install geopy

다음 예제에서는 Nominatim 지오코더를 사용하여 'Hyderabad(하이데라바드)'라는 도시의 위도와 경도를 조회해 보겠습니다.

처리 순서

  • geopy 모듈에서 Nominatim 지오코더를 임포트합니다.

  • Nominatim API를 초기화한 후, geocode 메서드에 입력 문자열을 전달하여 위치 정보를 가져옵니다.

  • location.latitudelocation.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

예제 2: 좌표로 도시·주·국가 찾기 (역지오코딩)

이번에는 예제 1과 반대로, 먼저 좌표(위도와 경도)를 입력한 뒤 해당 좌표가 나타내는 도시, 주(state), 국가를 찾아보겠습니다. 결과를 단순히 콘솔에 출력하는 대신, tkinter 윈도우에 네 개의 레이블(Label)을 만들어 화면에 표시해 보겠습니다.

처리 순서

  • Nominatim API를 초기화합니다.

  • geolocator.reverse() 함수에 좌표(위도와 경도)를 전달하여 위치 데이터를 가져옵니다.

  • location.raw['address']로 위치의 주소 정보를 얻은 뒤, address.get()을 사용하여 도시, 주, 국가 정보를 추출합니다.

  • tkinter 윈도우 안에 레이블을 생성하여 데이터를 화면에 표시합니다.

예제 코드

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', '')

# Label 위젯 생성
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): " + state, font=("Calibri", 24, "bold"))
label3.pack(pady=20)

label4=Label(text="국가: " + country, font=("Calibri", 24, "bold"))
label4.pack(pady=20)

win.mainloop()

실행 결과

위 코드를 실행하면 tkinter 윈도우에 입력된 좌표와 그에 해당하는 도시, 주, 국가 정보가 각각의 레이블로 표시됩니다.

Python으로 도시의 위도와 경도 좌표를 손쉽게 얻는 방법