자동기상관측장비는 사용목적에 따라 종관기상관측장비(ASOS)과 방재기상관측장비(AWS)로 구분합니다. 종관기상관측장비(ASOS)는 관측관서에서 목측요소를 제외한 기상요소에 대한 관측업무를 자동화한 것이며, 방재기상관측장비(AWS)는 기상관측 사각지역에 관측 공백 해소 및 국지적인 위험기상을 연속자동 관측하여 방재기상업무를 지원하는 자동기상관측장비를 말합니다. 또한 농업기상관측장비(AAOS)를 종관기상관측장비(ASOS) 또는 방재기상관측장비(AWS)에 통합하여 운영함(2017. 8. 3.)에 따라 자동기상관측장비의 기준을 적용합니다.
자동기상관측장비는 센서부, 자료처리부, 부대장비 및 부대설비로 구성되어 있습니다.
기온, 지면온도, 초상온도, 지중온도, 풍향, 풍속, 기압, 습도, 강수량(0.1mm, 0.5 mm), 강수유무, 시정·현천, 일사, 일조센서 등으로 구성하며, 농업기상관측 지점에서는 토양수분을 추가 구성합니다. 관측목적(농업, 기후 등)에 따라 관측요소 일부를 관측할 수 있습니다.
센서로부터 수신한 아날로그 신호를 디지털 신호로 변환하고, 정해진 처리방법에 따라 수집한 다음 자동기상관측장비 표준규격에 따른 자료구조로 편집한 후 기상실황판으로 전송하고, 또한 매 1분 간격으로 국지수집장치를 통하여 종합기상정보시스템으로 전송합니다. 또한 매 1분 자료는 일정기간 자체 저장장치에 보관합니다.
(1) 전원공급장치 입력전압은 AC Free Volt이며, 출력전압은 DC 12 V 입니다. 전원의 안정된공급과 장비를 72시간 이상 가동할 수 있는 충전기 및 배터리를 설치해야 합니다.
(2) 기상실황판 관측지점의 기상실황을 실시간 감시를 목적으로 설치되며, 액정표시장치(liquid crystal display)와 셋톱박스(set top box) 또는 표출제어장치(display control unit) 등으로 구성됩니다. 주로 표출되는 관측요소는 풍향, 풍속, 기온, 습도, 현지기압, 강수유무, 오늘 강수량, 어제 강수량 등 입니다.
(3) 국지수집장치 국지수집장치는 연결된 자동기상관측장비의 자료를 매분마다 수집하여 종합기상정보시스템으로 전송하는 역할을 합니다. 또한 기상청 표준시각시스템(Network Time Protocol)으로부터 표준시각을 받아 해당 자동기상관측장비의 시각을 동기화하고, 원격지 자동기상관측장비의 전압 및 센서 상태 감시, 자료수집상태, 원격제어 등을 수행합니다.
(4) 모뎀 자동기상관측장비와 국지수집장치 간의 자료를 교환할 수 있도록 연결하는 기능을 합니다. 자동기상관측장비에 장착되어 있는 모뎀은 전용회선 4선식 전이중방식의 모뎀으로 ITU-T V.29 및 정보통신부 모뎀 표준규격서에 의해 설계된 국제규격의 모뎀입니다.
기상요소는 관측소 부근의 일반적인 기상상태를 대표할 수 있어야 하므로 관측소 위치는 관측에 영향을 줄 수 있는 높은 건물 등이 많은 곳이나 산악, 산림, 호수, 기타 장애물의 영향을 받는 곳은 피해야 하며, 평탄하고 바람의 유통이 잘되고 시야가 넓은 곳에 위치해야 합니다. 또한 관측소는 업무의 수행상 교통과 통신 등 최적의 관측환경 요건을 구비해야 합니다.
기온 관측방식은 유리제 온도계, 백금저항 온도계, 서미스터 온도계 등이 있으나, 열전도가 높고 부식이 잘 안되는 백금선을 활용한 백금저항온도계를 주로 사용합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 온도 센서 | 금속형 | ◦ 측정범위: -40 ℃ ~ +60 ℃ (초상, 지면, 지중온도 : -40 ℃ ~ +100 ℃) ◦ 정확도: ±0.3 ℃ 이내 \\◦ 운용환경: -40 ℃~ +60 ℃ ◦ 분해능: 0.1 ℃ ◦ 기타: 100 Ω 의 백금 4선식 |
| 박막형 | ◦ 측정범위: -40 ℃ ~ +60 ℃ ◦ 정확도: ±0.3 ℃ 이내 ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 분해능: 0.1 ℃ ◦ 기타: 100 Ω 의 백금(유리코팅 또는 보호통) |
바람(풍향‧풍속) 관측을 위한 장비에는 풍차형, 3배형 풍속계, 초음파 풍속계, 방향타형 풍향계, 로빈손 풍속계, 에어로벤 등이 있으며, 주로 풍배형풍속계를 사용합니다.
세계기상기구(WMO, World Meteorological Organization) 권고에 따라 풍향은 진북을 기준으로 360°의 10°간격(01~36 부호)으로 10분간의 평균풍향을 사용합니다. 풍속 또한 10분간의 평균풍속을 사용합니다. 바람의 관측은 지상의 장애물 높이의 10배 이상 떨어진 평탄한 곳에서 지상 10 m 높이의 풍향, 풍속을 관측하는 것을 표준으로 합니다.
| 관측센서 | 형식 | 내용 |
|---|---|---|
| 풍향센서 | 그레이 코드식 | ◦ 측정범위: 0° ~ 360° ◦ 정 확 도: 5° 이내 ◦ 기동풍속: 0.5 m/s 이하 ◦ 운용환경: -40 ℃ ~ +60 ℃, 순간풍속 75 m/s 이내 ◦ 분 해 능: 3° |
| 전위 차계식 | ◦ 측정범위: 0° ~ 360° ◦ 정 확 도: 5° 이내 ◦ 기동풍속: 1.1 m/s 이하 ◦ 운용환경: -50 ℃ ~ +50 ℃ 순간풍속 75 m/s 이내 ◦ 분 해 능: 1° |
|
| 초음파식 | ◦ 측정범위: 0° ~ 360° ◦ 정 확 도: 2° 이내 ◦ 운용환경: -40 ℃ ~ +60 ℃, 순간풍속 75 m/s 이내 ◦ 분 해 능: 1° |
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 풍속 센서 | 광초퍼식 | ◦ 측정범위: 0 ~ 75 m/s ◦ 정 확 도: 0.5 m/s 이내(10 m/s 미만), 5 % 이내(10 m/s 이상) ◦ 기동풍속: 0.5 m/s 이하 ◦ 운용환경: -40 ℃ ~ +60 ℃, 순간풍속 75 m/s 이내 ◦ 분 해 능: 0.1 m/s |
| 자기 유도식 | ◦ 측정범위: 0 ~ 75 m/s ◦ 정 확 도: 0.5 m/s 이내(10 m/s 미만), 5 % 이내(10 m/s 이상) ◦ 기동풍속: 1.1 m/s 이하 ◦ 운용환경: -50 ℃ ~ +50 ℃, 순간풍속 75 m/s 이내 ◦ 분 해 능: 0.1 m/s |
|
| 초음파식 | ◦ 측정범위: 0 ~ 70 m/s ◦ 정 확 도: 0.5 m/s 이내(10 m/s 미만), 5 % 이내(10 m/s 이상) ◦ 운용환경: -40 ℃ ~ +60 ℃, 순간풍속 75 m/s 이내 ◦ 분 해 능: 0.1 m/s ◦ 히터내장(히터작동 범위는 강수량 온도조절용 히터에 준함) |
기압센서는 광범위한 기압과 기온범위에서 사용가능한 디지털 기압계로 자체 기차보정, 온도보정이 된 값이 출력됩니다.
기압계는 연결부위에 물이 닿으면 기압측정에 오차가 발생할수 있으므로 주변 환경으로부터 보호받을 수 있도록 자료처리기(Data Logger)함 내부에 설치하거나 보호구 속에 설치하되, 밀폐되지 않도록 운영하고 있습니다
| 관측센서 | 형식 | 내용 |
|---|---|---|
| 기압센서 | 정전 용량식 | ◦ 측정범위: 500 hPa ~ 1080 hPa ◦ 정 확 도: ±0.5 hPa(750 hPa ~ 1080 hPa) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 분 해 능: 0.1 hPa ◦ 반응시간 : 1초 이내 |
습도계는 노점계, 정전용량 습도계, 자외선 습도계 등이 있으며, 정전용량형 고분자막 습도계를 주로 사용합니다.
정전용량형 고분자막 습도계는 고분자 물질의 전기적 특성이 물 분자의 흡ㆍ탈착에 의해서 변하도록 제작된 감지기로 고분자막을 유전체로 하는 일종의 콘덴서로, 정전용량을 전기신호로 끌어냄으로써 상대습도가 측정됩니다. 통풍이 원활하게 이루어지는 차광통 내부 중앙에 위치합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 습도 센서 | 정전 용량식 | ◦ 측정범위: 0 % R.H ~ 100 % R.H ◦ 정 확 도: ±3 % R.H 이내(0 % R.H ~ 90 % R.H) ±5 % R.H 이내(91 % R.H ~ 100 % R.H) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 방진필터 부착 |
강수량계는 무게식강수량계, 전도형강수량계 등이 있으며, 주로 무게식강수량계를 사용합니다.
무게식강수량계는 비, 눈 등 액상과 고체상의 강수를 관측하는 센서이며, 무게식강수량계 본체에는 저수통이 있어 비, 눈 등을 저수통에 모아 무게를 측정하는 원리를 사용하여 강수량을 산출합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 강수량 센서 | 무게식 | ◦ 측정범위: 1000 mm 이상 ◦ 정 확 도: ±0.1 mm(10 mm 미만), ±1 %(10 mm 이상) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 분 해 능: 0.1 mm ◦ 바람막이 부착, 수수구부 히팅 기능 |
| 전도형 | ◦ 수 수 구: 지름 200 mm ◦ 측정범위: 1전도(Bucket)당 0.5 mm(또는 1.0 mm) ◦ 정 확 도: 3 % 이내(20~50 mm/h 강우강도) ◦ 재 질: 스테인리스 ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 히 터: 강설 녹임을 위한 서모스탯(Thermostat) 부착(4 ℃ ± 2 ℃ 이내에서 ON, 15 ℃ ± 2 ℃ 이내에서 OFF) ◦ 수수구 그물망: 봉 또는 수평형태의 그물망 ◦ 분 해 능: 0.5 mm 또는 1.0 mm ◦ 바람막이 부착 |
강수유무계에는 임피던스 검출형, 정전용량 검출형 등이 있습니다. 비, 눈 등 강수현상이 강수유무계 감지면에 낙하하여 감지되면 강수유무를 전기적 신호로 출력합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 강수 유무 센서 | 임피던스 검출형, 정전용량 검출형 | ◦ 측정범위: 비, 눈 등 강수현상 ◦ 반응시간: 1분 이내 ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 감지면 규격: 5 mm 간격 이내 금박격자, 15° ~ 30° 경사지게 설치 ◦ 감지면 항온유지 - 서리 및 이슬현상으로 인한 오류 방지 - 강우 및 강설현상 종료 시 반응시간 2 분 이내에 감지면의 물기 제거 |
시정계는 일반적으로 산란식 시정센서를 사용합니다. 시정ㆍ현천계는 송신부와 수신부에서 레이저 빔을 발사, 수신하여 공기 중에 있는 입자에 의해 빛이 산란, 흡수되는 빛의 산란 강도를 통해 시정값을 산출합니다. 시정 자료를 생산하기 위하여 1분 동안 10∼15초 간격으로 시정자료를 수집하여 매분자료를 생산하며, 10분 이동평균 한 시정자료를 현재 시정값으로 사용합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 시정 센서 | 산란식 | ◦ 측정범위: 10 m ~ 25000 m 이상 ◦ 정 확 도: ±10 % 이내(10 m ~ 10000 m 미만),±20 % 이내(10000 m 이상) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 샘 플 링: 매 10~15초 ◦ 분 해 능: 10 m |
일사계는 직달일사계와 은반일사계 및 전기 보상식 직달일사계 등이 있으며, 주로 전천일사계를 사용합니다. 수평면일사로도 불리는 전천 일사는 수평하게 놓인 수광면이 받는 직달일사와 대기 중의 산란일사를 측정하며, 측정한 값을 전기적 신호로 출력합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 일사 센서 | 열전대식 | ◦ 민 감 도(Sensitivity): 7 ~ 17 ㎶/(W/㎡) ◦ 온도특성: ±2 % / -20 ℃ ~ +50 ℃ ◦ 비선형성(Non-linearity): ±0.5 % ◦ 안 정 도: ±0.8 %/년 ◦ 정 확 도: 2 %(일 변화), 3 %(시 변화) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 시 야 각: 0° ~ 360° ◦ 측정범위: 0 ~ 1500 W/㎡ ◦ 분 해 능: 1 W/㎡ |
일조계는 캄벨․스토크스 일조계, 조르단 일조계, 태양전지식 일조계, 기타 일조계가 있으며, 주로 회전식 일조계를 사용합니다. 회전식 일조계는 일정한 속도로 회전하는 회전반사경에 의해 직달일사량이 120 W·m-2 이상의 에너지를 초과하게 될 경우, 일조가 있는 것으로 처리하며 누적값으로 일조값을 계산합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 일조 센서 | 회전 거울식, 광다이오드식 | ◦ 측정범위: 0 ~ 24시 ◦ 입사각 특성: ±5 % ◦ 시 초 값: 120 W/m2 ◦ 정 확 도: ±5 %(120 W/㎡), 10 분(일) 이내 ◦ 운용환경: -40 ℃ ~ +45 ℃ ◦ 분 해 능: 0.1시 |
운고‧운량계는 일반적으로 레이저식 운고센서를 사용합니다. 운고·운량계는 연직으로 레이저 빔을 쏘아 3개 층의 운고와 운량을 관측하는 센서로 송신부에서 30초 간격으로 레이저 빔을 발사하며, 구름하부에 도달한 레이저 빔이 수신기로 돌아오는 데 걸리는 시간을 측정해 3개 층의 운고와 운량을 측정합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 운고센서 | 레이저식 | ◦ 측정범위: 10 m ~ 7500 m 이상 ◦ 정 확 도: ±10 m(1000 m 미만), ±30 m(1000 m 이상) ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 샘 플 링: 매 15~60초 ◦ 분 해 능: 10 m |
적설계는 영상식적설계, 초음파식적설계, 레이저식적설계 등이 있으며, 주로 레이저식 적설계를 사용합니다. 레이저식 적설계는 내부의 레이저 거리측정기가 일정한 각도를 두고 회전하여 지면 또는 눈 표면에 원형 궤적을 그리면서 궤적상의 지점들을 측정합니다. 각 측정 지점에서 반사되어 레이저 거리 측정 모듈까지의 귀환 시간으로 거리를 계산합니다. 이렇게 측정된 각 지점의 거리 자료로 각 지점에 대한 지면으로부터의 높이를 계산하고, 각 지점의 적설 값을 평균하여 측정면의 대표값을 계산합니다.
| 관측 센서 | 형식 | 내용 |
|---|---|---|
| 적설 센서 | 레이저식 | ◦ 측정범위: 0 ~ 300 ㎝ ◦ 측정방식: 3지점 이상의 관측 포인트 산술평균 ◦ 정 확 도: ±0.5 cm ◦ 운용환경: -40 ℃ ~ +50 ℃ ◦ 샘 플 링: 매 15~60초 ◦ 분 해 능: 0.1㎝ |
| 구분 | 수도권청 | 부산청 | 광주청 | 대전청 | 강원청 | 대구청 | 제주청 | 전주지청 | 청주지청 | 계 |
|---|---|---|---|---|---|---|---|---|---|---|
| 종관기상관측장비 (ASOS 98개소) | 9 | 17 | 14 | 8 | 14 | 16 | 4 | 10 | 6 | 98 |
| 방재기상관측장비 (AWS 539개소) | 101 | 66 | 87 | 42 | 78 | 64 | 39 | 35 | 27 | 539 |
| 계 | 110 | 83 | 101 | 50 | 92 | 80 | 43 | 45 | 33 | 637 |
| 지점번호 | 지점명(한글) | 지점명(영문) | 경도(degree) | 위도(degree) | 관측장비 해발고도(m) | 기압계 해발고도(m) | 온도계 높이(m) | 풍향/풍속계 높이(m) | 강수량계 높이(m) | 예보구역코드 | 법정동코드 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 90 | 속초 | Sokcho | 128.56473 | 38.25085 | 17.53 | 18.73 | 1.7 | 10 | 1.4 | 11D20401 | 5182033035 |
| 93 | 북춘천 | Bukchuncheon | 127.75443 | 37.94738 | 95.78 | 96.78 | 1.5 | 10 | 1.4 | 11D10301 | 5111025024 |
| 95 | 철원 | Cheorwon | 127.3042 | 38.14787 | 155.48 | 156.98 | 1.8 | 13 | 1.5 | 11D10101 | 5178025624 |
| 98 | 동두천 | Dongducheon | 127.0607 | 37.90188 | 115.62 | 116.74 | 1.7 | 10 | 1 | 11B20401 | 4125010300 |
| 99 | 파주 | Paju | 126.76648 | 37.88589 | 30.59 | 31.99 | 1.7 | 10 | 1 | 11B20305 | 4148025025 |
| 100 | 대관령 | Daegwallyeong | 128.71834 | 37.67713 | 772.43 | 773.43 | 1.7 | 10 | 1.4 | 11D20201 | 5176038024 |
| 101 | 춘천 | Chuncheon | 127.7357 | 37.90262 | 75.82 | 77.05 | 1.5 | 10 | 1.4 | 11D10301 | 5111011800 |
| 102 | 백령도 | Baengnyeongdo | 124.71237 | 37.97396 | 36 | 37.2 | 1.8 | 9 | 1.2 | 11A00101 | 2872033021 |
| 104 | 북강릉 | Bukgangneung | 128.85535 | 37.80456 | 75.24 | 76.67 | 1.7 | 10 | 1.4 | 11D20501 | 5115036027 |
| 105 | 강릉 | Gangneung | 128.89099 | 37.75147 | 27.12 | 28.22 | 1.7 | 10 | 0.5 | 11D20501 | 5115010700 |
| 106 | 동해 | Donghae | 129.12433 | 37.50709 | 40.46 | 41.66 | 1.7 | 10 | 1.4 | 11D20601 | 5117010400 |
| 108 | 서울 | Seoul | 126.9658 | 37.57142 | 85.67 | 86.67 | 1.5 | 10 | 0.5 | 11B10101 | 1111017800 |
| 112 | 인천 | Incheon | 126.6249 | 37.47772 | 68.99 | 70.19 | 1.6 | 10 | 1.2 | 11B20201 | 2811013700 |
| 114 | 원주 | Wonju | 127.94659 | 37.33749 | 150.11 | 151.11 | 1.7 | 14 | 1.4 | 11D10401 | 5113010600 |
| 115 | 울릉도 | Ulleungdo | 130.89863 | 37.48129 | 221.14 | 223.7 | 1.6 | 10 | 1.3 | 11E00101 | 4794025024 |
| 119 | 수원 | Suwon | 126.983 | 37.25746 | 39.81 | 40.81 | 1.6 | 18.7 | 1.1 | 11B20601 | 4111312800 |
| 121 | 영월 | Yeongwol | 128.45743 | 37.18126 | 240.54 | 242.05 | 1.7 | 10 | 1.4 | 11D10501 | 5175025022 |
| 127 | 충주 | Chungju | 127.9525 | 36.97045 | 114.85 | 116.25 | 1.65 | 10 | 1 | 11C10101 | 4313012200 |
| 129 | 서산 | Seosan | 126.4939 | 36.77658 | 25.25 | 26.55 | 1.6 | 20.2 | 1.1 | 11C20101 | 4421010600 |
| 130 | 울진 | Uljin | 129.41278 | 36.99176 | 48.98 | 50.18 | 1.75 | 10 | 1.3 | 11H10101 | 4793025023 |
| 131 | 청주 | Cheongju | 127.44066 | 36.63924 | 58.7 | 60.1 | 1.7 | 10 | 0.8 | 11C10301 | 4311311400 |
| 133 | 대전 | Daejeon | 127.3721 | 36.37199 | 67.79 | 68.49 | 1.4 | 23.7 | 1 | 11C20401 | 3020012400 |
| 135 | 추풍령 | Chupungnyeong | 127.99458 | 36.22025 | 244.98 | 246.18 | 1.6 | 10 | 1.1 | 11C10401 | 4374033521 |
| 136 | 안동 | Andong | 128.70733 | 36.57293 | 141.26 | 142.76 | 1.8 | 10 | 1.3 | 11H10501 | 4717012900 |
| 137 | 상주 | Sangju | 128.15741 | 36.40837 | 96.58 | 97.98 | 1.8 | 10 | 1.4 | 11H10302 | 4725011000 |
| 138 | 포항 | Pohang | 129.38002 | 36.03201 | 3.94 | 4.92 | 1.6 | 10 | 1.2 | 11H10201 | 4711110400 |
| 140 | 군산 | Gunsan | 126.76135 | 36.0053 | 27.85 | 24.6 | 1.7 | 10 | 1 | 21F10501 | 4513010300 |
| 143 | 대구 | Daegu | 128.65296 | 35.87797 | 54.27 | 55.52 | 1.8 | 10 | 0.6 | 11H10701 | 2714010300 |
| 146 | 전주 | Jeonju | 127.11718 | 35.84092 | 60.44 | 62.9 | 1.6 | 10 | 1.4 | 11F10201 | 4511310600 |
| 152 | 울산 | Ulsan | 129.33469 | 35.58237 | 81.14 | 83.2 | 1.8 | 10 | 1.3 | 11H20101 | 3111011400 |
| 155 | 창원 | Changwon | 128.57282 | 35.17019 | 34.97 | 39.1 | 1.7 | 10 | 1.3 | 11H20301 | 4812510100 |
| 156 | 광주 | Gwangju | 126.89156 | 35.17294 | 70.28 | 73.9 | 1.7 | 17.5 | 0.8 | 11F20501 | 2917010900 |
| 159 | 부산 | Busan | 129.03203 | 35.10468 | 69.56 | 70.9 | 1.5 | 18 | 1.3 | 11H20201 | 2611011600 |
| 162 | 통영 | Tongyeong | 128.43561 | 34.84541 | 31.24 | 33.2 | 1.5 | 18 | 1.3 | 11H20401 | 4822010900 |
| 165 | 목포 | Mokpo | 126.38151 | 34.81732 | 44.7 | 39.2 | 1.5 | 14.5 | 1 | 21F20801 | 4611010300 |
| 168 | 여수 | Yeosu | 127.74063 | 34.73929 | 65.93 | 66.1 | 1.5 | 13 | 0.6 | 11F20401 | 4613010700 |
| 169 | 흑산도 | Heuksando | 125.45105 | 34.68719 | 75.12 | 78 | 1.5 | 15.5 | 0.6 | 11F20701 | 4691036022 |
| 170 | 완도 | Wando | 126.70182 | 34.3959 | 35.37 | 36.7 | 1.5 | 10 | 0.8 | 11F20301 | 4689031022 |
| 172 | 고창 | Gochang | 126.599 | 35.34824 | 52.42 | 53.5 | 1.8 | 10 | 1.7 | 21F10601 | 4579038025 |
| 174 | 순천 | Suncheon | 127.3694 | 35.0204 | 165 | 166.5 | 1.5 | 10 | 0.8 | 11F20600 | 4615025025 |
| 177 | 홍성 | Hongseong | 126.68772 | 36.65759 | 27.74 | 28.7 | 1.5 | 10 | 1.5 | 11C20104 | 4480025625 |
| 181 | 서청주 | Seocheongju | 127.38466 | 36.64002 | 32 | 32 | 1.5 | 10 | 0.5 | 11C10301 | 4311331035 |
| 184 | 제주 | Jeju | 126.52969 | 33.51411 | 20.79 | 21.99 | 1.7 | 15 | 1.5 | 11G00201 | 5011010700 |
| 185 | 고산 | Gosan | 126.16283 | 33.29382 | 71.39 | 72.49 | 1.7 | 10 | 1.5 | 11G00501 | 5011031023 |
| 188 | 성산 | Seongsan | 126.8802 | 33.38677 | 20.34 | 21.74 | 1.7 | 10 | 1.5 | 11G00101 | 5013025927 |
| 189 | 서귀포 | Seogwipo | 126.5653 | 33.24616 | 51.86 | 53.16 | 1.7 | 10 | 1.5 | 11G00401 | 5013010100 |
| 192 | 진주 | Jinju | 128.04004 | 35.16378 | 29.35 | 31.6 | 1.8 | 10 | 1.3 | 11H20701 | 4817012600 |
| 201 | 강화 | Ganghwa | 126.44634 | 37.70739 | 47.84 | 49.24 | 1.6 | 10 | 0.6 | 11B20101 | 2871032027 |
| 202 | 양평 | Yangpyeong | 127.49446 | 37.48863 | 47.26 | 48.76 | 1.9 | 10 | 0.6 | 11B20503 | 4183025021 |
| 203 | 이천 | Icheon | 127.48421 | 37.26399 | 80.09 | 81.59 | 1.8 | 10 | 0.6 | 11B20701 | 4150025328 |
| 211 | 인제 | Inje | 128.16714 | 38.05986 | 201.78 | 202.78 | 1.5 | 10 | 0.5 | 11D10201 | 5181025022 |
| 212 | 홍천 | Hongcheon | 127.88043 | 37.6836 | 140.2 | 141.2 | 1.6 | 13 | 0.5 | 11D10302 | 5172025029 |
| 216 | 태백 | Taebaek | 128.98929 | 37.17038 | 714.45 | 715.25 | 1.6 | 16 | 0.6 | 11D20301 | 5119010100 |
| 217 | 정선군 | Jeongseongun | 128.67348 | 37.37732 | 312 | 312 | 1.5 | 10 | 0.5 | 11D10502 | 5177025024 |
| 221 | 제천 | Jecheon | 128.19433 | 37.15928 | 264.62 | 265.39 | 1.5 | 10 | 0.5 | 11C10201 | 4315011200 |
| 226 | 보은 | Boeun | 127.73415 | 36.48761 | 171.31 | 172.71 | 1.5 | 10 | 0.5 | 11C10302 | 4372025030 |
| 232 | 천안 | Cheonan | 127.29282 | 36.76217 | 84.78 | 83 | 1.8 | 10 | 1.2 | 11C20301 | 4413136022 |
| 235 | 보령 | Boryeong | 126.55744 | 36.32724 | 9.98 | 17 | 1.6 | 10 | 1.1 | 11C20201 | 4418010900 |
| 236 | 부여 | Buyeo | 126.92079 | 36.27242 | 13.42 | 14.88 | 1.7 | 10 | 0.5 | 11C20501 | 4476025033 |
| 238 | 금산 | Geumsan | 127.48175 | 36.10563 | 172.69 | 173.99 | 1.5 | 10 | 0.5 | 11C20601 | 4471025025 |
| 239 | 세종 | sejong | 127.24438 | 36.48522 | 89.5 | 95 | 1.6 | 10 | 1 | 11C20404 | 3611010800 |
| 243 | 부안 | Buan | 126.71657 | 35.72961 | 12.2 | 13.5 | 1.8 | 10 | 0.6 | 21F10602 | 4580033021 |
| 244 | 임실 | Imsil | 127.28556 | 35.61203 | 247.04 | 248.44 | 1.8 | 10 | 0.6 | 11F10402 | 4575025022 |
| 245 | 정읍 | Jeongeup | 126.83904 | 35.56337 | 68.7 | 70.97 | 1.9 | 10 | 1 | 11F10203 | 4518010800 |
| 247 | 남원 | Namwon | 127.39652 | 35.4213 | 133.49 | 91.8 | 1.7 | 10 | 0.7 | 11F10401 | 4519011600 |
| 248 | 장수 | Jangsu | 127.52031 | 35.65696 | 406.87 | 408 | 1.6 | 10 | 0.5 | 11F10301 | 4574025023 |
| 251 | 고창군 | Gochanggun | 126.697 | 35.42661 | 58.84 | 55.5 | 1.7 | 10 | 0.6 | 21F10601 | 4579025030 |
| 252 | 영광군 | Yeonggwanggun | 126.47784 | 35.28366 | 37.2 | 38.7 | 1.5 | 13 | 0.6 | 21F20102 | 4687034030 |
| 253 | 김해시 | Gimhaesi | 128.89075 | 35.22981 | 54.59 | 54.6 | 1.7 | 10 | 0.5 | 11H20304 | 4825010300 |
| 254 | 순창군 | Sunchanggun | 127.1286 | 35.37131 | 129.38 | 128.4 | 1.6 | 10 | 0.6 | 11F10403 | 4577025026 |
| 255 | 북창원 | Bukchangwon | 128.6726 | 35.22655 | 50.95 | 50.3 | 1.8 | 10 | 0.7 | 11H20301 | 4812311100 |
| 257 | 양산시 | Yangsansi | 129.02009 | 35.30737 | 6.29 | 16.1 | 1.8 | 10 | 0.6 | 11H20102 | 4833031027 |
| 258 | 보성군 | Boseonggun | 127.21226 | 34.76335 | 1.41 | 4.3 | 1.5 | 10 | 0.6 | 11F20404 | 4678038023 |
| 259 | 강진군 | Gangjingun | 126.78408 | 34.64457 | 16 | 20 | 1.5 | 10 | 0.6 | 11F20303 | 4681025027 |
| 260 | 장흥 | Jangheung | 126.91951 | 34.68886 | 43.99 | 46.3 | 1.5 | 10 | 0.8 | 11F20304 | 4680025043 |
| 261 | 해남 | Haenam | 126.56907 | 34.55375 | 16.36 | 17.91 | 1.5 | 10 | 0.8 | 11F20302 | 4682025034 |
| 262 | 고흥 | Goheung | 127.27572 | 34.61826 | 51.91 | 53.31 | 1.5 | 10 | 0.8 | 11F20403 | 4677025029 |
| 263 | 의령군 | Uiryeonggun | 128.28812 | 35.32258 | 14.1 | 14.9 | 2 | 10 | 0.6 | 11H20302 | 4872025024 |
| 264 | 함양군 | Hamyanggun | 127.74538 | 35.51138 | 152.07 | 152.5 | 1.8 | 10 | 0.6 | 11H20502 | 4887025022 |
| 266 | 광양시 | Gwangyangsi | 127.6914 | 34.9434 | 88.21 | 87.9 | 1.7 | 10 | 0.6 | 11F20402 | 4623010600 |
| 268 | 진도군 | Jindogun | 126.25846 | 34.47296 | 9.82 | 6.9 | 1.7 | 10 | 0.6 | 21F20201 | 4690025025 |
| 271 | 봉화 | Bonghwa | 128.91449 | 36.94361 | 324.67 | 326.22 | 1.9 | 10 | 0.6 | 11H10402 | 4792034021 |
| 272 | 영주 | Yeongju | 128.51687 | 36.87183 | 211.32 | 212.78 | 1.91 | 10 | 0.58 | 11H10401 | 4721025021 |
| 273 | 문경 | Mungyeong | 128.14879 | 36.62727 | 173.01 | 174.51 | 1.8 | 10 | 0.6 | 11H10301 | 4728010800 |
| 276 | 청송군 | Cheongsonggun | 129.04005 | 36.4351 | 208.65 | 210.2 | 1.75 | 10 | 0.5 | 11H10503 | 4775025000 |
| 277 | 영덕 | Yeongdeok | 129.40926 | 36.53337 | 40.71 | 42.01 | 1.7 | 10 | 0.6 | 11H10102 | 4777036030 |
| 278 | 의성 | Uiseong | 128.68864 | 36.3561 | 81.44 | 82.94 | 1.7 | 10 | 0.6 | 11H10502 | 4773025031 |
| 279 | 구미 | Gumi | 128.32055 | 36.13055 | 49.17 | 50.67 | 1.7 | 10 | 1.4 | 11H10602 | 4719010800 |
| 281 | 영천 | Yeongcheon | 128.9514 | 35.97742 | 96.12 | 97.62 | 1.7 | 10 | 0.5 | 11H10702 | 4723010200 |
| 283 | 경주시 | Gyeongjusi | 129.2009 | 35.8174 | 40.13 | 41.63 | 1.67 | 10 | 0.59 | 11H10202 | 4713011300 |
| 284 | 거창 | Geochang | 127.9099 | 35.66739 | 228.45 | 227.3 | 1.5 | 10 | 1.3 | 11H20502 | 4888025028 |
| 285 | 합천 | Hapcheon | 128.16994 | 35.56505 | 26.72 | 33.2 | 1.5 | 10 | 0.5 | 11H20503 | 4889025021 |
| 288 | 밀양 | Miryang | 128.74412 | 35.49147 | 8.31 | 12.5 | 2 | 10 | 1.3 | 11H20601 | 4827010200 |
| 289 | 산청 | Sancheong | 127.8791 | 35.413 | 138.22 | 138.8 | 1.6 | 10 | 0.6 | 11H20703 | 4886025023 |
| 294 | 거제 | Geoje | 128.60459 | 34.88818 | 44.83 | 46.7 | 1.7 | 10 | 0.6 | 11H20403 | 4831010800 |
| 295 | 남해 | Namhae | 127.92641 | 34.81662 | 45.71 | 47.01 | 1.8 | 10 | 0.8 | 11H20405 | 4884031021 |
| 296 | 북부산 | Bukbusan | 128.96024 | 35.21778 | 3 | 4.5 | 1.5 | 10 | 0.7 | 11H20201 | 2644010100 |
| 구분 | 내용 |
|---|---|
| 기능 | ◦ 신호의 변환(아날로그에서 디지털)ㆍ처리 - 기상요소별 관측센서로부터 측정된 신호를 기상학적 물리량으로 변환하여 수치화한다. ◦ 관측센서의 추가 또는 변경 시 하드웨어의 변경 없이 소프트웨어로 제어(센서 추가ㆍ변경, 센서별 보정값 수정)가 가능하도록 설계되어야 한다. ◦ 시각동기화, 자료의 저장, 자료의 송ㆍ수신이 가능해야 한다. |
| 조건 | ◦ 일체형이고 범용성과 안정성이 있어야 한다. ◦ 하드웨어, 소프트웨어 및 펌웨어의 확장성이 있어야 한다. ◦ 전원중단, 통신장애 대비, 관측자료 산출 적합성 확인을 위해 충분한 자료 저장성이 있어야 한다. |
| 규격 | ◦ 프로세서: 마이크로프로세서 ◦ 저장용량: 1분 자료와 관측요소별 샘플링 주기 자료 30일 이상 저장 ※ 단, 샘플링 주기자료는 [별표 4]에 명시된 관측요소에 한함(시정, 운고, 적설 제외) ◦ 통신인터페이스: LAN(TCP/IP), RS232, RS422, RS485 등 가능 ◦ 키패드장치: 디스플레이가 부착된 키패드 또는 작동상태를 확인할 수 있는 출력장치 포함 ◦ 운용환경: -40 ℃ ~ +60 ℃ ◦ 채널(기상관측목적, 관측센서 종류 및 수량 등에 따라 선택 가능) - 아날로그 채널: Single 15개 이상, Differential 7개 이상 - 디지털 채널: 8개 이상(SDI-12, RS232, RS422, RS485 등) - 주파수 채널: 2개 이상 - 여기 채널: 2개 이상 ◦ A/D 비트(bit): 15 비트(bit) 이상 ◦ 입력전원: 안정된 전원으로 동작하여야 한다. ◦ 외 장 품: 자료처리기함 - 내구성이 보장되어야 하며, 함체 재질에 의한 직접적인 내부온도 상승이 없도록 제작된 것으로 잠금장치와 환기구(이물질 방지망 설치)가 설치되어야 한다. ◦ 자료처리기의 내부보드는 접지가 되어야 한다. |
| 관측요소 | 내용 | |
|---|---|---|
| 온도 습도 기압 | ◦ 자료 단위: 0.1 ℃(기온, 초상, 지면, 지중온도), 0.1 %(습도), 0.1 hPa(기압) ◦ 샘플링 시간: 10초 ◦ 자료처리 시간간격: 1분 - 10초마다 전기적 신호를 수신하여 디지털 값으로 변환한다. - 10초 간격의 6개 자료를 평균하여 1분 자료를 산출 |
|
| 풍향풍속 | ◦ 자료 단위: 0.1°(풍향), 0.1 m/s(풍속) ◦ 샘플링 시간: 0.25초 ◦ 자료처리 시간간격: 1분 ◦ 풍향․풍속센서로부터 0.25초마다 전기적 신호를 수신하여 디지털 값으로 변환 후 벡터 환산한다. ◦ 순간풍향ㆍ풍속(gust) - 매 0.25초 간격으로 3초 동안 12개의 샘플링 된 자료를 평균하고 0.25초 간격으로 이동 평균하여 순간풍향․풍속을 산출한다. - 1분 동안 이동평균하여 산출된 지난 240개의 자료 중 최댓값을 1분 최대순간풍향․풍속으로 산출한다. - 매 1분마다 지난 10개의 1분값 중에서 최댓값을 10분 최대순간풍향․풍속으로 산출한다. - 하루 동안 수집된 1분 최대순간풍향․풍속 1440개 중에서 최댓값을 일 최대순간풍향․풍속으로 산출한다. ◦ 1분 평균 풍향․풍속 - 0.25초 간격의 바람벡터 자료를 10초 동안 평균을 구한 후 1분 동안 6개의 자료를다시 평균하여 매분자료를 산출한다. |
|
| 강수량 | 전도형 | ◦ 자료 단위: 0.5 ㎜ 또는 1.0 ㎜ ◦ 1분 강수량: 센서에서 1초마다 보내온 펄스 신호의 횟수를 1분 동안 누적하여 산출한다 |
| 무게식 | ◦ 자료 단위: 0.1 ㎜ ◦ 1분 강수량 : 센서에서 보내온 1분 값 또는 각 센서의 자체 알고리즘에 따른다 |
|
| 강수유무 | ◦ 자료 단위: ON 신호 시 10, OFF 신호 시 00 ◦ 샘플링 시간: 1분 ◦ 강수현상이 있을 때 10, 없을 때 00 |
|
| 시정 | ◦ 자료 단위 : 10 m ◦ 1분 시정 : 센서에서 보내온 1분 자료 또는 각 센서의 자체 알고리즘에 따른다. |
|
| 운고 | ◦ 자료 단위 : 10 m ◦ 1분 운고 : 센서에서 보내온 1분 자료 또는 각 센서의 자체 알고리즘에 따른다. |
|
| 일사 | ◦ 자료 단위 : 0.01 MJ/m2 ◦ 샘플링 시간 : 1초 ◦ 자료처리 시간간격 : 1분 - 1초 간격의 60개 자료를 누적하여 1분 자료를 산출한다. |
|
| 적설 | ◦ 자료 단위 : 0.1 cm ◦ 1분 적설 : 센서에서 보내온 1분 자료 또는 각 센서의 자체 알고리즘에 따른다. |
|
센서로부터 수신한 아날로그 신호를 디지털 신호로 변환하고 정해진 처리방법에 따라 샘플링한 다음 자동기상관측장비 표준규격에 따른 자료구조로 편집한 후 기상실황판으로 전송하고, 매 1분 간격으로 국지수집장치를 통하여 종합기상정보시스템(기상청 내부 시스템)으로 전송합니다.
| 변수명 |
|---|
| 일시 |
| 기온 (°C) |
| 기온 QC플래그 |
| 강수량 (mm) |
| 강수량 QC플래그 |
| 풍속 (m/s) |
| 풍속 QC플래그 |
| 풍향 (16방위) |
| 풍향 QC플래그 |
| 습도 (%) |
| 습도 QC플래그 |
| 증기압 (hPa) |
| 이슬점온도 (°C) |
| 현지기압 (hPa) |
| 현지기압 QC플래그 |
| 해면기압 (hPa) |
| 해면기압 QC플래그 |
| 일조 (hr) |
| 일조 QC플래그 |
| 일사 (MJ/m2) |
| 일사 QC플래그 |
| 적설 (cm) |
| 3시간신적설 (cm) |
| 전운량 (10분위) |
| 중하층운량 (10분위) |
| 운형 (운형약어) |
| 최저운고 (100m) |
| 시정 (10m) |
| 지면상태 (지면상태코드) |
| 현상번호 (국내식) |
| 지면온도 (°C) |
| 지면온도 QC플래그 |
| 5cm 지중온도 (°C) |
| 10cm 지중온도 (°C) |
| 20cm 지중온도 (°C) |
| 30cm 지중온도 (°C) |
| 변수명 |
|---|
| 일시 |
| 평균기온(°C) |
| 최저기온(°C) |
| 최저기온 시각(hhmi) |
| 최고기온(°C) |
| 최고기온 시각(hhmi) |
| 강수 계속시간(hr) |
| 10분 최다 강수량(mm) |
| 10분 최다강수량 시각(hhmi) |
| 1시간 최다강수량(mm) |
| 1시간 최다 강수량 시각(hhmi) |
| 일강수량(mm) |
| 최대 순간 풍속(m/s) |
| 최대 순간 풍속 풍향(16방위) |
| 최대 순간풍속 시각(hhmi) |
| 최대 풍속(m/s) |
| 최대 풍속 풍향(16방위) |
| 최대 풍속 시각(hhmi) |
| 평균 풍속(m/s) |
| 풍정합(100m) |
| 최다풍향(16방위) |
| 평균 이슬점온도(°C) |
| 최소 상대습도(%) |
| 최소 상대습도 시각(hhmi) |
| 평균 상대습도(%) |
| 평균 증기압(hPa) |
| 평균 현지기압(hPa) |
| 최고 해면기압(hPa) |
| 최고 해면기압 시각(hhmi) |
| 최저 해면기압(hPa) |
| 최저 해면기압 시각(hhmi) |
| 평균 해면기압(hPa) |
| 가조시간(hr) |
| 합계 일조시간(hr) |
| 1시간 최다일사량(MJ/m²) |
| 합계 일사량(MJ/m²) |
| 일 최심신적설(cm) |
| 일 최심신적설 시각(hhmi) |
| 일 최심적설(cm) |
| 일 최심적설 시각(hhmi) |
| 합계 3시간 신적설(cm) |
| 평균 전운량(1/10) |
| 평균 중하층운량(1/10) |
| 평균 지면온도(°C) |
| 최저 초상온도(°C) |
| 평균 5cm 지중온도(°C) |
| 평균 10cm 지중온도(°C) |
| 평균 20cm 지중온도(°C) |
| 평균 30cm 지중온도(°C) |
| 0.5m 지중온도(°C) |
| 1.0m 지중온도(°C) |
| 1.5m 지중온도(°C) |
| 3.0m 지중온도(°C) |
| 5.0m 지중온도(°C) |
| 합계 대형증발량(mm) |
| 합계 소형증발량(mm) |
| 9-9강수(mm) |
| 기사 |
| 안개 계속시간(hr) |
| 변수명 | 의미(단위) | 변수명 | 의미(단위) |
|---|---|---|---|
| TM | 관측시각 (KST) | STN | 국내 지점번호 |
| WD | 풍향 (16방위) | WS | 풍속 (m/s) |
| GST_WD | 돌풍향 (16방위) | GST_WS | 돌풍속 (m/s) |
| GST_TM | 돌풍속이 관측된 시각 (시분) | PA | 현지기압 (hPa) |
| PS | 해면기압 (hPa) | PT | 기압변화경향 (Code 0200) |
| PR | 기압변화량 (hPa) | TA | 기온 (C) |
| TD | 이슬점온도 (C) | HM | 상대습도 (%) |
| PV | 수증기압 (hPa) | RN | 강수량 (mm) |
| RN_DAY | 위 관측시간까지의 일강수량 (mm) | RN_INT | 강수강도 (mm/h) |
| SD_HR3 | 3시간 신적설 (cm) | SD_DAY | 일 신적설 (cm) |
| SD_TOT | 적설 (cm) | WC | GTS 현재일기 (Code 4677) |
| WP | GTS 과거일기 (Code 4561) | WW | 국내식 일기코드 (문자열 22개) |
| CA_TOT | 전운량 (1/10) | CA_MID | 중하층운량 (1/10) |
| CH_MIN | 최저운고 (100m) | CT | 운형 (문자열 8개) |
| CT_TOP | GTS 상층운형 (Code 0509) | CT_MID | GTS 중층운형 (Code 0515) |
| CT_LOW | GTS 하층운형 (Code 0513) | VS | 시정 (10m) |
| SS | 일조 (hr) | SI | 일사 (MJ/m2) |
| ST_GD | 지면상태 코드 (코드는 기상자원과 문의) | TS | 지면온도 (C) |
| TE_005 | 5cm 지중온도 (C) | TE_01 | 10cm 지중온도 (C) |
| TE_02 | 20cm 지중온도 (C) | TE_03 | 30cm 지중온도 (C) |
| ST_SEA | 해면상태 코드 (코드는 기상자원과 문의) | WH | 파고 (m) |
| BF | Beaufart 최대풍력(GTS코드) | IR | 강수자료 |
| IX | 유인관측/무인관측 | RN_JUN | 일강수량(mm) |
| 변수명 | 의미(단위) | 변수명 | 의미(단위) |
|---|---|---|---|
| TM | 관측시각 (KST) | STN | 국내 지점번호 |
| RN_DAY | 위 관측시간까지의 일강수량 (mm) | CA_TOT | 전운량 (1/10) |
| WS_AVG | 일 평균 풍속 (m/s) | WR_DAY | 일 풍정 (m) |
| WD_MAX | 최대풍향 | WS_MAX | 최대풍속 (m/s) |
| WS_MAX_TM | 최대풍속 시각 (시분) | WD_INS | 최대순간풍향 |
| WS_INS | 최대순간풍속 (m/s) | WS_INS_TM | 최대순간풍속 시각 (시분) |
| TA_AVG | 일 평균기온 (C) | TA_MAX | 최고기온 (C) |
| TA_MAX_TM | 최고기온 시각 (시분) | TA_MIN | 최저기온 (C) |
| TA_MIN_TM | 최저기온 시각 (시분) | TD_AVG | 일 평균 이슬점온도 (C) |
| TS_AVG | 일 평균 지면온도 (C) | TG_MIN | 일 최저 초상온도 (C) |
| HM_AVG | 일 평균 상대습도 (%) | HM_MIN | 최저습도 (%) |
| HM_MIN_TM | 최저습도 시각 (시분) | PV_AVG | 일 평균 수증기압 (hPa) |
| EV_S | 소형 증발량 (mm) | EV_L | 대형 증발량 (mm) |
| FG_DUR | 안개계속시간 (hr) | PA_AVG | 일 평균 현지기압 (hPa) |
| PS_AVG | 일 평균 해면기압 (hPa) | PS_MAX | 최고 해면기압 (hPa) |
| PS_MAX_TM | 최고 해면기압 시각 (시분) | PS_MIN | 최저 해면기압 (hPa) |
| PS_MIN_TM | 최저 해면기압 시각 (시분) | SS_DAY | 일조합 (hr) |
| SS_DUR | 가조시간 (hr) | SS_CMB | 캄벨 일조 (hr) |
| SI_DAY | 일사합 (MJ/m2) | RN_D99 | 9-9 강수량 (mm) |
| RN_DUR | 강수계속시간 (hr) | SD_NEW | 최심 신적설 (cm) |
| SD_NEW_TM | 최심 신적설 시각 (시분) | SD_MAX | 최심 적설 (cm) |
| SD_MAX_TM | 최심 적설 시각 (시분) | TE_05 | 0.5m 지중온도 (C) |
| TE_10 | 1.0m 지중온도 (C) | TE_15 | 1.5m 지중온도 (C) |
| TE_30 | 3.0m 지중온도 (C) | TE_50 | 5.0m 지중온도 (C) |
| SI_60M_MAX | 최대 1시간일사 (MJ/m2) | SI_60M_MAX_TM | 최대 1시간일사 시각 |
| RN_60M_MAX | 1시간 최다강수량 (mm) | RN_60M_MAX_TM | 1시간 최다강수량 시각 |
| RN_10M_MAX | 10분간 최다강수량 (mm) | RN_10M_MAX_TM | 10분간 최다강수량 시각 (시분) |
| RN_POW_MAX | 최대 강우강도 (mm/h) | RN_POW_MAX_TM | 최대 강우강도 시각 (시분) |
소스코드: aws_notebook.ipynb
# API 요청을 위한 requests 라이브러리와
# 그래프를 그리기 위한 seaborn 라이브러리,
# 지도를 표출하기 위한 folium 라이브러리를 설치합니다.
%pip install requests seaborn folium
기상청 API허브에 회원가입 후 자신의 인증키를 사용하여 API 요청을 할 수 있습니다.
API 인증키를 코드상에 직접 남겨 사용하는 방식은 다른 사람에게 코드를 공유할때 인증키가 노출되는 문제가 생길 수 있습니다.
따라서 인증키를 환경변수로 등록하여 코드상에 노출되지 않도록 사용하는 것이 바람직합니다.
import os # 환경변수를 불러오는 표준 라이브러리
# 바람직하지 않은 방법
# my_api_key = 'MY_PRIVATE_API_AUTHENTICATE_KEY'
# 인증키를 'myapikey'라는 이름의 환경변수로 미리 등록해놓은 뒤 이를 불러와서 사용합니다.
my_api_key = os.environ['myapikey']
먼저 AWS의 지점 정보를 조회해 파일로 다운로드합니다.
import requests # API 요청을 보내고 받는 라이브러리
import json # API 응답을 json형태로 가공하기 위한 라이브러리
# 지상관측 지점정보 API url
api_url = 'https://apihub.kma.go.kr/api/typ01/url/stn_inf.php'
# 요청인자로 지점종류, 해당 시점, 지점번호, 도움말추가 여부 등이 있습니다.
# 1. 지점종류를 입력합니다.
# SFC(지상), AWS(AWS), NKO(북한), UV(자외선)를 입력할 수 있습니다.
stn_type = 'AWS'
# 2. 해당 시점 및 특정 지점번호를 입력합니다.
# 여기선 현재 시각에 존재하는 모든 지점번호를 조회하기 위해 값을 입력하지 않습니다.
# 3. 도움말추가 여부를 입력합니다.
# 파일 내에 각 필드에 대한 도움말을 확인할 수 있습니다.
help = 1
# API 요청인자들을 묶어 dictionary로 정의합니다.
api_parameters = {
'inf': stn_type,
'help': help,
'authKey': my_api_key
}
# API 응답을 저장할 파일 형식은 txt 파일로 저장합니다.
file_name = f'{stn_type.lower()}_stn_inf.txt'
# 저장된 파일이 없는 경우에만 API를 요청해 파일을 다운로드합니다.
if not os.path.exists(file_name):
# API 요청인자와 함께 API 요청
response = requests.get(api_url, params=api_parameters)
# 잘못된 응답을 받을 경우 에러 메세지 출력
if response.status_code != 200:
raise requests.RequestException(
json.loads(response.content)['result']['message']
)
else:
# 그외의 올바른 응답에 대해서만 UTF-8 txt 파일 형태로 저장합니다.
with open(file_name, 'wb') as f:
f.write(response.content.decode('euc-kr').encode('utf-8'))
print(f'{file_name} 파일 다운로드 완료')
aws_stn_inf.csv 파일 다운로드 완료
다운로드 받은 파일을 열면 AWS 각 지점 번호와 이름, 지점 정보를 확인할 수 있습니다.
AWS 각 지점들의 위치를 지도로 표출합니다.
import pandas as pd # dataframe을 다루는 패키지
# 다운로드 받은 txt파일을 dataframe으로 변환합니다.
# 도움말을 비롯한 파일의 첫 20줄과 마지막 1줄을 제외하여 변환합니다.
# 각 필드를 구분하도록 너비를 정의하고
# 지점번호(STN), 경도(LON), 위도(LAT), 노장 해발고도(HT), 한글 지점명(STN_KO)만을 사용합니다.
stn_info = pd.read_fwf(
file_name,
skiprows=20,
skipfooter=1,
names=['STN_ID', 'LON', 'LAT', 'STN_SP', 'HT', 'HT_WD', 'LAU_ID', 'STN_AD', 'STN_KO', 'STN_EN', 'FCT_ID', 'LAW_ID', 'BASIN'],
usecols=['STN_ID', 'LON', 'LAT', 'HT', 'STN_KO'],
index_col=['STN_ID'],
widths=(5, 14, 14, 9, 10, 10, 5, 4, 10),
)
# dataframe의 첫 5개의 데이터를 표출합니다.
stn_info.head(5)
| STN_ID | LON | LAT | HT | STN_KO |
|---|---|---|---|---|
| 90 | 128.56473 | 38.25085 | 17.53 | 속초 |
| 92 | 128.66298 | 38.05903 | 75.40 | 양양(공) |
| 93 | 127.75443 | 37.94738 | 95.78 | 북춘천 |
| 95 | 127.30420 | 38.14787 | 155.48 | 철원 |
| 96 | 131.86983 | 37.23952 | 99.08 | 독도 |
import folium # 지도로 표출하기 위한 라이브러리
# 너비, 높이 크기가 800인 지도 생성
fig = folium.Figure(width=800, height=800)
# 지도의 위·경도 중심과 범위를 정해 맵을 생성합니다.
map = folium.Map(
location=[37.5, 127],
zoom_start=12,
min_zoom=6,
min_lat=30,
max_lat=44,
min_lon=123,
max_lon=132,
max_bounds=True,
).add_to(fig)
# dataframe의 데이터를 읽어 지도위에 마커를 추가합니다.
# marker를 클릭하면 팝업으로 지점명, 위경도와 해발고도를 표출하도록 html을 추가합니다.
for idx, row in stn_info.iterrows():
html=f"""
<h3>{row['STN_KO']}({idx})</h3>
<p>위도: {row['LAT']}</p>
<p>경도: {row['LON']}</p>
<p>해발고도: {row['HT']}m</p>
"""
iframe = folium.IFrame(html=html, width=170, height=170)
popup = folium.Popup(iframe, max_width=1000)
folium.Marker(
location=row[['LAT', 'LON']].tolist(),
popup=popup,
).add_to(map)
# 지도를 표출합니다.
fig
AWS 지점들 중 하나를 골라 시계열 그래프를 그려봅니다.
시계열 그래프를 표출하기 전, 그래프에 한글을 표출하려면 한글 폰트의 설정이 필요합니다.
만약, 한글 표출을 하지 않는다면 이 부분을 실행하지 않아도 좋습니다.
# Linux Ubuntu에서의 나눔폰트 설치와 캐시를 제거합니다.
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm -rf ~/.cache/matplotlib
import seaborn as sns # 그래프를 그리는 라이브러리
import matplotlib.pyplot as plt # 그래프를 그리는 라이브러리
# 한글을 출력하기 위해 사용하는 기본 폰트를 나눔고딕으로 설정합니다.
plt.rc("font", family = "NanumGothic")
sns.set_theme(font="NanumGothic", rc={"axes.unicode_minus": False}, style='darkgrid')
AWS자료는 크게 AWS2 포맷의 매 분자료 조회와 AWS 일 통계 자료 조회 2가지가 존재합니다.
먼저, AWS2 포맷의 매 분자료 시계열 그래프를 그립니다.
import requests # API 요청을 보내고 받는 라이브러리
import json # API 응답을 json형태로 가공하기 위한 라이브러리
# AWS2 매분자료 조회 API url
api_url = 'https://apihub.kma.go.kr/api/typ01/cgi-bin/url/nph-aws2_min'
# 요청인자로 시작시간, 종료시간, 지점번호, 표출형태, 도움말추가 여부가 있습니다.
# 1. 한 지점에 대해 최대 12시간을 조회할 수 있습니다.
# 시작시간과 종료시간을 년월일시분 형태로 입력합니다.
start_time = '202403011200'
end_time = '202403020000'
# 2. 앞에서 확인한 지점번호를 입력합니다.
stn_id = 108
# 3. 표출형태로 포트란과 엑셀에 적합한 형태를 입력할 수 있습니다.
# 여기선 변수별로 일정한 길이를 유지하는 기본값을 사용합니다.
# 4. 도움말추가 여부를 입력합니다.
# 파일 내에 각 필드에 대한 도움말을 확인할 수 있습니다.
help = 1
# API 요청인자들을 묶어 dictionary로 정의합니다.
api_parameters = {
'tm1': start_time,
'tm2': end_time,
'stn': stn_id,
'help': help,
'authKey': my_api_key
}
# API 응답을 저장할 파일 형식은 txt 파일로 저장합니다.
file_name = f"aws_min_data_{stn_id}_{start_time}_{end_time}.txt"
# 저장된 파일이 없는 경우에만 API를 요청해 파일을 다운로드합니다.
if not os.path.exists(file_name):
# API 요청인자와 함께 API 요청
response = requests.get(api_url, params=api_parameters)
# 잘못된 응답을 받을 경우 에러 메세지 출력
if response.status_code != 200:
raise requests.RequestException(
json.loads(response.content)['result']['message']
)
# 짧은 에러메세지를 응답으로 받은 경우 에러 메세지 출력
elif len(response.content) < 100:
raise ValueError(response.content.decode('euc-kr').split('#')[2])
else:
# 그외의 올바른 응답에 대해서만 UTF-8 txt 파일 형태로 저장합니다.
with open(file_name, 'wb') as f:
f.write(response.content.decode('euc-kr').encode('utf-8'))
print(f"{file_name} 파일 다운로드 완료")
aws_min_data_108_202403011200_202403020000.txt 파일 다운로드 완료
다운로드 받은 AWS 매 분자료 파일을 열어 자료를 확인할 수 있습니다.
자료를 읽어 시계열 그래프를 그립니다.
import pandas as pd # dataframe을 다루는 패키지
import numpy as np # 배열을 다루는 패키지
# 다운로드 받은 txt파일을 dataframe으로 변환합니다.
# 도움말을 비롯한 파일의 첫 22줄과 마지막 1줄을 제외하여 변환합니다.
# 각 필드는 공백으로 구분되어있으며 존재하는 모든 필드를 사용합니다.
aws_min_data = pd.read_csv(
file_name,
skiprows=22,
skipfooter=1,
sep=r'\s+',
names=['TIME', 'STN_ID', 'WD1', 'WS1', 'WDS', 'WSS', 'WD10', 'WS10', 'TA',
'RE', 'RN-15m', 'RN-60m', 'RN-12H', 'RN-DAY', 'HM', 'PA', 'PS', 'TD'],
parse_dates=['TIME'],
index_col=['TIME', 'STN_ID'],
engine='python'
)
# 도움말에 따르면 값이 -50 이하라면 관측이 없거나, 에러처리된 것을 표시합니다.
# 따라서 그 값을 NaN으로 변환합니다.
aws_min_data[aws_min_data <= -50] = np.nan
# dataframe의 첫 5개의 데이터를 표출합니다.
aws_min_data.head(5)
| TIME | STN_ID | WD1 | WS1 | WDS | WSS | WD10 | WS10 | TA | RE | RN-15m | RN-60m | RN-12H | RN-DAY | HM | PA | PS | TD |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024-03-01 12:00:00 | 108 | 292.2 | 3.4 | 297.4 | 9.0 | 293.7 | 4.6 | -3.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 33.3 | 1013.6 | 1024.6 | -16.9 |
| 2024-03-01 12:01:00 | 108 | 274.8 | 7.0 | 286.6 | 9.6 | 290.9 | 4.7 | -3.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 31.2 | 1013.6 | 1024.6 | -17.7 |
| 2024-03-01 12:02:00 | 108 | 278.1 | 5.3 | 292.6 | 7.3 | 288.9 | 4.5 | -2.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 32.8 | 1013.6 | 1024.6 | -16.9 |
| 2024-03-01 12:03:00 | 108 | 277.5 | 4.3 | 278.0 | 5.9 | 289.9 | 4.5 | -2.9 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 32.4 | 1013.6 | 1024.6 | -17.2 |
| 2024-03-01 12:04:00 | 108 | 274.1 | 6.6 | 275.4 | 11.0 | 287.6 | 4.6 | -3.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 30.9 | 1013.5 | 1024.5 | -17.9 |
# 필드 중 기온(TA), 이슬점온도(TD)를 표출합니다.
vars = ['TA', 'TD']
# 그래프를 그릴 크기를 지정합니다.
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
# 그래프의 제목을 지정합니다.
# 제목에 한글 지점명이 사용됩니다.
ax.set_title(
f"{stn_info[stn_info.index == stn_id]['STN_KO'].iloc[0]}({stn_id}) "
f"{aws_min_data.index.get_level_values('TIME')[0]} - {aws_min_data.index.get_level_values('TIME')[-1]}")
# 각 요소별로 시계열 그래프를 그립니다.
for var in vars:
sns.lineplot(aws_min_data, x=aws_min_data.index.get_level_values('TIME'), y=var, label=var, ax=ax)
# 그래프를 표출합니다.
plt.show()
# 필드 중 현지기압(PA), 해면기압(PS)을 표출합니다.
vars = ['PA', 'PS']
# 그래프를 그릴 크기를 지정합니다.
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
# 그래프의 제목을 지정합니다.
# 제목에 한글 지점명이 사용됩니다.
ax.set_title(
f"{stn_info[stn_info.index == stn_id]['STN_KO'].iloc[0]}({stn_id}) "
f"{aws_min_data.index.get_level_values('TIME')[0]} - {aws_min_data.index.get_level_values('TIME')[-1]}")
# 각 요소별로 시계열 그래프를 그립니다.
for var in vars:
sns.lineplot(aws_min_data, x=aws_min_data.index.get_level_values('TIME'), y=var, label=var, ax=ax)
# 그래프를 표출합니다.
plt.show()
# 필드 중 1분 평균 풍속(WS1)를 표출합니다.
# 그래프를 그릴 크기를 지정합니다.
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
# 그래프의 제목을 지정합니다.
# 제목에 한글 지점명이 사용됩니다.
ax.set_title(
f"{stn_info[stn_info.index == stn_id]['STN_KO'].iloc[0]}({stn_id}) "
f"{aws_min_data.index.get_level_values('TIME')[0]} - {aws_min_data.index.get_level_values('TIME')[-1]}")
# 풍속 시계열 그래프를 그립니다.
sns.lineplot(aws_min_data, x=aws_min_data.index.get_level_values('TIME'), y='WS1', label='WS1', ax=ax)
# 그래프를 표출합니다.
plt.show()
AWS 일 통계 자료를 조회하여 시계열 그래프로 표출합니다.
import requests # API 요청을 보내고 받는 라이브러리
import json # API 응답을 json형태로 가공하기 위한 라이브러리
# AWS 일 통계 자료 조회 API url
api_url = 'https://apihub.kma.go.kr/api/typ01/url/sfc_aws_day.php'
# 요청인자로 시작시간, 종료시간, 기상요소, 지점번호, 도움말추가 여부가 있습니다.
# 1. 시작시간과 종료시간을 년월일 형태로 입력합니다.
start_time = '20220201'
end_time = '20240301'
# 2. 기상요소를 입력합니다.
# rn_day(일강수량), ta_max(일 최고기온), ta_max_dif(최고기온차(오늘-어제)), ta_max_min(일교차),
# ta_min(일 최저기온), ta_min_dif(최저기온차(오늘-어제)), ws_max(일 최대풍속), ws_ins_max(일 최대 순간풍속),
# sd_tot_max(최심적설), sd_day_max(최심 신적설)를 입력할 수 있습니다.
obs = 'ta_min'
# 3. 앞에서 확인한 지점번호를 입력합니다.
stn_id = 108
# 4. 도움말추가 여부를 입력합니다.
# 파일 내에 각 필드에 대한 도움말을 확인할 수 있습니다.
help = 1
# API 요청인자들을 묶어 dictionary로 정의합니다.
api_parameters = {
'tm1': start_time,
'tm2': end_time,
'obs': obs,
'stn': stn_id,
'help': help,
'authKey': my_api_key
}
# API 응답을 저장할 파일 형식은 txt 파일로 저장합니다.
file_name = f"aws_day_data_{obs}_{stn_id}_{start_time}_{end_time}.txt"
# 저장된 파일이 없는 경우에만 API를 요청해 파일을 다운로드합니다.
if not os.path.exists(file_name):
# API 요청인자와 함께 API 요청
response = requests.get(api_url, params=api_parameters)
# 잘못된 응답을 받을 경우 에러 메세지 출력
if response.status_code != 200:
raise requests.RequestException(
json.loads(response.content)['result']['message']
)
# 짧은 에러메세지를 응답으로 받은 경우 에러 메세지 출력
elif len(response.content) < 100:
raise ValueError(response.content.decode('euc-kr').split('#')[2])
else:
# 그외의 올바른 응답에 대해서만 UTF-8 txt 파일 형태로 저장합니다.
with open(file_name, 'wb') as f:
f.write(response.content.decode('euc-kr').encode('utf-8'))
print(f"{file_name} 파일 다운로드 완료")
aws_day_data_ta_min_108_20220201_20240301.txt 파일 다운로드 완료
다운로드 받은 AWS 일 통계 파일을 열어 자료를 확인할 수 있습니다.
자료를 읽어 시계열 그래프를 그립니다.
import pandas as pd # dataframe을 다루는 패키지
# 다운로드 받은 txt파일을 dataframe으로 변환합니다.
# 도움말을 비롯한 파일의 첫 13줄과 마지막 1줄을 제외하여 변환합니다.
# 모든 필드를 사용하지 않고 시간, 값 필드만 사용합니다.
aws_day_data = pd.read_csv(
file_name,
skiprows=13,
skipfooter=1,
names=['TIME', 'STN_ID', 'LON', 'LAT', 'HT', 'VAL', 'STN_KO'],
usecols=['TIME', 'VAL'],
parse_dates=['TIME'],
index_col=['TIME'],
engine='python'
)
# dataframe의 첫 5개의 데이터를 표출합니다.
aws_day_data.head(5)
| TIME | VAL |
|---|---|
| 2022-02-01 | -2.7 |
| 2022-02-02 | -6.0 |
| 2022-02-03 | -6.9 |
| 2022-02-04 | -8.2 |
| 2022-02-05 | -9.7 |
# AWS 일 통계 자료 시계열 그래프를 표출합니다.
# 그래프를 그릴 크기를 지정합니다.
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
# 그래프의 제목을 지정합니다.
# 제목에 한글 지점명이 사용됩니다.
ax.set_title(
f"{stn_info[stn_info.index == stn_id]['STN_KO'].iloc[0]}({stn_id}) {obs} "
f"{aws_day_data.index[0]} - {aws_day_data.index[-1]}")
# 일 통계 자료 시계열 그래프를 그립니다.
sns.lineplot(aws_day_data)
# 그래프를 표출합니다.
plt.show()