本文介紹在ERA5氣象資料的官方網站中,手動下載、Python程式碼自動批次下載逐小時、逐日與逐月的ERA5氣象資料各類產品的快捷方法。
ERA5(fifth generation ECMWF atmospheric reanalysis of the global climate)是由歐洲中期天氣預報中心(European Centre for Medium-Range Weather Forecasts,ECMWF)開發和維護的一種全球範圍內的高解析度大氣再分析資料集,提供了多種氣象和氣候變數的連續、一致和高質量的資料。ERA5基於全球觀測資料、數值模型和物理引數化方案,透過資料同化和數值模擬的技術,對過去數十年(1940
年至今)的天氣狀況進行再構建和模擬,從而生成了高時空解析度的大氣和地表變數資料。ERA5提供了廣泛的氣象和氣候變數,包括溫度、溼度、風速、降水、雲量、地表輻射等。這些資料以固定的時間間隔(逐小時或逐月)和空間解析度(從數公里到數十公里)提供,可以用於氣候研究、天氣分析、氣候模型驗證、環境監測等眾多應用領域。
我們可以透過ERA5的官方網站,或者在谷歌地球引擎等平臺中,下載這一氣象資料。由於在谷歌地球引擎中下載這一資料相對而言比較麻煩,而且速度也並不算友好,我們這裡就主要介紹一下基於其官方網站,透過手動下載、Python程式碼下載等2
種方式,下載不同ERA5資料產品的方法。
首先,需要明確,我們一般常用的ERA5資料產品包括ERA5和ERA5-Land等2
種;其中,前者ERA5包含全球全部區域,而後者ERA5-Land僅包含全球的陸地區域,但是後者的空間解析度(最高是0.1
°)要高於前者(最高為0.25
°)。其次,在ERA5的官方網站,無論是上述的ERA5資料,還是ERA5-Land資料,我們透過手動下載或者程式碼下載的方式,都只能直接下載到逐小時或逐月的氣象資料;如果需要逐日的資料,大家可以在其官方網站提供的逐日統計資料計算工具中加以自動計算後手動下載,或者是在GEE中下載,再或者就是先下載逐小時的資料,然後自行撰寫程式碼批次計算逐日或者其他時間解析度的資料。當然,也還有一種用Python程式碼批次下載逐日資料的方法,但是那個方法的速度受到網路情況影響,我發現還不如我手動下載來得快,所以這裡就沒有介紹;之後如果用到這個程式碼了,就再和大家介紹一下。
同時,應該是在2024
年的09
月,ERA5資料官方網站做了改版,所以本文中的截圖有些和目前最新的網站可能有些不一致,但是整體操作流程是一樣的。後期我也會再更新一下本文中的截圖和具體細節部分。
0 準備工作
需要注意,只要不是選擇用上述逐日統計資料計算工具來下載資料,那麼無論我們選擇手動下載資料,還是用Python程式碼批次下載資料,都需要進行本部分的操作。
首先,我們找到需要下載的資料首頁,如下圖所示。
其次,如果我們沒有登入的話,需要在上圖右上角所示的位置登入或者註冊一下賬號。如下圖所示,我這裡就新註冊一個賬號。
完成註冊後,需要在我們註冊時填寫的郵箱中啟用一下賬號,如下圖所示。
隨後,登入賬號即可;如下圖所示。
接下來,我們回到剛剛的資料首頁中,選擇“Download data”選項;如下圖所示。隨後,選擇當前資料產品對應的產品型別,一般情況下,我們選擇第一個,也就是“Reanalysis”選項就可以。
隨後,選擇我們需要的氣象資料指標;可以在“Popular”這一欄選擇使用者常用的熱門指標,也可以自己依據需要在下面的類別中搜尋。如下圖所示。
接下來,選擇我們需要的年份和日期、時刻。這裡需要注意,對於不同的ERA5產品,其能一次性下載的數量也是不同的;如下圖所示,我這張圖下載的是ERA5資料,它就可以一次性選擇多年、多月的資料;但是後面我下載ERA5-Land資料,發現就不能多選年份和月份了,也就是說一次性只能下載一年中一個月的資料。這個可能是由於,ERA5-Land資料的空間解析度比較高,資料量更大,導致官方限制了ERA5-Land資料的一次性下載的限額。
隨後,選擇我們要下載的資料的空間覆蓋範圍,並選擇下載的資料格式(建議選擇NetCDF
格式)如下圖所示。
隨後,選擇下圖中左上方的“Accept terms”選項。
至此,我們就完成了資料下載的準備部分工作。
1 手動下載
首先,我們介紹一下手動下載的方法。手動下載其實就很簡單了,在完成上一個“Accept terms”選項步驟之後,上圖右下角就會變成下圖右下角所示的“Submit Form”選項;選擇這一項即可。這個的意思是,將我們前面配置好的下載資訊作為一個請求,發給伺服器,伺服器只要處理好這個請求,我們就可以開始下載了。
隨後,可以在新的介面中,看到我們剛剛發起的這個請求;如下圖所示。需要注意的是,此時我們只是將請求傳送給了官方網站的伺服器,伺服器還需要一段時間來處理我們的請求。
如下圖所示,在提交了一個請求之後,我們可以用前文的方法再提交其他的請求;這些請求都在“Your requests”介面中有所顯示。
當伺服器處理完畢我們的請求後,可以看到請求列表右側出現了“Download”選項,點選它就可以下載資料了。
一般情況下,伺服器處理我們請求的時間是不一定的,受到所要下載資料的大小、伺服器繁忙情況等影響;如下圖所示,我這兩個請求,一個是不到200 MB
的資料,一個是不到20 MB
的資料,分別經過了將近1
個小時、20
分鐘才請求完畢、可以下載,這個速度不算很快。
2 基於Python下載
接下來,我們介紹一下基於Python程式碼批次下載資料的方法。
首先,我們進入這個網頁;這裡需要注意,進入這個網頁後,首先需要透過如下的超連結,重新註冊一下;我感覺這個步驟的意義就是將我們註冊好的ERA5官方網站賬號再賦一個API許可權。
其中,如下圖所示,這裡的“Current password”也要輸入。
隨後,我們進入這個網站,並找到如下圖所示的網頁位置,將右側黑色區域內的全部資訊複製一下。
接下來,我們還需要配置一下Python程式碼中,用以下載ERA5資料的一個第三方庫cdsapi
,也就是ERA5官方開發的、專門用來供Python程式碼下載ERA5資料的庫。
配置cdsapi
庫也是很簡單的。我們直接在Python環境的命令列中分別輸入如下程式碼即可(如果大家沒有conda環境的話,可以用pip
來安裝,具體方法參考ERA5的官方網站即可)。其中,第一句程式碼用於在conda的配置檔案中新增一個新的軟體源channel
,即conda-forge
;conda-forge
是一個社群驅動的軟體源,提供了廣泛的開源軟體包,包括這個cdsapi
庫。第二句程式碼就是下載cdsapi
庫。
conda config --add channels conda-forge
conda install cdsapi
執行上述程式碼,如下圖所示。
我在第一次配置cdsapi
庫的時候,出現瞭如下圖所示的報錯;這種問題一般就是沒有管理員許可權導致的。
因此,選擇用管理員許可權開啟命令列,如下圖所示。
隨後,就配置好了cdsapi
庫;如下圖所示。
接下來,我們需要找到.cdsapirc
檔案,並將前面我們複製的url
和key
複製到其中。這裡需要注意,這個.cdsapirc
檔案,原理上在配置完畢cdsapi
庫後,會自動出現在我們電腦中的C:\Users\使用者名稱
資料夾內;如下圖所示。
但是實際上,有的時候我們在上述資料夾內是看不到這個檔案的;這樣的話,我們可以在這個資料夾內新建一個.txt
格式的文字檔案,並將我們複製的url
和key
複製到其中,如下圖所示。
隨後,將這個.txt
格式的文字檔案重新命名為.cdsapirc
,如下圖所示。
隨後,我們回到前面ERA5官方網站中,設定下載資料屬性的那個網站,並選擇最左側的“Show API request”選項;如下圖所示。
隨後,會出現一個Python程式碼;如下圖所示。我們將這個程式碼複製到自己的Python語言的IDE中,執行程式碼即可。
複製後如下圖所示。
隨後,執行上述複製後的程式碼,如下圖所示。可以看到,已經開始程式碼的下載了。
這裡需要注意,下載的氣象資料預設儲存在Python程式碼所在的資料夾中;如下圖所示。
此外,我們透過上述方式獲取的資料,其實也是一個向伺服器傳送的請求,也是需要首先處理請求、隨後在Python中開始下載的;我們同樣可以在“Your requests”頁面中看到我們透過Python下載資料的請求。下圖中,Python下載資料的請求處理資料為0
,這個是因為對於同一個資料,我先用手動下載的方式提交過一次請求了,伺服器處理之後我又用Python提交了一次請求,所以Python下載資料時就不用了再重新處理請求了。
同時,當時還簡單對比了一下手動下載和Python下載的速度差異,但是感覺兩者速度差異不大,都不算很快;但是如果用手動下載的方法,提交併處理完畢請求後,用IDM等下載軟體來下載,速度就會很快——至少比用瀏覽器自帶的下載功能,或者Python下載,要明顯快很多。
至此,大功告成。