일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #c언어
- API
- open weather map
- lirc
- 라즈베리파이
- mp3
- #프로젝트 오일러
- 배수 더하기
- Radio
- 피보나치
- 프로젝트 오일러
- #Project Euler
- PiFaceCAD
- #소수판별
- 대칭수
- project euler
- 최소공배수
- C언어
- palindrome
- 소인수 구하기
- Raspberry Pi
- Today
- Total
ㅇㅅㅇ
Openweathermap을 사용하여 7개 도시의 현재 날씨와 온도를 프린트하기 본문
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를 구현해서 자신만의 날씨검색 프로그램을 만드는 것도 괜찮아 보인다
'프로그래밍 > 라즈베리파이' 카테고리의 다른 글
Raspberry Pi GPIO 활용하기 (파이썬, Python) (0) | 2017.04.16 |
---|---|
Raspberry Pi GPIO 활용하기 (쉘 스크립트) (0) | 2017.04.11 |
Raspberry pi와 pi camera를 활용한 Time-lapse 비디오 만들기 (1) | 2017.04.09 |
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 2 (0) | 2017.04.02 |
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 1 (0) | 2017.04.01 |