ㅇㅅㅇ

Openweathermap을 사용하여 7개 도시의 현재 날씨와 온도를 프린트하기 본문

프로그래밍/라즈베리파이

Openweathermap을 사용하여 7개 도시의 현재 날씨와 온도를 프린트하기

Lugun 2017. 3. 23. 17:37

Opem Weather Map API를 사용하여 7개 도시의 현재 날씨와 온도를 프린트하는 스크립트를 작성해보자!(Python)



먼저 파이썬에서 open weather map에 접근하기 위한 api를 얻어보자. 일단 OpenWeatherMap 홈페이지에 접속한다.

그 다음엔 저 빨간 박스 안의 API를 클릭한다.




클릭해보면 open weather map api로 무었을 할 수 있는지 쭈욱 설명하고 그 아래쪽에  API documentation이라는 항목 첫번째에 API키를 어떻게 얻을 수 있는지 알려주는 항목이 보인다. 클릭해보자






위와 같이 가입하면 API키를 얻을 수 있다고 한다. 그러니 가입을 하자. 

가입을 하고 내 정보를 확인했더니 API 키가 생성되어 있었다.





이제 이 API를 어떻게 사용해야 되는지 알아봐야한다. 사실 홈페이지에서 지원해 주는 문서만 봐도 해결이 되지만 이 땐 생각이 짧아 이 사이트를 다 꺼버렸다.


그리고 나서 찾아낸 github 링크이다. https://github.com/csparpa/pyowm/blob/master/pyowm/docs/usage-examples.md 나는 이곳에서 사용법을 익히고 문제를 해결하였다.


이제 코딩을 해야하는데 , 그 전에 중요한게 하나 남았다. 파이썬에서 open weather map을 사용하기위해 pyowm이라는 라이브러리를 다운로드 받아야한다. 다운로드 받는 방법에 대해 알아보자.


1. 명령 프롬프트 열기(cmd)


2. Python 폴더(파이썬이 깔린곳)의 Scripts로 이동하기(경로 설정을 설치할 때 따로 안했다면 c드라이브에 위치함)


3. pip.exe로 pyowm 설치하기



위와같은 명령어를 입력하여 설치하면 된다. 


이제 준비가 완벽하게 끝났다. 어떻게 사용하는 지만 알아보면 된다.


https://github.com/csparpa/pyowm/blob/master/pyowm/docs/usage-examples.md


위에서 나온 링크와 같은 링크이다. 모든것이 나와있다. 한번 필요한 것들이 뭐가 있는지 알아보도록 하자.


먼저 API키를 import 해주는 법에 대해 나와있는 것을 볼 수 있다. 설명도 간단하다고 한다. 그 다음으로는 OWM을 만드는 법에 대해 설명해주고 있다.



좀 내리다 보니 이런 것도 나온다. 특정위치에 대해 날씨를 얻어오는 방법이라고 한다. 7개 도시의 날씨를 알기위해 필요해 보인다.





이게 하이라이트이다. 날씨정보를 조회할수 있다고 한다. 처음에 보고 생각보다 방대한 양의 정보를 알아낼 수 있다는 것이 놀라웠다.


이제 우리에게 필요한 것들을 다 알아보았다. 우리는 정해진 나라7개의 날씨와 온도를 알면된다. 즉 위에 사진의 빨간 박스 부분만 끌어오면 끝난다는 것이다. 


다음은 내가 작성한 코드와 실행 결과이다.



실행결과





코드분석


코드는 매우 간단하다. 먼저 pyowm을 import해주고 api키를 담고있는 owm을 만들었다. 그 뒤에 weather라는 함수를 하나 만들어서 나라이름을 인자로 주면 해당 나라의 날씨와 온도를 프린트할 수 있게 하였다. 함수 부분만 다시 설명해보겠다.


def weather(city):     // weather이란 함수의 인자를 city로 받음

obs = owm. weather_at_place(city)    //  인자로 들어온 city의 정보(날씨, 위치, 기타등등)를 obs에 담음

w = obs.get_weather()    //  w에 날씨정보를 담음

print(city," - ".w.get_status(), w.get_temperature(unit='celsius')['temp'],"℃")

// 문장을 출력함. 여기서 w.get_status()는 현재 도시의 날씨를, temperature는 온도를 나타내고 unit='celsisu'는 그냥 온도값은 화씨로 가져오기 때문에 섭씨로 변경하는 코드임. 또한 temperature는 딕셔너리 형태의 현재온도, 최고온도, 최저온도 등을 포함하기 때문에 그 중 현재 온도인 temp를 출력함

return 0;


끝.




p.s. open weather map 홈페이지의 API docunemtation을 한번 살펴보면 이 api를 통해서 정말 많을 것을 할 수 있다는 것을 알수 있다. 나라이름을 직접 입력 받아서 날씨를 출력해주는 건 물론이고 앞으로의 날씨또한 알아볼 수 있다.  gui를 구현해서 자신만의 날씨검색 프로그램을 만드는 것도 괜찮아 보인다












Comments