날씨 공공 데이터 Open API 연동

참새는짹짹·2023년 11월 25일
1

내가 테커에서 처음으로 참여하게 된 프로젝트는 Fashion Cloud🌦️, 날씨와 위치 기반 데일리룩 공유 서비스이다.

타인의 코드를 보고 이해하는 것도 상당히 어려웠고, 그 코드 형식에 맞추어 태스크를 진행하는 것도 꽤 힘들었던 기억이 있다. 그 중에서도 가장 오래 걸린 태스크는 기상청 날씨 데이터를 받아와 그에 맞는 날씨 아이콘을 표시해 주는 기능 구현이었다.


기상청의 날씨 공공 데이터 Open API를 사용해 실시간 데이터를 받아오고 그에 따른 response 값에 따라 다른 아이콘을 출력해 줘야 했는데, 관련 문서화 자료의 업데이트가 늦어서 response 값을 파악하는 것부터 꽤 오랜 시간이 걸렸다.

결과부터 말하자면, 받아오는 데이터의 값은 다음과 같다.

  • 하늘 상태(SKY) 코드: "CLEAR", "SUNNY", "OVERCAST", "CLOUDY"
  • 강수 형태(PTY) 코드: "CLEAR", "RAINY", "RAIN_SNOW", "RAINDROP", "RAINDROP_FLUFFY", "SNOWY", "FLUFFY"


날씨 공공 데이터 Open API에서 조회할 수 있는 정보는
동네 예보 구역에 대한 대표 AWS 관측값을 알려주는 초단기실황, 예보 시점으로부터 6시간까지의 예보를 알려주는 초단기예보, 그리고 단기예보예보 버전 정보가 있는데
우리는 초단기실황으로부터 강수 형태 데이터를, 초단기예보로부터 하늘 상태 데이터를 받아오기로 했다.

그리고 다음과 같이 맑음, 구름, 비, 눈 4가지의 형태로 필터링 기준을 세웠다.

  • ☀️: 하늘 상태CLEAR or SUNNY 이고 강수 형태CLEAR 인 경우
  • ☁️: 하늘 상태OVERCAST or CLOUDY 이고 강수 형태CLEAR 인 경우
  • 🌧️: 하늘 상태와는 상관 없이 강수 형태RAINY or RAIN_SNOW or RAINDROP or RAINDROP_FLUFFY 인 경우
  • ❄️: 하늘 상태와는 상관 없이 강수 형태SNOWY or RAIN_SNOW or RAINDROP_FLUFFY or FLUFFY 인 경우

강수 형태 코드에서 현재 강수 형태의 실황이 명확히 구분되어 있지 않았기 때문에 RAIN_SNOW와 같이 모호한 response의 경우 비와 눈 모두에 해당되도록 설정했다.


그렇게 구현된 화면은 다음과 같다.

0개의 댓글