북극진동(Arctic Oscillation)을 겨울철 기온 전망에 쓰는 이유? 대기장으로 확인하기
·
대기과학/칼럼
기상청은 3개월 전망을 할 때 특히 겨울철 전망에서 엘니뇨/라니냐, 북극진동을 자주 언급합니다.엘니뇨/라니냐는 교과서에서 배울 정도로 대중적인 개념이지만 북극진동은 그렇지 않죠. 여기서 호기심이 더 많은 분이라면 북극진동은 차가운 북극의 공기를 가두는 역할을 하며음의 북극진동일 때 북극 공기를 가두던 제트가 남쪽으로 내려와 차가운 공기도 같이 내려오게 되니우리나라가 춥다, 한파도 발생한다는 설명을 보셨을겁니다. 여러 과학, 기상 뉴스에서 이런 과정으로 그림으로 잘 설명하고 있습니다.하지만 이런 뉴스에서 실제 대기장을 보여주기보다 전문가들의 자문을 받아 모식도 같은 느낌의 그림을 보여줄겁니다. NOAA에서 제공하는 월 북극진동 지수와 NCEP2 재분석 자료의 대기 변수를 이용해서 음의 북극진동일 때 대기장..
[python] 북극 진동 (Arctic Oscillation) 패턴 계산 & 그리기 4: 북극 진동 패턴 예쁘게 그리기
·
대기과학/프로그래밍
- 개요북극 진동 패턴은 다 계산했으니 최대한 NOAA에서 제공하는 그림과 비슷하게 그려봅니다.길게 설명할 건 없고 그냥 코드로 들어가죠.  - NOAA 그림 따라 그리기1. 칼라맵 따오기뭐 어려운 건 없고 NOAA 그림을 캡쳐해서 그림판으로 연 다음색 선택 >>> 색 편집으로 NOAA 그림 칼라맵 색상의 rgb값을 가져온겁니다.colors에 저장하고 mcolors를 이용해서 custom_cmap으로 저장합니다.import matplotlib.colors as mcolorscolors = [ (0.078431373, 0.392156863, 0.823529412), # -45 ~ -40 (0.156862745, 0.509803922, 0.941176471), # -40 ~ -35 (0...
[python] 북극 진동 (Arctic Oscillation) 패턴 계산 & 그리기 3: 북극 진동 패턴 구하기
·
대기과학/프로그래밍
- 개요북극 진동 패턴을 구하기 위해 자료 처리를 했으니 이제 북극 진동 패턴을 구해봐야겠죠.EOF 분석을 한 후 여기서 나온 시계열을 다시 hgtAno에 regression하여 regression map을 구해야 합니다.저번에 구한 hgtAno 변수부터 시작합니다. - EOF 분석 이론EOF는 Empirical Orthgonal Function으로 직역하면 경험직교함수입니다.자세히 설명하기에는 포스트를 하나 새로 쓸 정도로 분량이 많아서 대략적으로만 설명합니다. 대기과학에서 EOF 분석을 사용하는 이유는 특정 지역에서 가장 변동성이 큰 패턴, 다른 말로는 가장 설명을 잘하는 (explainable) 공간 패턴을 찾고, 그 공간 패턴이 어떤 식으로 변하는지(공간 패턴의 시계열) 확인하고자 함입니다.이 때..
[python] 북극 진동 (Arctic Oscillation) 패턴 계산 & 그리기 2: 자료 수집과 처리
·
대기과학/프로그래밍
- 개요이번 포스트에서는 저번에 정한 자료 수집, 자료 처리 목표를 달성합니다.목표는 자료 수집에서 1개, 자료 처리에서 3개로 총 4가지입니다. - 자료 수집목표 1. NCEP2 재분석 자료 수집: NOAA 사이트에서 월평균 1000 hPa 지위고도 다운로드 (2, 3)먼저 아래 링크로 들어갑니다.https://psl.noaa.gov/data/gridded/data.ncep.reanalysis2.html다음 그림의 설명대로 하시면 NCEP2 재분석 자료인 hgt.mon.mean.nc파일을 다운로드 받을 수 있습니다.  - 자료 처리목표 2. 자료 추출: 북위 20도 이상, 1979~2000년 (4, 8)nc파일을 읽기 위해 xarray 라이브러리를 씁니다.isel과 sel 그리고 slice를 이용하여 ..
[python] 북극 진동 (Arctic Oscillation) 패턴 계산 & 그리기 1: 목표 설정
·
대기과학/프로그래밍
- 개요본격적인 코딩을 하기 전에 무엇을 해야하는지 정리해보고자 합니다.NOAA 홈페이지에 북극 진동 패턴을 구하는 과정이 잘 정리되어있습니다. https://www.cpc.ncep.noaa.gov/products/precip/CWlink/daily_ao_index/history/method.shtml - 북극 진동 패턴 구하는 방법론 해석NOAA 홈페이지의 문단을 한 문장씩 읽으면서 북극 진동 패턴을 구하기 위한 정보들을 모아봅시다. To identify the leading teleconnection patterns in the atmospheric circulation, Emperical Orthogonal Function (EOF) was applied to the monthly mean 1000..
[python] 북극 진동 (Arctic Oscillation) 패턴 계산 & 그리기 0: 프롤로그
·
대기과학/프로그래밍
- 북극 진동 패턴이란?이제 슬슬 겨울이 다가오고 있습니다.기상, 기후 뉴스에서 매년 엘니뇨 이야기가 나오는 것처럼 겨울철에는, 특히 우리나라 한파가 올 때 "북극 진동"이라는 키워드를 심심치 않게 볼 수 있습니다. 그리고 뉴스에 나오는 논리는 대충 이럴겁니다.1. 북극의 찬 공기를 가두는 소용돌이가 있다.2. 평소에는 이 소용돌이가 북극의 찬 공기를 가두기 때문에 찬 공기는 고위도 지역에 머무른다.3. 이러저러한 이유로 소용돌이가 약해져서 원래는 고위도에 있던 북극의 찬 공기가 중위도로 남하한다.4. 북극의 찬 공기 때문에 우리나라의 온도는 급격히 떨어져서 한파가 발생한다. 소용돌이의 세기를 숫자로 표현한다면 소용돌이가 쌔면 숫자가 크고, 약하면 숫자가 작겠죠?소용돌이의 세기를 y축, 시간을 x축으로 ..
지도로 보는 우리나라 연도별 기상관측장비 (ASOS, AWS) 설치 현황
·
프로그래밍/시각화
예전에 지도에 지도에 ASOS 관측소 위치 표시하기라는 포스트를 쓴 적이 있습니다(https://climate-data-science.tistory.com/5)이 때는 파이썬의 matplotlib 라이브러리를 이용해서 ASOS 관측소의 위치를 한 장의 그림으로 그렸습니다. 이번에는 ASOS뿐만 아니라 AWS의 위치를 표시하되 이를 연도 순으로 차례차례 시각화해보았습니다.자료는 기상청에서 구했고, 관측이 종료된 관측소는 처음부터 제외했습니다.  " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스
3차원으로 보는 서울의 기후 나선
·
프로그래밍/시각화
- 개요예전에 matplotlib을 이용해서 여러 장의 png 파일을 만들고 이를 gif로 합쳐 서울의 기후 나선을 그렸습니다. 원래 NASA Climate Change 유투브에 나온 영상에서는 2차원의 기후 나선을 그려진 뒤 카메라가 3차원으로 움직입니다.하지만 matplotlib으로 3차원 처리를 하고 시간마다 특정 효과를 넣어 동영상으로 저장하기 어렵죠.그렇기 때문에 이러한 작업처리가 용이한 Javascript를 써서 시각화를 했습니다. - 자료 처리matplotlib 기후 나선 포스트에서는 월평균을 기온을 이용했습니다만1년이 12개월이므로 기후 나선은 12각형이 되므로 이쁘지가 않습니다.시간해상도를 올려서 일평균값으로 기후나선을 그리면 최소 365각형이 되어 원처럼 보입니다.Base period는..
[Matplotlib] 기후 나선 그리기 5: 애니메이션 만들기
·
대기과학/프로그래밍
- 개요이제 그림 그리는 법은 다 알았으니 애니메이션을 만들 차례입니다.여기서 애니메이션은 동영상 파일이 아니라여러 사진을 연속으로 보여주는 gif 파일로 저장됩니다.matplotlib의 함수를 쓰면 쉽게 gif 파일을 만들 수 있습니다. - matplotlib으로 그림 그리는 과정에 대한 이해matplotlib의 애니메이션을 만들어주는 함수를 이해하기 위해선matplotlib 라이브러리에서 그림이 어떤 과정으로 그려지는지 알 필요가 있습니다. 쉽게 설명하려고 비유를 했기 때문에 완벽한 설명을 아닙니다. 먼저 fig=plt.figure()는 그림을 그릴 때 쓰는 canvas를 준비하는 것입니다.ax=fig.add_subplot()은 canvas 내에서 그림을 그릴 도화지를 준비하는 과정입니다. 다음으로 ..