---
# System prepended metadata

title: Reanalysis data 下載教學

---

# Reanalysis data 下載教學

---
Author : 蘇奕翰
s1000210hank@icloud.com

:::info

**早安 這是再分析資料的下載手冊
內容僅包含再分析資料的下載 並不提供使用再分析資料的方法**
:::


---
[toc]

# 網頁註冊以及金鑰設置
## 步驟
1. 以下是**ECMWF**官網的再分析資料列表 可以在裡面看到不同的再分析資料
https://www.ecmwf.int/en/forecasts/datasets/browse-reanalysis-datasets
建議進行註冊 才可以使用除了常用的**ERA5**以外的資料
紅框標示處會進入到該再分析資料所提供的產品區
與下面黑底方塊中 由ECMWF直接提供的資料不同
![](https://i.imgur.com/i8snog3.png)

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

3. 註冊後該處會顯示一串**網址**以及一串**API**如紅框處
暫時先別關閉畫面 進行主機上的API金鑰設置
![](https://i.imgur.com/upjFjio.png)

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
![](https://i.imgur.com/2nyZJk3.png)



6. 回到首頁 收尋框中輸入**ERA5**後可以得到以下產品
並自行尋找所需要的產品
點擊進去後即可進行下載
![](https://i.imgur.com/gxoRCrd.png)

---
# 使用 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"] 
                                         時間 勿改動
			}
	}
```
![](https://i.imgur.com/l1TsSbX.png)


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
