[ERA5 재분석 자료] 1. API를 활용한 다운로드 (2024년 10월 수정)
·
대기과학/프로그래밍
최근 ECMWF의 API에 관한 업데이트가 있었습니다.이전에 잘 받아지던 분들은 과거에 쓰던 API key 대신 새로운 API key를 써야합니다.또한 url 도 url: https://cds.climate.copernicus.eu/api/v2가 아닌 url: https://cds.climate.copernicus.eu/api를 써야합니다. - 개요대기과학 분야에서 관측을 제외하면 아마 재분석 자료를 가장 많이 쓸겁니다.재분석 자료를 간단하게 설명하자면 적당한 규칙으로 관측 자료와 모델 자료를 등간격 격자 자료로 합친 것입니다. 관측 자료는 지구 모든 곳에 관측소에 있는 것이 아니기 때문에 관측하지 못하는 공간이 있습니다.반대로 모델 자료에서는 모든 지점의 대기 변수 값을 얻을 수 있지만 관측보다 정확하..
[MetPy] Vertical cross section, 연직단면 그리기
·
대기과학/프로그래밍
- 개요기상 자료의 차원은 시간, 연직층, 위도, 경도로 많아야 4개입니다.특정 시간, 특정 층에서 기상 변수의 수평 분포(위도, 경도)는 matplotlib의 contour, contourf만 잘 쓰면 쉽게 그릴 수 있습니다. 하지만 특정 경로에서 대기 변수의 연직 분포를 알고 싶다면 난이도가 많이 올라갑니다.정공법으로 연직단면을 그리려면 먼저 경로를 정하고, 연직층마다 이 경로의 좌표(위도, 경도)에 맞게 interpolation을 하여 각 층에서 경로의 좌표에 따른 변수값을 계산해야 합니다. 이런 코드를 짠다니 생각만 해도 머리가 아픕니다.다행히도 MetPy는 특정 경로의 연직단면을 얻을 수 있는 함수를 제공하고 있습니다. - 자료 읽기이번에는 NCEP2 재분석 자료의 30년 평균 월평균 온도를 사..
[MetPy] 단열선도 그리기
·
대기과학/프로그래밍
- 개요전 대기과학 분야의 그림 중에 단열선도가 직접 그리기 가장 어렵다고 생각합니다.파이썬을 쓰기 전에도 물론 직접 그리진 않고, NCL에서 제공하는 단열선도로 그림을 그렸죠.파이썬을 쓰는 지금은 MetPy 라이브러리로 단열선도를 그리면 됩니다.  이번 포스트에서는 MetPy 라이브러리의 parcel_profile_with_lcl_as_dataset 함수를 이용해서 단열선도를 그려보겠습니다.아래의 예제 코드를 참고했으며, 저는 온도, 이슬점과 관련된 변수만 그릴 것입니다.단열선도 오른 편에 풍향, 풍속도 나타낼 수 있습니다.https://unidata.github.io/MetPy/latest/examples/plots/Sounding_LCL_Dataset.html#sphx-glr-examples-plo..
[MetPy] 튜토리얼: 알아보고 설치해보자
·
대기과학/프로그래밍
MetPy의 홈페이지인 https://unidata.github.io/MetPy/latest/index.html에 있는 다양한 글을 정리해보았습니다.- MetPy란?MetPy는 파이썬에서 사용 가능한 오픈 라이브러리로 기상 자료를 읽고, 시각화하고, 계산하는 다양한 기능을 제공합니다.National Science Foundaion(NSF)과 Unidata가 MetPy 개발을 지원했다고 합니다. 미국 정부의 과제를 담당하는 기구인 NSF에서 경제적 지원을 받았고,University Corporation의 산하 조직인 Unidata에서 실제 개발 업무를 맡았습니다.좀 더 찾아보니 파이썬 netCDF4 라이브러리 개발도 Unidata에서 진행하는 프로젝트이며,대기과학과 파이썬에 관한 여러 프로젝트를 하고 있어..
지도에 바람 벡터 그리기
·
대기과학/프로그래밍
- 개요대기과학을 하다보면 주로 속도, 온도, 습도와 같은 변수를 다룹니다.속도는 운동방정식, 온도는 열역학방정식, 습도(혹은 비습)는 강수 때문에(습윤 대기로 가정하면 지배방정식에 들어가지만 대학원 수준에서도 웬만해선 건조 대기로 배움) 이런 변수들을 분석하게 되죠. 이런 변수를 지도에 시각화하려면?온도, 습도와 같은 변수는 선(contour)이나 음영(shading)을 사용합니다.하지만 속도의 경우, x방향, y방향 중 한 방향의 속도(속력)은 선과 음영으로 시각화 가능하지만보통은 x, y방향의 속도를 벡터로 표현해 풍속과 풍향이 한 눈에 보이도록 시각화합니다. 시각화할 때 구글에서 남이 짠 코드를 찾아서 복사, 붙여넣기하는 것이 정석인데선과 음영을 그린 코드는 많지만 바람 벡터에 대한 코드는 적고,..
[기상청 API][ASOS 시간(hourly) 자료 다운로드] 2. 장기간 자료 다운로드 받기
·
대기과학/프로그래밍
- 개요저번 포스트에서는 기상청 API 허브에서 제공하는 기본 URL로 ASOS 시간 자료를 다운로드 했습니다.그냥 기본 URL의 변수인 tm1(시작기간), tm2(종료기간)을 설정해서 ASOS 시간 자료를 다운로드 받아보면ASOS 시간 자료는 최대 30일까지 받을 수 있다는 문제가 있습니다.31일까지면 좋을텐데 30일이 최대입니다. ㅠㅠ 그러므로 장기간의 ASOS 시간 자료를 다운로드 받으려면 파이썬 코드로 한 번에 다운 받는 자료의 길이를 30일 이내로 여러 번 API를 요청해야 합니다. 이번 포스트에서는  # 1. 다운 받을 길이를 설정하고 이를 30일 이내의 기간으로 끊어서 tm1과 tm2을 설정하는 부분# 2. 위의 함수를 기반으로 API를 여러 번 요청해서 하나의 파일로 저장하는 부분이렇게 두..
[기상청 API][ASOS 시간(hourly) 자료 다운로드] 1. 기본 제공 URL 사용
·
대기과학/프로그래밍
- 개요ASOS 일(daily) 자료는 기상자료개방포털에서 손쉽게 받을 수 있습니다.최대 10년치를 한 번에 다운로드 받을 수 있으니 50년치를 받더라도 수작업으로 5번만 다운로드 받으면 되거든요.하지만 시간(hourly) 자료는 손으로 받기에는 작업량이 너무 많습니다.그러므로 파이썬 코드를 이용해 기상청 API 허브(https://apihub.kma.go.kr/)에서 ASOS 시간 자료를 받아보고자 합니다. 이번 포스트에서는 기상청 API에서 제공하는 기본 URL을 사용해봅니다.다음 포스트에서는 이 URL을 변경하고, 일정 기간의 ASOS 자료를 csv 파일로 저장하는 법을 알아보겠습니다.   - API로 ASOS 자료 다운 받기1. 기상청 API 허브 가입하기API를 이용해 자료를 다운로드 받으려면 ..
관측 자료의 결측을 시각화하기
·
대기과학/프로그래밍
- 개요관측 자료를 다루다보면 특정 기간에 자료가 아예 없거나 결측이라고 표기된 경우가 많습니다.특히 결측이 간헐적으로 있을 때 일일이 결측 기간을 확인하기 어렵습니다.이번 포스트에서는 이런 문제를 해결하고자 결측 기간을 확인하기 위한 시각화를 해보겠습니다.- 데이터 처리ASOS나 AWS는 결측값이 많이 없기 때문에 결측이 잦은 일단위 강 수위 자료의 결측값을 시각화하겠습니다.import pandas as pdimport numpy as npimport glob""" 강 수위 자료(excel) 읽기 (시간간격은 daily) """inpath = '' # 자료의 경로 입력files = os.listdir(inpath)fns = [file for file in files if file.endswith('.x..
[folium] matplotlib을 활용한 온도 공간 분포 시각화
·
대기과학/프로그래밍
- 개요folium에서는 Choropleth이나 Polygon을 이용하여 지도에 선(contour)을 그리고, 특정 색상(shading)으로 칠할 수 있습니다.하지만 folium에서 이를 쓰려면 각 polygon의 위도, 경도값을 알아야 합니다.만약 특정 지역마다 온도값을 표현한다면 각 지역의 polygon 정보를 구한 뒤 folium을 사용해서 온도의 공간 분포를 시각화해도 됩니다.문제는 각 위도, 경도 정보를 격자형태로 가진 온도를 시각화할 때 생깁니다. Matplotlib 라이브러리로 위도, 경도의 차원인 온도를 그린다고 쳐봅시다.Matplotlib에서 contour나 contourf에 위도, 경도, 온도 값을 적당히 넣어주고 plot.show()를 치면 알아서 화면에 선도 그려주고 색도 칠해줍니다..