ecmwf-opendata
는 ECMWF 오픈 데이터의 다운로드를 단순화하는 패키지입니다. ECMWF의 Mars 언어를 사용하여 기존 ECMWF-API-CLIENT PYTHON 패키지와 유사한 기상 필드를 선택하여 데이터 세트에 대한 요청 기반 인터페이스를 구현합니다.
이 패키지를 사용하는 Jupyter 노트 컬렉션은 여기에서 제공됩니다.
ecmwf-opendata
Python 패키지는 PYPI에서 다음과 같이 설치할 수 있습니다.
$ pip install ecmwf-opendata
아래의 예는 평균 해수면 압력 ( msl
)에 대한 최신 10 일 예측을 data.grib2
라는 로컬 파일로 다운로드합니다.
from ecmwf . opendata import Client
client = Client ()
client . retrieve (
step = 240 ,
type = "fc" ,
param = "msl" ,
target = "data.grib2" ,
)
❗ 참고 : 이 패키지는 전체 데이터 세트의 하위 집합을 다운로드하려는 사용자를 위해 설계되었습니다. 각 데이터 파일의 많은 비율을 다운로드하려는 경우 전체 파일을 다운로드하고 로컬에서 원하는 데이터를 필터링하는 것이 더 효율적일 수 있습니다. 자세한 내용은 파일 이름 지정 컨벤션의 문서를 참조하십시오. 또는이 도구를 사용하여
date
,time
,step
,stream
및type
지정하여 전체 파일을 다운로드 할 수 있습니다. 하루 종일 모든 데이터는 726 GIB의 순서입니다.
클라이언트 객체의 생성자는 다음 옵션을 취합니다.
client = Client (
source = "ecmwf" ,
model = "ifs" ,
resol = "0p25" ,
preserve_request_order = False ,
infer_stream_keyword = True ,
)
어디:
source
연락 할 서버 이름이거나 완전히 자격을 갖춘 URL입니다. 가능한 값은 ECMWF의 서버에 액세스하는 ecmwf
또는 Microsoft의 Azure에서 호스팅 된 데이터에 액세스하기위한 azure
입니다. 기본값은 ecmwf
입니다.
model
데이터를 생성 한 모델의 이름입니다. 물리 중심 모델에는 ifs
사용하고 데이터 중심 모델에는 aifs
사용하십시오. aifs
현재 실험적이며 소량의 필드 만 생성합니다. 기본값은 ifs
입니다.
resol
데이터의 해상도를 지정합니다. 기본값은 0.25도 해상도의 경우 0p25
이며 현재 사용 가능한 유일한 해상도입니다.
preserve_request_order
. 이 플래그가 True
로 설정된 경우 라이브러리는 검색된 데이터를 요청에 의해 지정된 순서로 대상 파일에 쓰려고 시도합니다. 예를 들어, 요청이 param=[2t,msl]
지정하면 라이브러리는 필드 2t
대상 파일에서 먼저 있고 param=[msl,2t]
를 사용하면 필드 msl
먼저됩니다. 이것은 또한 다른 키워드에서도 작동합니다. ...,levelist=[500,100],param=[z,t],...
...,param=[z,t],levelist=[500,100],...
에 대한 다른 출력을 생성합니다. ...,param=[z,t],levelist=[500,100],...
플래그가 False
로 설정되면 라이브러리는 서버에 대한 HTTP 요청 수를 최소화하기위한 요청을 정렬하여 다운로드 속도가 빠릅니다. 기본값은 False
입니다.
infer_stream_keyword
. stream
키워드는 데이터를 생성하는 ECMWF 예측 시스템을 나타냅니다. 올바르게 설정하려면 ECMWF가 운영을 실행하는 방법에 대한 지식이 필요합니다. 이 부울이 True
로 설정되면 라이브러리는 요청의 나머지 부분을 기반으로 stream
키워드의 올바른 값을 유추하려고합니다. 모델이 ifs
인 경우 기본값이 True
입니다.
켈 참고 : 많은 수의 필드를 다운로드 할 때preserve_request_order
플래그를True
로 설정 하지 않는 것이 좋습니다. 서버에 추가로드가 추가됩니다.
Client.retrieve()
Client.retrieve()
메소드는 요청을 입력으로 가져 와서 서버에서 해당 데이터를 검색하고 사용자의 대상 파일에 작성합니다.
요청은 원하는 데이터를 선택하는 데 사용되는 키워드/값 쌍의 목록입니다. 주어진 키워드의 값 목록을 지정할 수 있습니다.
요청은 사전으로 지정할 수 있습니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
request = {
"time" : 0 ,
"type" : "fc" ,
"step" : 24 ,
"param" : [ "2t" , "msl" ],
}
client . retrieve ( request , "data.grib2" )
# or:
client . retrieve (
request = request ,
target = "data.grib2" ,
)
또는 retrieve()
메소드에 대한 인수로 바로 :
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
date
및 time
키워드는 예측 실행 날짜와 시간을 선택하는 데 사용됩니다 (아래 날짜 및 시간 참조). date
또는 date
및 time
이 지정되지 않은 경우 라이브러리는 가장 최근 일치하는 데이터에 대해 서버를 쿼리합니다. 다운로드 된 예측 date
와 time
retrieve()
메소드에 의해 반환됩니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
print ( result . datetime )
2022-01-23 00:00:00
인쇄 할 수 있습니다.
Client.download()
Client.download()
메소드는 Client.retrieve()
메소드와 동일한 매개 변수를 사용하지만 param
, levelist
또는 number
와 같은 키워드를 무시하고 서버에서 전체 데이터 파일을 다운로드합니다.
아래 예제는 최신 기간 24 단계에서 모든 필드를 다운로드하여 키워드 매개 param
무시합니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . download (
param = "msl" ,
type = "fc" ,
step = 24 ,
target = "data.grib2" ,
)
Client.latest()
Client.latest()
메소드는 Client.retrieve()
메소드와 동일한 매개 변수를 사용하고 데이터를 다운로드하지 않고 가장 최근 일치하는 예측 날짜를 반환합니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
print ( client . latest (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
))
2022-01-23 00:00:00
인쇄 할 수 있습니다.
참고 : 예측 시스템과 지정된 시간 단계에 따라 예측 시작 날짜 및 시간 후 7 시간에서 9 시간 사이에 데이터가 제공됩니다.
지원되는 키워드는 다음과 같습니다.
type
: 데이터 유형 (강제, 기본값으로 fc
).stream
: 예측 시스템 (모호하지 않은 경우 선택 사항). 위의 infer_stream_keyword
를 참조하십시오.date
: 예측이 시작되는 날짜.time
: 예측이 시작되는 시간.step
: 예측 시간은 몇 시간 또는 fcmonth
, 계절 예측의 시간 단계 (각각 의무, 기본값은 0
및 1
)입니다.그리고 (기본값이없는 모든 선택 사항) :
param
: 바람, 압력 또는 습도와 같은 기상 매개 변수.levtype
: 압력 레벨에서 단일 레벨 매개 변수와 매개 변수 중에서 선택하십시오.levelist
: 관련이있을 때 압력 수준 목록.number
: 관련된 경우 앙상블 회원 번호 목록.첫 번째 목록의 키워드는 액세스 할 파일을 식별하는 데 사용되는 반면 두 번째 목록은 실제로 다운로드해야 할 파일의 어떤 부분을 식별하는 데 사용됩니다. 일부 HTTP 서버는 파일의 여러 부분을 반환 할 수 있지만 다른 HTTP 서버는 파일에서 단일 부품 만 반환 할 수 있습니다. 후자의 경우 라이브러리는 서버에 대한 많은 HTTP 요청을 수행 할 수 있습니다. 전체 파일을 다운로드하려면 첫 번째 목록에서 키워드 만 제공하십시오.
날짜 및 시간 매개 변수는 예측의 시작 시간을 나타냅니다. 모든 날짜와 시간은 UTC로 표현됩니다.
요청에 날짜와 시간을 지정하는 몇 가지 방법이 있습니다.
날짜는 문자열, datetime.date
및 python datetime.datetime
객체를 사용하여 지정할 수 있습니다.
...
date = '20220125' ,
time = 12 ,
...
date = '2022-01-25' ,
time = 12 ,
...
date = '2022-01-25 12:00:00' ,
...
date = 20220125 ,
time = 12 ,
...
date = datetime . datetime ( 2022 , 1 , 25 , 12 , 0 , 0 ),
...
date = datetime . date ( 2022 , 1 , 25 ),
time = 12 ,
...
날짜는 0보다 작은 숫자로 주어질 수 있습니다. 이 경우, 현재 UTC 날짜 뺀 주어진 일과 동일합니다.
...
date = 0 , # today
date = - 1 , # yesterday
date = - 2 , # the day before yesterday
...
키워드 time
문자열 또는 정수 또는 Python datetime.time
객체로 주어질 수 있습니다. 아래의 모든 시간 값은 다음과 같습니다.
...
time = 12 ,
...
time = 1200 ,
...
time = '12' ,
...
time = '1200' ,
...
time = datetime . time ( 12 ),
...
시간에 대한 유효한 값 목록 |
---|
0, 6, 12 및 18 |
time
지정되지 않으면 시간이 날짜에서 추출됩니다.
...
date = '2022-01-25 12:00:00' ,
...
다음과 같습니다.
...
date = '2022-01-25' ,
time = 12 ,
...
time
키워드가 지정되면 요청에 주어진 시간이 지정됩니다.
...
date = '2022-01-25 12:00:00' ,
time = 18 ,
...
다음과 같습니다.
...
date = '2022-01-25' ,
time = 18 ,
...
앞에서 언급 한 바와 같이 date
또는 date
및 time
이 지정되지 않은 경우 라이브러리는 가장 최근에 일치하는 데이터에 대해 서버를 쿼리합니다. 다운로드 된 예측 date
와 time
retrieve()
메소드에 의해 반환됩니다.
date
키워드가없는 예 :
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
time = 12 ,
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
2022-01-23의 아침에 실행하면 2022-01-22 12:00:00
인쇄합니다.
date
및 time
키워드가없는 예 :
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
2022-01-23의 아침에 실행되면 2022-01-23 00:00:00
인쇄합니다.
ECMWF는 여러 예측 시스템을 실행합니다.
이러한 각 예측에는 키워드 stream
및 type
사용하여 언급되는 여러 유형의 제품도 생성됩니다.
type
에 대한 유효한 값은 다음과 같습니다.
HRES :
fc
: 예측.ENS :
cf
: 제어 예측.pf
: 교란 된 예측.em
: 앙상블 평균.es
: 앙상블 표준 편차.ep
: 확률.
stream
에 대한 유효한 값은 다음과 같습니다.
oper
: HRES -00 UTC 및 12 UTC의 대기 필드.wave
: HRES -00 UTC 및 12 UTC의 Ocean Wave Fields.enfo
: ENS의 대기 필드.waef
: ENS의 Ocean Wave Fields.scda
: HRES -06 UTC 및 18 UTC의 대기 필드.scwv
: HRES의 Ocean Wave Fields -06 UTC 및 18 UTC.? 참고 : 클라이언트의 플래그
infer_stream_keyword
True
로 설정된 경우 라이브러리는type
과time
에서 스트림을 추론합니다. 이 경우 Ocean Wave Products에 액세스하기 위해stream=wave
지정하면 다른 경우stream
값을 제공하지 않아도됩니다.
시간 단계를 선택하려면 step
키워드를 사용하십시오.
...
step = 24 ,
...
step = [ 24 , 48 ],
...
예측 시스템 | 시간 | 시간 단계 목록 |
---|---|---|
HRES | 00과 12 | 0 ~ 144 x 3, 144 ~ 240 x 6 |
ens | 00과 12 | 0 ~ 144 x 3, 144 ~ 360 x 6 |
HRES | 06과 18 | 0 ~ 90 x 3 |
ens | 06과 18 | 0 ~ 144 x 3 |
확률 - 즉각적인 날씨 사건 | 00과 12 | 0 ~ 360 x 12 |
확률 - 일일 기상 이벤트 | 00과 12 | 0-24 ~ 336-360 x 12 |
? 참고 :
step
지정하지 않으면 사용 가능한 모든 시간 단계가 반환됩니다.
매개 변수를 선택하려면 param
키워드를 사용하십시오.
...
param = "msl" ,
...
param = [ "2t" , "msl" ]
...
압력 레벨 매개 변수의 경우 levelist
키워드를 사용하십시오.
...
param = "t" ,
levelist = 850 ,
...
param = [ "u" , "v" ],
levelist = [ 1000 , 850 , 500 ],
...
? 참고 :
levelist
지정하지 않으면 사용 가능한 모든 레벨이 반환되며param
지정하지 않으면 사용 가능한 모든 매개 변수를 반환합니다.
압력 수준 목록 (HPA) |
---|
1000, 925, 850, 700, 500, 300, 250, 200 및 50 |
아래는 모든 매개 변수의 목록입니다.
압력 수준의 대기 분야
매개 변수 | 설명 | 단위 |
---|---|---|
디 | 분기 | S -1 |
GH | 지오 전위 높이 | GPM |
큐 | 특정 습도 | kg kg -1 |
아르 자형 | 상대 습도 | 비율 |
티 | 온도 | 케이 |
유 | 바람의 구성 요소 | MS -1 |
다섯 | v 바람의 구성 요소 | MS -1 |
VO | 와류 (상대) | S -1 |
단일 레벨의 대기 분야
매개 변수 | 설명 | 단위 |
---|---|---|
10U | 10 미터 U 바람 구성 요소 | MS -1 |
10V | 10 미터 v 바람 구성 요소 | MS -1 |
2T | 2 미터 온도 | 케이 |
MSL | 평균 해수면 압력 | 아빠 |
로 | 흘러넘치다 | 중 |
SKT | 피부 온도 | 케이 |
sp | 표면 압력 | 아빠 |
성 | 토양 온도 | 케이 |
STL1 | 토양 온도 수준 1 | 케이 |
TCWV | 총 열 수직 통합 수증기 | kg m -2 |
TP | 총 강수량 | 중 |
해양 파장들
매개 변수 | 설명 | 단위 |
---|---|---|
MP2 | 평균 제로 교차 파동 기간 | 에스 |
MWD | 평균파 방향 | 정도 진실 |
MWP | 평균 파동 기간 | 에스 |
PP1D | 피크 웨이브 기간 | 에스 |
swh | 결합 된 바람파와 팽창의 상당한 높이 | 중 |
앙상블 평균 및 표준 편차 - 압력 수준
매개 변수 | 설명 | 단위 | 레벨 |
---|---|---|---|
GH | 지오 전위 높이 | GPM | 300, 500, 1000 |
티 | 온도 | 케이 | 250, 500, 850 |
WS | 풍속 | MS -1 | 250, 850 |
앙상블 평균 및 표준 편차 - 단일 레벨
매개 변수 | 설명 | 단위 |
---|---|---|
MSL | 평균 해수면 압력 | 아빠 |
즉각적인 날씨 사건 - 대기 분야 -850 HPA
매개 변수 | 설명 | 단위 |
---|---|---|
PTSA_GT_1P5STDEV | 1.5보다 큰 온도 표준화 된 이상의 확률 표준 편차 | 비율 |
ptsa_gt_1stdev | 1 표준 편차보다 큰 온도 표준화 된 이상의 확률 | 비율 |
ptsa_gt_2stdev | 2 표준 편차보다 큰 온도 표준화 된 이상의 확률 | 비율 |
PTSA_LT_1P5STDEV | -1.5 미만의 온도 표준화 된 이상 확률 표준 편차 | 비율 |
ptsa_lt_1stdev | 온도 표준화 된 이상의 확률 -1 표준 편차 미만 | 비율 |
PTSA_LT_2STDEV | 온도 표준화 된 이상의 확률 -2 표준 편차 미만 | 비율 |
일일 날씨 이벤트 - 대기 분야 - 단일 레벨
매개 변수 | 설명 | 단위 |
---|---|---|
10FGG10 | 10m/s 이상의 10 미터 바람 돌풍 | 비율 |
10FGG15 | 최소 15m/s의 10 미터 바람 돌풍 | 비율 |
10FGG25 | 최소 25m/s의 10 미터 바람 돌풍 | 비율 |
TPG1 | 최소 1mm의 총 침전 | 비율 |
TPG10 | 최소 10mm의 총 침전 | 비율 |
TPG100 | 최소 100mm의 총 침전 | 비율 |
TPG20 | 최소 20mm의 총 침전 | 비율 |
TPG25 | 최소 25mm의 총 침전 | 비율 |
TPG5 | 5 mm 이상의 총 침전 | 비율 |
TPG50 | 50mm 이상의 총 침전 | 비율 |
즉각적인 날씨 사건 - 해양 파장
매개 변수 | 설명 | 단위 |
---|---|---|
SWHG2 | 2m 이상의 상당한 파도 높이 | 비율 |
SWHG4 | 최소 4m 이상의 상당한 파도 높이 | 비율 |
SWHG6 | 6m 이상의 상당한 파도 높이 | 비율 |
SWHG8 | 8m 이상의 상당한 파도 높이 | 비율 |
앙상블 예측의 개별 number
을 선택할 수 있습니다.
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = 1 ,
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = [ 1 , 10 , 20 ],
...
앙상블 번호 목록 |
---|
1 ~ 50 |
? 참고 :
number
지정하지 않으면 모든 앙상블 예측 멤버를 반환합니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "fc" ,
step = 24 ,
param = "2t" ,
target = "data.grib2" ,
)
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
...
step = 90 ,
...
❗ 참고 : 열대 사이클론 트랙 제품은 열대 사이클론이 관찰되거나 예측 될 때만 사용할 수 있습니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "pf" ,
param = "msl" ,
target = "data.grib2" ,
)
number
키워드 : number=1
을 사용하십시오.number=[num for num in range(1,51,2)]
사용합니다.type="cf"
사용하십시오. 열대 사이클론 트랙은 키워드 type="tf"
로 식별됩니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
step=240
step=144
로 바꿉니다. 앙상블 평균 및 표준 편차는 키워드 type="em"
으로 식별됩니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "em" ,
step = 24 ,
target = "data.grib2" ,
)
및 type="es"
각각 :
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "es" ,
step = 24 ,
target = "data.grib2" ,
)
앙상블 확률 제품은 키워드 type="ep"
로 식별됩니다. 확률 제품은 time=00
및 time=12
에만 사용할 수 있습니다.
두 가지 다른 제품을 사용할 수 있습니다.
일정한 압력 수준 850hpa에서 온도 표준화 된 이상의 확률은 12 시간마다 예측 단계에서 이용 가능합니다.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = [ i for i in range ( 12 , 361 , 12 )],
levelist = 850 ,
param = [
"ptsa_gt_1stdev" ,
"ptsa_gt_1p5stdev" ,
"ptsa_gt_2stdev" ,
"ptsa_lt_1stdev" ,
"ptsa_lt_1p5stdev" ,
"ptsa_lt_2stdev" ,
],
target = "data.grib2" ,
)
24 시간 동안 특정 임계 값을 초과하는 총 강수량 및 바람 돌풍의 확률은 단계 범위 0-24 ~ 336-360 x 12에 사용할 수 있습니다. 이것들은 다음을 사용하여 검색 요청에 지정됩니다 : step=["0-24", "12-36", "24-48"]
.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
steps = [ f" { 12 * i } - { 12 * i + 24 } " for i in range ( 29 )]
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = steps ,
param = [ "tpg1" , "tpg5" , "10fgg10" ],
target = "data.grib2" ,
)
ECMWF 오픈 데이터 데이터 세트에서 데이터를 다운로드함으로써 귀하는 해당 용어에 동의합니다 : Advribution 4.0 International (CC By 4.0). 그러한 용어에 동의하지 않으면 데이터를 다운로드하지 마십시오. 자세한 내용은이 페이지를 방문하십시오.
Apache License 2.0이 라이센스를 적용 할 때 ECMWF는 정부 간 조직으로서의 지위로 인해 부여 된 특권과 면제를 포기하지 않으며 관할권에 제출하지 않습니다.