날씨앱을 만들고 있습니다.
페이지 정보
본문
안녕하세요
제주에서 앱 개발하는 리코리안입니다.
제주로 이주하고 나서 야외활동을 많이 하다보니 입맛에 맞는 날씨 앱이 없어서
플러터 공부를 하는데 동기부여 겸 해서 날씨 앱을 만들어 보고 있습니다.
기본 아이디어는 여러 날씨 api 를 가져와서 적절한 로직을 돌려서
날씨 값들 (온도, 기상 상태, 미세먼지 등등)을 잘 뽑아서 사용자에게 필요한 정보를 보여준다 입니다.
암튼... 아이디어는 그렇고. (어차피 날씨 앱이 거기서 거기..)
일단 여러 기상 api 가 있지만 한국에서는 기상청 만한게 없는거 같아서
기상청 정보를 가져오는데 아 기상청 정보 쓰기 어렵네요 -_-);
1. 현재 날씨
- 현재 날씨를 가져오려면 gps 좌표가 아닌 기상청에서 사요하는 xy 좌표계를 가지고 현재 날씨를 가져올 수 있습니다.
가져온 결과물은 숫자 범위가 아니라 그대로 프린트해서 쓸만한 텍스트 값이나오거나, ('흐리고 비' 같은..) 유추하기 힘든 json key 값에 담겨서 값이 나옵니다. (UUU, VVV 등...)
2. 예보
예보는 단기 예보와 중기 예보가 있는데
둘다 json 정리가 ... 괴랄합니다. 노가다를 좀 많이 해야 합니다.
중기 예보는 xy 좌표 대신에 지역명을 사용하고 있는데, '영동', '영서' 같은 지역명을 사용합니다.
내 위치가 어딘지 찾아서 이게 영동인지 영서인지 판단을 해야 합니다.
3. 대기질 - 현재
대기질 정보는 기상청이 아니라 에어코리아 에서 가져옵니다.
다른 곳이라 쓰는 법이 또 다릅니다.
여긴 gps 도 xy 좌표도 아닌 tm 좌표계라는걸 씁니다.
내 위치를 gps 로 가져와서 tm 좌표계로 변경해서 (보통 다음 / 공공api 에 있는 gps -> tm 좌표계 변환 api 를 사용)
tm 좌표계를 가지고 내 위치에서 가장 가까운 관측소를 가져온다음에
관측소 이름을 가지고 다시 현재 대기질을 가져올 수 있습니다.
4. 대기질 - 예보
대기질 예보는 단기 (오늘 ~ +3일까지)와 중기 (+3~+6일까지) 가져올 수 있는데
단기는 pm2.5, pm10, o3 에 대해서만, 중기는 그냥 공기질 값에 대해서 가져올 수 있습니다.
여기는 또 '영동/영서' 같은 지역명으로 가져오는데 추가로 '경기남부/경기북부'가 존재합니다 -_-);
경기도인경우 내가 경기남부인지 경기북부인지 체크를 또 해줘야 합니다. (수작업 개발해야...)
대충 여기까지 구현하는데 다른 것도 하면서 구현했더니 2주쯤 걸린거 같네요.
dart 도 아직 어색한데 사용하기 어려운 기상청 / 에어코리아 api 다루려니 시간이 오래걸렸네요 ㅠ
암튼 여기까지 값은 가져왔는데 이걸 어떻게 정리할지는 고민이네요 ㅎㅎ;
아이디어는 있으나 막상 값을 가져오니 잘 안맞네요. ㅎㅎ;;
괜찮은 날씨 앱이 의외로 적은 이유를 알겠더라구요. -_-);
(해외 api 는 정확도가 좀 문제가 있고, 국내는 쓰기가 어렵...)
동기부여를 위해 글 남겨봤습니다 :)
// 미세미세 같은 앱은 오전/오후/저녁 3타임으로 미세먼지 예보 값을 보여주던데...
이건 에어코리아에 없는 정보 같은데 어떻게 구현했는지 궁금하네요 ㅎㅎ
리코리안님의 댓글의 댓글
plaintext님의 댓글
재밌게 읽었어요 감사합니다
여담으로 오늘 모 기관 api 요청하고
일부 키가 안 맞길래 뭐지했는데
키 뒤에 공백이 있더라구요....ㅎㅎㅎ
특징이 핵심 결과인거보니
개발자가 뭔가 확인하려고 하다가
운영에 반영한듯 싶더라구요..
api 는 만드는 사람이 센스가 있어야
좋은거 같습니다 ㅠ
리코리안님의 댓글의 댓글
DDLL님의 댓글
손에 익지 않은 환경에서 구현단계까지 진행하셨다니 대단하십니다
리코리안님의 댓글의 댓글
돈내고 쓰는 openweathermap 같은건 정말 현재 gps 좌표 넘기면 잘 정리된 json 딱 내려와서 엄청 편한데 한국은 잘 안맞으니 어쩔 수 없네요 ㅠㅠ
breezymind님의 댓글