2014년 1월 17일 금요일

posted by swchoi06 2013/08/05 15:23
이번에 날씨를 이용한 앱을 좀 활용해보려고, 날씨 관련 API를 찾아보는 중이다.
좀만 구글링을 해보면, Yahoo API, Google API, 기상청 API 등등이 나오는데 도통쓰기가 불편하다.
1. Google 날씨 API
공식적으로 2012년 9월에 소리 소문 없이 서비스가 중단 되었다. 덕분에 많은 날씨관련 앱들이 덩달아 중단되었고, Goole 날씨 API의 대안으로 Yahoo API가 많이 사용된다.

2. Yahoo API
조금 어렵게 느껴질 수 있다. 일단 woeid라는 각 지역마다 자체적으로 identifier를 부여하는데, 거지같다. 그외에 YQL이라고해서(sql문을 날리는 것과 비스무레하다) 제공하고 있지만 썩 마음에 들지는 않는다. 현재 내 위치의 날씨를 보여주는 기능을 구현했는데, 위도/경도를 기반으로 woeid를 가져온 뒤에, woeid로 날씨를 가져와야 한다. 사용법은 다음과 같다.


// 위도와 경도로 woeid를 가져오는 url. 35와 126이 각각 위도와 경도
http://query.yahooapis.com/v1/public/yql?q=select woeid from geo.placefinder where text='35,126' and gflags='R'&format=json
// woeid로 날씨 정보를 가져오는 url. %d부분에 woeid 값을 넣어주면 된다.
http://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid=%d&u=c&format=json
그런데 여기서 치명적인 단점은, 위도와 경도로 woeid를 역으로 구해내 날씨를 가져올 경우 그 지역의 이름 정보를 제대로 가져오지 못한다. 날씨정보를 담은 json를 잘 보면 'city'라는 부분이 있는데 여기에 있는 값을 출력시켜보았더니(사용자가 현재 무슨 도시에 있는 지 보여주기), 경우에 따라서 '서울', '마포구', '00동', 심지어는 '00호텔'이라고 리턴된다. 아무래도 위와 같이 사용하는걸 의도하고 만든 API는 아닌 것 같다. 사용자화가 잘되있는 API라서(YQL), woeid만 잘 정리해서 사용하면 나쁘지 않다.

3. Open Weather API
그냥 Yahoo API를 쓸까하던 중에 git open project들을 살펴보다 우연히 찾게되었다. http://openweathermap.org/API 에서 도큐먼트를 제공하는데 상당히 쉽다! 그리고 내가 원하던 기능(현재 위치의 날씨)를 구현하는데 가장 적합해보인다. 
http://api.openweathermap.org/data/2.5/forecast?lat=35&lon=125
와 같이 접근하면 바로 그 위치의 날씨 정보를 json으로 넘겨준다. 그 외에도 도시이름으로 날씨를 검색할 수 있고, 7일 가량의 일기예보를 제공한다. 좀 더 살펴봐야 겠지만, 가벼운 앱을 만드는데는 괜찮을 것 같다.
4. MSN Weather API
MSN에서 어떤식으로 제공하는 API인지 잘모르겠다. url형태로만 인터넷에 돌아다니는, 역시나 간편하다
http://weather.service.msn.com/data.aspx?weadegreetype=C&culture=ko-KR&weasearchstr=서울
culture 변수로 언어도 선택가능하고, 도시 이름으로 날씨를 리턴시켜준다. 그런데 재미난 점은 '서울' 대신에 '마포구', '상암동', '관악구'와 같은 지역명을 보내줘도 알아서 서울의 날씨를 보여준다는 점이다. 상황에 따라서는 매우 편한 서비스가 될 듯하다.
5. Wunderground.com API
Wundergroud.com라는 홈페이지에서 제공하는 API인데, 이런저런 기능들을 제공하는 것 같다. 그런데 사용하려면 회원가입이 필요하고, 무료회원으로 사용하는데는 제한이 있다(하루에 500개, 1분에 10개)

보통 오픈 api를 찾아볼때 제일 유명한 1-2개만 보고 썼었는데, 생각보다 api들 간에 미세한 차이가 많고 내가 원하는 서비스에 따라 나한테 적합한 api가 있다는 걸 느꼈다(yahoo api는 좋지만 위치정보와 함께사용하는건 별로인것 같다). 이것저것 살펴보고 알아서들 좋은 api를 사용하면 될 듯 하다.

댓글 1개:

  1. 글을 스크랩 하셨네요~ 티스토리에 따로 스크랩 기능이 없다고는 하지만 제 글을 다른 블로그에서 보니 기분이 좀 그렇습니다. 링크만 남겨주시거나, 보관용으로 쓰시려면 비공개 설정 부탁드립니다^^

    답글삭제