일기예보(Weather forecast)는 생활하는데 있어서 꽤 중요한 정보에 속합니다. 뉴스를 보면 언제나 알 수 있지만 취합을 하는 이유는 몇가지 정보를 연결 할 수 있어서 입니다.
예를 들면 미세먼지 와 외부 활동 스케줄 여부, 눈/비가 오면 추천 활동을 변경 것도 해보려고 생각 중입니다.
특정 위치에 일기예보를 알아보려면 첫째 Google map을 통한 특정 위치에 대한 좌표를 알아야 합니다. 둘째로는 전세계 날씨에 대한 정보로 https://openweathermap.org 사이트에 좌표를 입력해 결과를 받을 수 있는 API를 사용해야합니다.
Step 1. Google Map get current coordinate
Google Map에서 날씨를 알기 위한 위치를 선택하게 되면 URL에 아래와 같이 표시가 됩니다.
이 URL에서 위도(latitude)와 경도(longitude)를 추출 할 수 있습니다. 이 정보를 우선 저장하고 있어야 합니다.
lat = 21.3363571, lon = -158.0282134
Other 1. Check coordinate
추출한 좌표를 가지고 지도에서 입력 할 수 있으니 이렇게 원하는 위치를 찾을 수도 있습니다.
Step 2. Openweather API (Forecast site)
Site : https://openweathermap.org/
Step 3. Logon, Get API key
Other 2. Weather API Doc
https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}
API는 유료와 무료로 나눠지고 있습니다. 일단 현재 날씨나 3시간 이전 예보 같은 것은 내용은 무료로 사용가능합니다. 유료는 더 많은 정보와 예전 정보도 받을 수 있기 때문에 날씨에 대한 데이터 분석을 위해서는 유료도 사용해보는 것도 괜찮을 것 같습니다.
Code
import requests
key = '{Input Your Key}'
lat = 21.3363571
lon = -158.0282134
def get_current_weather(key, lon, lat):
url = f"https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={key}"
response = requests.get(url)
data = response.json()
return data
if "__main__" == __name__:
print(get_current_weather(key, lon, lat))
Output (Weather forecast)
{'coord':
{'lon': -158.0282, 'lat': 21.3364},
'weather':
[{'id': 300, 'main': 'Drizzle', 'description': 'light intensity drizzle',
'icon': '09d'}],
'standard': 'stations',
'main': {'temp': 301.51, 'feels_like': 304.38, 'temp_min': 297.01,
'temp_max': 303.1, 'pressure': 1017, 'humidity': 69},
'visibility': 10000,
'wind': {'speed': 5.66, 'deg': 50, 'gust': 12.35},
'clouds': {'all': 20},
'dt': 1719019088,
'sys': {'type': 1, 'id': 7868, 'country': 'US', 'sunrise': 1718985065,
'sunset': 1719033418},
'timezone': -36000,
'id': 5855070,
'name': '‘Ewa Gentry',
'cod': 200
}
일기 예보 정보를 받아보는 날씨, 온도, 체감기온, 습도, 기압 등의 정보를 받을 수 있습니다. 그런데 기압은 어디에 사용하는 것 인지 좀 궁금하네요.