'기상정보 api'에 해당되는 글 1건

  1. 2014.11.06 [php] openweathermap.org의 API와 cUrl을 이용하여 기상정보 가져오기

[php] openweathermap.org의 API와 cUrl을 이용하여 기상정보 가져오기

2014. 11. 6. 15:47 from Dev/php

간단하게 기상정보를 표시해주어야 할 일이 있어서 검색을 해보았는데, yahoo나 기상청의 공개 api 등이 나오더군요.

기상청은 공개 API이긴 하지만 승인요청하고 며칠 기다려야 하고, 상업적 용도의 사이트에 이용이 가능한지도 애매하고, 주의사항에 있는 '서버 과부하시 이용이 제한될 수 있습니다'라는 문구를 보고는 솔직히 좀 불안하더군요. 군함도 486 컴퓨터로 돌리는 나란데.. 아무도 책임 안지는 공개 api의 서버는 어떠할지...

그래서 조금 더 찾아 보니 http://openweathermap.org/api 라는 공개 서비스가 있네요. 일단 key 발급 같은 것도 간단하고(email 등록하면 됨), 일정 용량 이상 넘어가지 않는다면 이용하는 데 문제는 없어 보입니다.


php의 cUrl을 이용해서 자료를 가져와 보겠습니다:

 
$w = curl_init('http://api.openweathermap.org/data/2.5/weather?q=Seoul');
$weather_options = array(
	CURLOPT_HEADER => false,
	CURLOPT_RETURNTRANSFER => true
	);
curl_setopt_array($w, $weather_options);
$a = curl_exec($w);
curl_close($w);

if (isset($a) && $a) {
	$weather = json_decode($a);
	
	$current_temp = $weather->main->temp - 273.15;
	$temp_min = $weather->main->temp_min - 273.15;
	$temp_max = $weather->main->temp_max - 273.15;
	$weather_main = $weather->weather[0]->main;
	$weather_icon = "http://openweathermap.org/img/w/{$weather->weather[0]->icon}.png";

	echo "
";
	echo "현재 기온 : " . $current_temp;
	echo "최저 기온 : " . $temp_min;
	echo "최고 기온 : " . $temp_max;
	echo "날씨 : " . $weather_main;
	echo "
"; } else { exit(0); }

json 타입과 xml 타입으로 받을 수 있고, 넘겨온 값을 처리할 때에는 하위 값이 object도 있고, array도 있으니 이용할 때 참고하시고요, 그리고 한참 헤맸던게, 온도가 화씨가 아니라 절대온도(K)입니다. 섭씨 온도로 변경하려면 273.15를 빼주어야 합니다.

그리고 해당 날씨의 아이콘도 같이 제공해줍니다. 18번째 라인이 아이콘을 가져오는 부분인데, 아이콘도 예뻤으면 좋았을텐데 하는 생각이 드는 군요. ^^

원래는 APPKEY를 같이 넘겨줘야 한다고 되어 있는데, 테스트 할 때에는 없이도 잘 수행이 됩니다. 그래도 정책이 APPKEY를 받도록 되어 있고, 발급도 간단하니 안정적으로 이용할 때에는 넣어주시면 될 것 같습니다.

위 코드는 테스트용이라.. 이용하시는 목적에 맞게 객체를 만드시든, 함수를 만드시든 해서 사용하세요. ^^

Posted by banasun :