# Reanalysis data 下載教學
---
Author : 蘇奕翰
s1000210hank@icloud.com
:::info
**早安 這是再分析資料的下載手冊
內容僅包含再分析資料的下載 並不提供使用再分析資料的方法**
:::
---
[toc]
# 網頁註冊以及金鑰設置
## 步驟
1. 以下是**ECMWF**官網的再分析資料列表 可以在裡面看到不同的再分析資料
https://www.ecmwf.int/en/forecasts/datasets/browse-reanalysis-datasets
建議進行註冊 才可以使用除了常用的**ERA5**以外的資料
紅框標示處會進入到該再分析資料所提供的產品區
與下面黑底方塊中 由ECMWF直接提供的資料不同

2. 點擊進入**Climate Data Store**的網頁後會看到以下畫面
https://cds.climate.copernicus.eu/cdsapp#!/home
首先需要先點擊右上角進行註冊
註冊完後點擊畫面紅框處 進入**API**的說明文中

3. 註冊後該處會顯示一串**網址**以及一串**API**如紅框處
暫時先別關閉畫面 進行主機上的API金鑰設置

4. 若為**Linux系統**則按照左邊的提示進行操作
若為**Windows系統**則依照以下步驟進行
1. 開啟**命令提示字元**
* `window + R` 後輸入 `cmd`
2. 輸入 `cd %USERPROFILE%` ==移動至使用者資料夾==
3. 輸入 `echo url: https://cds.climate.copernicus.eu/api/v2 >> .cdsapirc`
4. 複製API
5. 輸入 `echo 複製的API >> .cdsapirc`
6. 輸入 `type .cdsapirc` ==確認上述文字有成功輸入==
[*Reference*](https://confluence.ecmwf.int/display/CKB/How+to+install+and+use+CDS+API+on+Windows)
5. 進入以下頁面進行認證
https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products

6. 回到首頁 收尋框中輸入**ERA5**後可以得到以下產品
並自行尋找所需要的產品
點擊進去後即可進行下載

---
# 使用 pyhton 下載
:::success
**使用程式碼下載較為方便 不需要進入頁面即可下載
這邊則以 python 作為範例
前一個章節的帳號註冊以及金鑰設置仍然為必要手續
必須先完成才可以使用程式碼下載**
**若尚未成為 python 使用者
可以參考這篇說明文件 [Python 初學者使用手冊](/sYA718fjS4GSb_OQpZRBhA)**
:::
## 步驟
1. 下載 [範例程式碼](https://drive.google.com/drive/folders/1ZbA7vnHD5BB5_HacdHtrC0jrPrqmybFj?usp=sharing)
內含 `reanalysis_download.py`以及 `__example_meta.json`
2. 進入命令提示字元 下載 **cdsapi**, **pandas**
* 輸入 `conda install -c conda-forge cdsapi`
* 輸入 `conda install -c anaconda pandas`
3. `__example_meta.json` 為範例設定檔 以下將逐行解釋
最下面的表格是設定檔的參考網站 : [API 名稱及其他參數設定](https://confluence.ecmwf.int/display/CKB/Climate+Data+Store+%28CDS%29+API+Keywords)
```json=
{
首行可以自己改名稱 代表意義為官網上看到的產品名稱 也可以改為自己的計畫名稱
"ERA5 monthly averaged data on single levels from 1979 to present" : {
"__info" : "set start time and end time"
"start" : "2020-05-01" 下載資料的開始時間
"final" : "2021-03-01" 下載資料的結束時間
這行是該產品的 API名稱 不可以改動 由提供的網址查詢 (Datasets Name)
"__info" : "the product's API name, can not rewrite",
"data_name" : "reanalysis-era5-single-levels-monthly-means",
該產品的資料時間解析度 目前有每月以及每小時的資料
"__info" : "data frequency, monthly, daily or hourly",
"data_freq" : "monthly",
資料最重要的設定參數 以下的參數都可以在提供的網址查詢
"__info" : "year, month, time are the keywords you can not change",
"setting" : {
產品的型式 必須與上面的 data_name 對應
"product_type" : "monthly_averaged_reanalysis",
"format" : "netcdf", 資料格式
"area" : [25,115,20,125], 資料範圍 (N,W,S,E)
"grid" : [0.25,0.25], 資料網格大小 (經,緯)
可用的變數 點擊 Datasets Name 的名稱即可連結到變數列
"variable" : ["10m_u_component_of_wind",
"mean_sea_level_pressure"],
"year" : "YYYY", 年分 勿改動
"month" : "MM", 月份 勿改動
"time" : ["00:00", "01:00", "02:00", "03:00",
"04:00", "05:00", "06:00", "07:00",
"08:00", "09:00", "10:00", "11:00",
"12:00", "13:00", "14:00", "15:00",
"16:00", "17:00", "18:00", "19:00",
"20:00", "21:00", "22:00", "23:00"]
時間 勿改動
}
}
```

4. `reanalysis_download.py` 為主程式
需在最下方輸入兩個參數後才可以執行
```python=
if __name__=='__main__':
## set project name
## the only two parameters you HAVE TO type in this code
# 產品名稱或是自己的計畫名稱 與設定檔的第一行相同
PROJ_NAME = ""
# 資料要下載到的地方 預設會在程式所在位置建立新資料夾存放資料
OUT_PATH = pth('.')
run(PROJ_NAME,OUT_PATH)
```
5. 於命令提示字元執行主程式
* `python reanalysis_download.py`
6. 若出現 **SSH error** 等字眼 則先執行以下命令
* `conda activate base`
## 範例
:::success
計畫名稱為 ***<font color="#00a3d9">test</font>***
下載從 ***<font color="#00a3d9">2021-02-01 00:00:00</font>*** 到 ***<font color="#00a3d9">2021-02-07 00:00:00</font>*** 的 ***<font color="#00a3d9">hourly</font>*** 資料
要下載的資料名稱為 ***<font color="#00a3d9">reanalysis-era5-pressure-levels</font>***
以 ***<font color="#00a3d9">netcdf4</font>*** 的格式下載
資料的形式為 ***<font color="#00a3d9">reanalysis</font>***
範圍從 ***<font color="#00a3d9">$24^oN$</font>*** ~ ***<font color="#00a3d9">$25^oN$</font>***, ***<font color="#00a3d9">$120^oE$</font>*** ~ ***<font color="#00a3d9">$121^oE$</font>***
空間解析度為 ***<font color="#00a3d9">$0.25^o$</font>*** X ***<font color="#00a3d9">$0.25^o$</font>***
需要使用的變數有 ***<font color="#00a3d9">Specific humidity</font>*** 以及 ***<font color="#00a3d9">Temperature</font>***
使用的壓力層為 ***<font color="#00a3d9">1,2,...,950,975,1000</font>***
:::
```json=
{
"test" : {
"__info" : "set start time and end time",
"start" : "2021-02-01 00:00:00",
"final" : "2021-02-07 00:00:00",
"__info" : "the product's API name, can not rewrite",
"data_name" : "reanalysis-era5-pressure-levels",
"__info" : "data frequency, monthly, daily or hourly",
"data_freq" : "hourly",
"__info" : "year, month, time are the keywords you CAN NOT change",
"setting" : {
"product_type" : "reanalysis",
"format" : "netcdf",
"area" : [25,120,24,121],
"grid" : [0.25,0.25],
"variable" : ["Specific humidity","Temperature"],
"pressure_level" : ["1","2","3","5","7","10","20","30","50","70",
"100","125","150","175","200","225","250","300",
"350","400","450","500","550","600","650","700",
"750","775","800","825","850","875","900","925","950","975","1000"],
"year" : "YYYY",
"month" : "MM",
"day" : "DD",
"time" : ["00:00", "01:00", "02:00", "03:00",
"04:00", "05:00", "06:00", "07:00",
"08:00", "09:00", "10:00", "11:00",
"12:00", "13:00", "14:00", "15:00",
"16:00", "17:00", "18:00", "19:00",
"20:00", "21:00", "22:00", "23:00"]
}
}
}
```
---
# Reference
https://confluence.ecmwf.int/display/CKB/General+articles