초단기예보
- 기준 시각부터 6시간 이내의 기상상황을 1시간 간격으로 강수형태, 강수량, 하늘상태, 낙뢰, 기온, 습도, 풍향, 풍속 등 8개의 예보요소를 제공한다.
- 매시간 30분에 생성되고 10분마다 최신 정보로 업데이트 하며 45분에는 새로 생성한 API를 제공한다.
- 공공데이터 포털에서 제공하는 참고문서에는 매시간 45분에 업데이트 한다고 명시되어 있지만 2024년 4월 기준, 실제로는 매시간 40분에 새로 생성한 API를 제공하고 있습니다.

초단기실황
- 기준 시각의 강수량, 강수형태, 상대습도, 풍향, 풍속 등 6개의 기상실황을 제공한다.
- 매시간 30분에 생성되고 10분마다 최신 정보로 업데이트 하며 40분에는 새로 생성한 API를 제공한다.
- 공공데이터포털에서 제공하는 참고문서에는 매시간 40분에 업데이트 한다고 명시되어 있지만 2024년 4월 기준, 실제로는 매시간 50분에 새로 생성한 API를 제공하고 있습니다.

참고사항
기상청은 5km x 5km 격자로 기상 정보를 제공하며 서울시는 30개의 격자로 이루어져 있다.
- 결과 화면(30개의 5km x 5km 격자로 시각화한 서울시 (카카오맵))
// 카카오맵에 30개의 격자로 시각화한 서울시 js 코드
// 위도
const lat_line = [ 37.69173846, 37.64577895, 37.60262058, 37.55674696, 37.51063517, 37.46494092, 37.42198141, ];
// 경도
const lon_line = [ 126.7851093, 126.8432583, 126.9010823, 126.9599082, 127.0180783, 127.0766389, 127.1340031, 127.1921521, ];
const grid_count = 30;
let grid_bounds = [];
let grid_objects = new Array(grid_count);
// sw : 남서, ne : 북동
let sw, ne;
for (let lat_idx = 1; lat_idx < lat_line.length; lat_idx++) {
for (let lon_idx = 0; lon_idx < lon_line.length - 1; lon_idx++) {
// 격자가 서울 밖이면 continue
if (lat_idx == 1 && lon_idx != 4 && lon_idx != 5)
continue;
else if (lat_idx == 2 && lon_idx != 2 && lon_idx != 3
&& lon_idx != 4 && lon_idx != 5)
continue;
else if (lat_idx == 6 && lon_idx != 1 && lon_idx != 2
&& lon_idx != 4)
continue;
// 남서
sw = new kakao.maps.LatLng(lat_line[lat_idx - 1], lon_line[lon_idx]);
// 북동
ne = new kakao.maps.LatLng(lat_line[lat_idx], lon_line[lon_idx + 1]);
grid_bounds.push(new kakao.maps.LatLngBounds(sw, ne));
}
}
기상 예보 API가 특정 강수량에 대해 정확한 값을 제공하지 않아, 다음과 같이 임의로 반환 값을 수정했다.
- 강수량이 0, null인 경우 : ‘강수 없음’을 반환하던 것을 0.0으로 수정
- 강수량이 1.0mm 미만인 경우 : ‘1.0mm 미만’을 반환하던 것을 1.0으로 수정
- 강수량이 30.0mm 이상 50.0mm 미만인 경우 : ‘30.0~50.0mm’를 반환하던 것을 30.0으로 수정
- 강수량이 50.0mm 이상인 경우 : ‘50.0mm 이상’을 반환하던 것을 50.0으로 수정
40분, 50분의 기상 데이터 수집 방법을 다르게 적용하여 최신 기상 정보를 제공한다.
- 00 ~ 30 : 초단기예보
- 40 : 데이터베이스 + 초단기예보
- 50 : 초단기실황 + 초단기예보

