https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084
기상청_단기예보 ((구)_동네예보) 조회서비스
초단기실황, 초단기예보, 단기((구)동네)예보, 예보버전 정보를 조회하는 서비스입니다. 초단기실황정보는 예보 구역에 대한 대표 AWS 관측값을, 초단기예보는 예보시점부터 6시간까지의 예보를,
www.data.go.kr
데이터명 : 기상청_단기예보 ((구)_동네예보) 조회서비스 상세설명
서비스유형 : REST
기상청41_단기예보 조회서비스_오픈API활용가이드_최종 (1).zip
1.73MB
* 예시코드 (최고기온, 최저기온, 하늘 상태, 풍속)
$timeNow = strToTime(date("Y-m-d H:i:s"));
$timeTarget = strToTime(date("Y-m-d 03:00:00"));
if($timeNow > $timeTarget) {
$baseDate = date("Ymd");
} else {
$baseDate = date("Ymd", strToTime(date("Y-m-d 02:00:00"), "-1 day"));
}
//인증키
$serviceKey = "";
$url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey={$serviceKey}&numOfRows=1000&pageNo=1&base_date={$baseDate}&base_time=0200&nx=73&ny=67&dataType=JSON";
$curl = curl_init();
curl_setopt_array($curl, array(
// CURLOPT_PORT => "80",
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: text/plain; charset=utf-8"
),
));
$response = curl_exec($curl);
// $err = curl_error($curl);
curl_close($curl);
$responseResult = json_decode($response);
$items = $responseResult->response->body->items->item;
$forecast = array();
for($i=0; $i < count($items); $i++) {
//기온(최저/최고)
if($items[$i]->category == "TMN" || $items[$i]->category == "TMX") {
$forecast[$items[$i]->fcstDate][$items[$i]->category] = $items[$i]->fcstValue;
}
//하늘 상태
if($items[$i]->category == "PTY" && $items[$i]->fcstTime == date("H00")) {
if($items[$i]->fcstValue == "0") {
if($items[$i-1]->fcstValue == "1") {
$forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-sun" style="font-size:x-large;" title="맑음"></i>';
} else if($items[$i-1]->fcstValue == "3") {
$forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud" style="font-size:x-large;" title="구름많음"></i>';
} else if($items[$i-1]->fcstValue == "4") {
$forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud-sun" style="font-size:x-large" title="흐림"></i>';
}
} else if(($items[$i]->fcstValue) == "1") {
$forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-umbrella" style="font-size:x-large" title="비"></i>';
} else if($items[$i]->fcstValue == "2") {
$forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-umbrella" style="font-size:x-large" title="비/눈"></i> / <i class="fa-solid fa-snowflake" style="font-size:x-large" title="비/눈"></i>';
} else if($items[$i]->fcstValue == "3") {
$forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-snowflake" style="font-size:x-large" title="눈"></i>';
} else if($items[$i]->fcstValue == "4") {
$forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud-showers-heavy" style="font-size:x-large" title="소나기"></i>';
}
}
//풍속
if($items[$i]->category == "WSD" && $items[$i]->fcstTime == date("H00")) {
$forecast[$items[$i]->fcstDate][$items[$i]->category] = $items[$i]->fcstValue;
}
}
$result = array(
"forecast" => $forecast
);
echo json_encode($result);
* 가져온 데이터
* Jquery (ajax)를 이용해 화면에 뿌리기
$.ajax({
type: "POST",
url: "",
data: $("#mainForm").serialize(),
dataType: "json",
success: function(result) {
//날씨
var html = '';
for(var date in result["forecast"]) {
year = date.substr(0, 4);
month = date.substr(4, 2);
day = date.substr(6, 2);
var fcstDate = year + '-' + month + '-' + day;
html += '<tr>';
html += '<td class="text-center">';
html += fcstDate;
html += '</td>';
html += '<td class="text-center">';
html += result["forecast"][date]["TMN"] + "/" + result["forecast"][date]["TMX"];
html += '</td>';
html += '<td class="text-center">';
html += result["forecast"][date]["WSD"] + "m/s";
html += '</td>';
html += '<td class="text-center">';
html += result["forecast"][date]["SKY"];
html += '</td>';
html += '</tr>';
}
$("#tblForecast tbody").append(html);
},
error: function (request, status, error) {
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
* 결과값