Skip to content
Museop Kim edited this page Mar 31, 2020 · 12 revisions

필요한 자료

공공정보 API 서비스 중에 다음 두 가지 서비스에 가입하고 개발자용 서비스키를 발급 받아야 한다.

  1. 한국환경공단_측정소정보 조회 서비스

  2. 한국환경공단_대기오염정보 조회 서비스

  • sample request
http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=종로구&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=발급받은키입력&ver=1.3&_returnType=json
  1. 입력한 위도 경도에서 가장 가까운 측정소 반환

  2. 최근 24시간 대기 오염 이미지(위성사진 정보)

  3. 예보 문구

  4. 최근 24시간 대기 오염 수치

  5. 시간대별 대기 오염 수치

필요정보 request param response
① 입력한 위도 경도에서 가장 가까운 측정소 반환
GET air.dust08.com/location?latitude=36.5&longitude=138
위도, 경도 측정소 이름
② 대기질 예보 정보를 활용해서 PM10 예보 이미지들을 표시한다.
GET air.dust08.com/forecase/images
최근 24시간 대기 오염 이미지(위성사진 정보)
③ API에서 받은 전반적인 예보 문구를 표시한다.
GET air.dust08.com/forecase
예보 문구
④ API에서 받은 지역별 등급을 표시한다. (시도별 )
GET air.dust08.com/dust-status/
최근 24시간 대기 오염 수치,
전국 등급
⑤ 현재 시간을 기준으로 가장 최근에 측정된 값 - 등급에 따라서 상태 정보를 표시한다. (특정 측정소의)
GET air.dust08.com/dust-status?location={측정소}
측정소 측정소의 등급정보(pm10Grade), 측정시간, 대기오염 수치

① 입력한 위도 경도에서 가장 가까운 측정소 반환

  • Request param : 위도, 경도
  • Response : 측정소 이름
GET air.dust08.com/stations?latitude=36.5&longitude=138
필요 정보
stationName 측정소 명 30 1 창전동 측정소 이름
성공 : { "stationName" : "강남구" }
실패 : status 400 Bad Request
			{ "valid" : "false" , "errorMessage" : "잘못된 요청입니다." }
OPEN API
필요 작업

입력받은 위도, 경도 정보를 TM_X, TM_Y 좌표 정보로 변환하여 OPEN API 요청

sample

② 대기질 예보 정보를 활용해서 PM10 예보 이미지들을 표시한다.

  • Request param :
  • Response : 최근 24시간 대기 오염 이미지(위성사진 정보)
GET air.dust08.com/forecase/images
필요 정보
imageUrl1 첨부파일명 600 30 1 1 http://www.airkorea.or.kr/file/viewImage/xxxx 시간대별 예측모델 결과사진 (6:00, 12:00, 18:00, 24:00 KST) 측정소 이름
성공 : { "imageUrl1": "http://www.airkorea.or.kr/file/viewImage/?atch_id=138717",
            "imageUrl2": "http://www.airkorea.or.kr/file/viewImage/?atch_id=138718",
            "imageUrl3": "http://www.airkorea.or.kr/file/viewImage/?atch_id=138719"
}
실패 : status 400 Bad Request
			{ "valid" : "false" , "errorMessage" : "잘못된 요청입니다." }
OPEN API
필요 작업
  • "informCode": "PM10" → 아니 코드만 이러고 전체 이미지 리스트는 똑같음

  • "PM10"에 해당하는 데이터는 "imageUrl1", "imageUrl2", "imageUrl3" 이것만 넘기기로

  • 시간대별 예보 사진은 ... 고민해보도록 (일단은 3개만 넘긴다.)

  • imageUrl 만 파싱해서 전달

sample
GET /openapi/services/rest/ArpltnInforInqireSvc/getMinuDustFrcstDspth?pageNo=1&numOfRows=10&searchDate=2020-03-29&ServiceKey=서비스키&ver=1.1&_returnType=json HTTP/1.1
Host: openapi.airkorea.or.kr
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: JSESSIONID=p6UQq5k+YNjCC0qAr3XJB0IV; WMONID=NpW3nF1VI79
Connection: close

image-20200331135649638

③ API에서 받은 전반적인 예보 문구를 표시한다.

  • Request param :
  • Response : 예보 문구
GET air.dust08.com/forecase/informoverall
필요 정보
informOverall 예보개황 500 1 ○[미세먼지] 수도권·강원영서 … 예보개황
성공 : { "informOverall" : "○ [미세먼지] 전 권역이 '좋음'∼'보통'으로 예상됨." }
실패 : status 400 Bad Request
			{ "valid" : "false" , "errorMessage" : "잘못된 요청입니다." }
OPEN API
필요 작업
  • "informCode": "PM10" 에 해당하는 informOverall 값만 파싱하여 전달

  • 요청 시간에 따라 근접한 발표 dataTime 을 골라서 보내야 할까? informDate

  • "dataTime": "2020-03-31 11시 발표",

    ​ "f_data_time": "2020033111",

    ​ "f_data_time1": "20200331",

    ​ "f_data_time2": "20200401",

    ​ "f_data_time3": "20200402",

    ​ "f_inform_data": "20200401"

sample

④ API에서 받은 지역별 등급을 표시한다. (시도별 )

  • Request param :
  • Response : 지역별 등급
GET air.dust08.com/forecase/grade
필요 정보
informGrade 예보등급 100 1 서울 : 나쁨,제주 : 나쁨,전남 : 나쁨 … 예보등급
성공 : { "informGrade": "서울 : 보통,제주 : 보통,전남 : 보통,전북 : 보통,광주 : 보통,경남 : 보통,경북 : 보통,울산 : 보통,대구 : 보통,부산 : 보통,충남 : 보통,충북 : 보통,세종 : 보통,대전 : 보통,영동 : 보통,영서 : 보통,경기남부 : 보통,경기북부 : 보통,인천 : 보통" }
실패 : status 400 Bad Request
			{ "valid" : "false" , "errorMessage" : "잘못된 요청입니다." }
OPEN API
필요 작업
  • "informCode": "PM10" 에 해당하는 informGrade 값만 파싱하여 전달

  • 요청 시간에 따라 근접한 발표 dataTime 을 골라서 보내야 할까?

  • "dataTime": "2020-03-31 11시 발표",

    ​ "f_data_time": "2020033111",

    ​ "f_data_time1": "20200331",

    ​ "f_data_time2": "20200401",

    ​ "f_data_time3": "20200402",

    ​ "f_inform_data": "20200401"

sample

⑤ 현재 시간을 기준으로 가장 최근에 측정된 값 - 등급에 따라서 상태 정보를 표시한다. (특정 측정소의)

  • Request param :
  • Response : 측정소의 등급정보(pm10Grade), 측정시간, 대기오염 수치
GET air.dust08.com/stations/dust-status?stationName={측정소}
필요 정보
pm10Value 미세먼지(PM10) 농도 10 1 73 미세먼지(PM10) 농도 (단위 : ㎍/㎥)
pm10Grade 미세먼지(PM10) 24시간 등급 10 1 2 미세먼지(PM10) 24시간 등급자료
dataTime 측정일 20 1 2016-04-20 14:00 오염도측정 연-월-일 시간: 분
성공 : { "pm10Value": "68", "pm10Grade1h": "2", "dataTime": "2020-03-31 09:00" }
실패 : status 400 Bad Request
			{ "valid" : "false" , "errorMessage" : "잘못된 요청입니다." }
OPEN API
필요 작업
  • stationName 에 전달받은 location
  • dataTerm : daily (하루치)
  • 응답 list 중 요청을 받은 시간을 기준으로 가장 최근 시간에 가까운 "dataTime": "2020-03-31 09:00" 을 기준으로 추출하면 될 듯
http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=종로구&dataTerm=DAILY&pageNo=1&numOfRows=1&ServiceKey='서비스키'&ver=1.3
&_returnType=json

Mockup API

https://documenter.getpostman.com/view/10776717/SzYXYKpp?version=latest

Mockup Server

https://a339a000-63a2-46f5-83eb-bdb0e92712a0.mock.pstmn.io

Clone this wiki locally