공공데이터 포털에서 찾은 미세먼지 오픈API이다.
아래는 포스트맨을 통해서 API들을 정리해보았다.
분석해서 써보자!
https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15073861
한국환경공단_에어코리아_대기오염정보
각 측정소별 대기오염정보를 조회하기 위한 서비스로 기간별, 시도별 대기오염 정보와 통합대기환경지수 나쁨 이상 측정소 내역, 대기질(미세먼지/오존) 예보 통보 내역 등을 조회할 수 있다.
www.data.go.kr
우선 대기오염정보 이다.
대기오염정보 데이터에는 5개가 있다.
1. 대기질예보통보조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 14,
"items": [
{
"actionKnack": null,
"informOverall": "○ [미세먼지] 전 권역이 '좋음'으로 예상됩니다.",
"informGrade": "서울 : 좋음,제주 : 좋음,전남 : 좋음,전북 : 좋음,광주 : 좋음,경남 : 좋음,경북 : 좋음,울산 : 좋음,대구 : 좋음,부산 : 좋음,충남 : 좋음,충북 : 좋음,세종 : 좋음,대전 : 좋음,영동 : 좋음,영서 : 좋음,경기남부 : 좋음,경기북부 : 좋음,인천 : 좋음",
"imageUrl3": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM10.1hsp.2024020709.png",
"imageUrl2": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM10.1hsp.2024020703.png",
"imageUrl1": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM10.1hsp.2024020621.png",
"informCode": "PM10",
"imageUrl4": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM2P5.1hsp.2024020621.png",
"imageUrl5": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM2P5.1hsp.2024020703.png",
"informCause": "○ [미세먼지] 원활한 대기 확산으로 대기질이 청정할 것으로 예상됩니다.",
"imageUrl6": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM2P5.1hsp.2024020709.png",
"imageUrl7": "https://www.airkorea.or.kr/file/proxyImage?fileName=2024/02/06/AQF.20240205.NIER_09_01.PM10.2days.ani.gif",
"imageUrl8": "https://www.airkorea.or.kr/file/proxyImage?fileName=",
"imageUrl9": "https://www.airkorea.or.kr/file/proxyImage?fileName=",
"informData": "2024-02-06",
"dataTime": "2024-02-06 17시 발표"
},
...,
...,
...,
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
2. 초미세먼지주간예보조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 1,
"items": [
{
"frcstFourDt": "2024-02-07",
"frcstThreeDt": "2024-02-06",
"frcstTwoCn": "서울 : 낮음, 인천 : 낮음, 경기북부 : 낮음, 경기남부 : 낮음, 강원영서 : 낮음, 강원영동 : 낮음, 대전 : 낮음, 세종 : 낮음, 충남 : 낮음, 충북 : 낮음, 광주 : 낮음, 전북 : 낮음, 전남 : 낮음, 부산 : 낮음, 대구 : 낮음, 울산 : 낮음, 경북 : 낮음, 경남 : 낮음, 제주 : 낮음, 신뢰도 : 높음",
"gwthcnd": "(2월4일~6일) 원활한 대기 확산과 강수의 영향으로 전 권역에서 초미세먼지 농도가 '낮음' 수준일 것으로 예상되며, (2월 7일) 대기 확산이 원활하여 전 권역에서 '낮음' 수준일 것으로 예상됩니다.",
"frcstTwoDt": "2024-02-05",
"frcstFourCn": "서울 : 낮음, 인천 : 낮음, 경기북부 : 낮음, 경기남부 : 낮음, 강원영서 : 낮음, 강원영동 : 낮음, 대전 : 낮음, 세종 : 낮음, 충남 : 낮음, 충북 : 낮음, 광주 : 낮음, 전북 : 낮음, 전남 : 낮음, 부산 : 낮음, 대구 : 낮음, 울산 : 낮음, 경북 : 낮음, 경남 : 낮음, 제주 : 낮음, 신뢰도 : 보통",
"frcstThreeCn": "서울 : 낮음, 인천 : 낮음, 경기북부 : 낮음, 경기남부 : 낮음, 강원영서 : 낮음, 강원영동 : 낮음, 대전 : 낮음, 세종 : 낮음, 충남 : 낮음, 충북 : 낮음, 광주 : 낮음, 전북 : 낮음, 전남 : 낮음, 부산 : 낮음, 대구 : 낮음, 울산 : 낮음, 경북 : 낮음, 경남 : 낮음, 제주 : 낮음, 신뢰도 : 높음",
"frcstOneDt": "2024-02-04",
"frcstOneCn": "서울 : 낮음, 인천 : 낮음, 경기북부 : 낮음, 경기남부 : 낮음, 강원영서 : 낮음, 강원영동 : 낮음, 대전 : 낮음, 세종 : 낮음, 충남 : 낮음, 충북 : 낮음, 광주 : 낮음, 전북 : 낮음, 전남 : 낮음, 부산 : 낮음, 대구 : 낮음, 울산 : 낮음, 경북 : 낮음, 경남 : 낮음, 제주 : 낮음, 신뢰도 : 높음",
"presnatnDt": "2024-02-01"
}
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
3. 측정소별 실시간 측정정보 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 23,
"items": [
{
"pm25Grade1h": "1",
"pm10Value24": "5",
"so2Value": "0.003",
"pm10Grade1h": "1",
"o3Grade": "2",
"pm10Value": "2",
"pm25Flag": null,
"khaiGrade": "2",
"pm25Value": "1",
"no2Flag": null,
"mangName": "도시대기",
"no2Value": "0.010",
"so2Grade": "1",
"coFlag": null,
"khaiValue": "53",
"coValue": "0.3",
"pm10Flag": null,
"no2Grade": "1",
"pm25Value24": "2",
"o3Flag": null,
"pm25Grade": "1",
"so2Flag": null,
"coGrade": "1",
"dataTime": "2024-02-05 15:00",
"pm10Grade": "1",
"o3Value": "0.034"
},
...,
...,
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
4. 통합대기환경지수 나쁨 이상 정소 목록조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 1,
"items": [
{
"addr": "전남 영광군 낙월면 영외리 산 118 안마도 측정소",
"stationName": "안마도"
}
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
5. 시도별 실시간 측정정보 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 654,
"items": [
{
"so2Grade": "1",
"coFlag": null,
"khaiValue": "-",
"so2Value": "0.002",
"coValue": "0.5",
"pm10Flag": "통신장애",
"o3Grade": "1",
"pm10Value": "-",
"khaiGrade": null,
"sidoName": "경기",
"no2Flag": null,
"no2Grade": "1",
"o3Flag": null,
"so2Flag": null,
"dataTime": "2024-02-07 10:00",
"coGrade": "1",
"no2Value": "0.013",
"stationName": "대부동",
"pm10Grade": null,
"o3Value": "0.030"
},
{
"so2Grade": "1",
"coFlag": null,
"khaiValue": "79",
"so2Value": "0.002",
"coValue": "0.5",
"pm10Flag": null,
"o3Grade": "1",
"pm10Value": "40",
"khaiGrade": "2",
"sidoName": "경기",
"no2Flag": null,
"no2Grade": "2",
"o3Flag": null,
"so2Flag": null,
"dataTime": "2024-02-07 10:00",
"coGrade": "1",
"no2Value": "0.032",
"stationName": "호수동",
"pm10Grade": "2",
"o3Value": "0.012"
},
...,
...,
],
"pageNo": 1,
"numOfRows": 9999
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15073877
한국환경공단_에어코리아_측정소정보
대기질 측정소 정보를 조회하기 위한 서비스로 TM 좌표기반의 가까운 측정소 및 측정소 목록과 측정소의 정보를 조회할 수 있다. ※ 운영계정으로 사용하고자 할 경우 "한국환경공단 에어코리아
www.data.go.kr
그리고 또 활용할 수 있는 API로 측정소정보 이다.
측정소정보는 3개가 있다.
1. 측정소 목록 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 654,
"items": [
{
"dmX": "35.221729",
"stationCode": "238146",
"item": "SO2, CO, O3, NO2, PM10, PM2.5",
"mangName": "도시대기",
"year": "2009",
"addr": "경남 창원시 성산구 창이대로 706번길 16-23 (사파민원센터)",
"stationName": "사파동",
"dmY": "128.69825"
},
{
"dmX": "35.11497",
"stationCode": "238147",
"item": "SO2, CO, O3, NO2, PM10, PM2.5",
"mangName": "도로변대기",
"year": "2022",
"addr": "경남 창원시 마산합포구 진동면 삼진의거대로 621 진동시외버스정류장 앞",
"stationName": "삼진로",
"dmY": "128.48581"
},
{
"dmX": "35.154972",
"stationCode": "238151",
"item": "SO2, CO, O3, NO2, PM10, PM2.5",
"mangName": "도시대기",
"year": "1994",
"addr": "경남 창원시 진해구 경화로16번길 31 (병암동주민센터)",
"stationName": "경화동",
"dmY": "128.689578"
},
...,
...,
],
"pageNo": 1,
"numOfRows": 9999
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
2. 근접측정소 목록 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 3,
"items": [
{
"stationCode": "131593",
"tm": 4.1,
"addr": "경기도 여주시 가남읍 태평중앙1길 20 가남읍행정복지센터 옥상",
"stationName": "가남읍"
},
{
"stationCode": "131444",
"tm": 8.2,
"addr": "경기도 이천시 부발읍 무촌로 117 부발보건지소 옥상",
"stationName": "부발읍"
},
{
"stationCode": "131441",
"tm": 9.3,
"addr": "경기 이천시 설성면 신필리 산 88-5(전파연구소 입구)",
"stationName": "설성면"
}
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
3. TM 기준좌표 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 1,
"items": [
{
"sggName": "종로구",
"umdName": "혜화동",
"tmX": "200089.126044",
"tmY": "453946.42329",
"sidoName": "서울특별시"
}
],
"pageNo": 1,
"numOfRows": 10
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15073855
한국환경공단_에어코리아_대기오염통계 현황
대기오염 통계 정보를 조회하기 위한 서비스로 각 측정소별 농도 정보와 기간별 통계수치 정보를 조회할 수 있다. ※ 운영계정으로 사용하고자 할 경우 "한국환경공단 에어코리아 OpenAPI 기술문
www.data.go.kr
마지막으로 대기오염통계 현황 이다.
대기오염통계 현황 에는 총 4개가 있는데 1개가 작동을 안하는거 같다...
1. 측정소별 실시간 일평균 정보 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 1238,
"items": [
{
"msurDt": "2024-02-04",
"so2Value": ".003",
"coValue": ".4",
"msrstnName": "송천동",
"pm10Value": "15",
"no2Value": ".01",
"o3Value": ".023",
"pm25Value": "5"
},
{
"msurDt": "2024-02-04",
"so2Value": ".001",
"coValue": ".4",
"msrstnName": "이곡동",
"pm10Value": "22",
"no2Value": ".012",
"o3Value": ".024",
"pm25Value": "8"
},
{
"msurDt": "2024-02-04",
"so2Value": ".003",
"coValue": ".5",
"msrstnName": "중앙동(경기)",
"pm10Value": "20",
"no2Value": ".011",
"o3Value": ".019",
"pm25Value": "18"
},
{
"msurDt": "2024-02-04",
"so2Value": ".003",
"coValue": ".3",
"msrstnName": "모현동",
"pm10Value": "20",
"no2Value": ".007",
"o3Value": ".026",
"pm25Value": "14"
},
],
"pageNo": 1,
"numOfRows": 9999
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
2. 측정소별 실시간 월평균 정보 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 1861,
"items": [
{
"msurMm": "2023-11",
"so2Value": ".004",
"coValue": ".4",
"msrstnName": "봉담읍",
"pm10Value": "33",
"no2Value": ".02",
"o3Value": ".021",
"pm25Value": "21"
},
{
"msurMm": "2023-11",
"so2Value": ".004",
"coValue": ".5",
"msrstnName": "모종동",
"pm10Value": "33",
"no2Value": ".017",
"o3Value": ".026",
"pm25Value": "24"
},
],
"pageNo": 1,
"numOfRows": 100
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
3. 시도별 실시간 평균정보 조회
입력값
출력값
{
"response": {
"body": {
"totalCount": 24,
"items": [
{
"daegu": "16",
"chungnam": "19",
"incheon": "22",
"daejeon": "16",
"gyeongbuk": "17",
"sejong": "14",
"gwangju": "15",
"jeonbuk": "14",
"gangwon": "11",
"ulsan": "19",
"jeonnam": "13",
"seoul": "16",
"busan": "14",
"jeju": "11",
"chungbuk": "15",
"gyeongnam": "13",
"dataTime": "2024-02-06 13:00",
"dataGubun": "1",
"gyeonggi": "15",
"itemCode": "PM10"
},
{
"daegu": "15",
"chungnam": "18",
"incheon": "21",
"daejeon": "17",
"gyeongbuk": "18",
"sejong": "16",
"gwangju": "18",
"jeonbuk": "14",
"gangwon": "10",
"ulsan": "19",
"jeonnam": "14",
"seoul": "13",
"busan": "14",
"jeju": "12",
"chungbuk": "15",
"gyeongnam": "12",
"dataTime": "2024-02-06 12:00",
"dataGubun": "1",
"gyeonggi": "14",
"itemCode": "PM10"
},
{
"daegu": "15",
"chungnam": "17",
"incheon": "20",
"daejeon": "15",
"gyeongbuk": "17",
"sejong": "17",
"gwangju": "17",
"jeonbuk": "15",
"gangwon": "10",
"ulsan": "17",
"jeonnam": "13",
"seoul": "12",
"busan": "14",
"jeju": "12",
"chungbuk": "15",
"gyeongnam": "13",
"dataTime": "2024-02-06 11:00",
"dataGubun": "1",
"gyeonggi": "13",
"itemCode": "PM10"
},
{
"daegu": "14",
"chungnam": "16",
"incheon": "15",
"daejeon": "16",
"gyeongbuk": "15",
"sejong": "18",
"gwangju": "15",
"jeonbuk": "17",
"gangwon": "11",
"ulsan": "13",
"jeonnam": "13",
"seoul": "9",
"busan": "16",
"jeju": "11",
"chungbuk": "14",
"gyeongnam": "13",
"dataTime": "2024-02-06 10:00",
"dataGubun": "1",
"gyeonggi": "12",
"itemCode": "PM10"
},
...,
...,
],
"pageNo": 1,
"numOfRows": 100
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}
4. 시군구별 실시간 평균정보 조회 (작동 안함)
입력값
출력값
출력이 안됨.......
종합적으로 보면 우선 이 형태를 따라가므로 엔티티 작성할 때 참고하세요.
{
"response": {
"body": {
"totalCount": 24,
"items": [
{},
],
"pageNo": 1,
"numOfRows": 100
},
"header": {
"resultMsg": "NORMAL_CODE",
"resultCode": "00"
}
}
}