爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 243|回复: 0

[netcdf] SODA2.2.4下载流程-python批量

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一大碗年糕 于 2025-4-29 11:50 编辑

SODA2.2.4的时间覆盖较长(1871-2010,NOAA-20CRv2驱动的好像是),所以有时候相较SODA3还是要用这个版本
目前IRI/LDEO Climate Data Library上的SODA2.2.4已经没有了:http://iridl.ldeo.columbia.edu/SOURCES/.CARTON-GIESE/.SODA/.v2p0p2-4/

上显示Error 404: Page Not Found

需要从http://apdrc.soest.hawaii.edu/datadoc/soda_2.2.4.php上下载,但是网站上LAS等选取界面很乱,这里采用python+OPeNDAP批量下载:
  1. import xarray as xr
  2. import time
  3. import numpy as np
  4. from dask.diagnostics import ProgressBar
  5. from joblib import Parallel, delayed
  6. # 数据地址
  7. url = "http://apdrc.soest.hawaii.edu:80/dods/public_data/SODA/soda_pop2.2.4"
  8. ds = xr.open_dataset(url)
  9. print(ds)
复制代码


<xarray.Dataset> Size: 324GB
Dimensions:  (time: 1680, lev: 40, lat: 330, lon: 720)
Coordinates:
  * time     (time) datetime64[ns] 13kB 1871-01-15 1871-02-15 ... 2010-12-15
  * lev      (lev) float64 320B 5.01 15.07 25.28 ... 5.125e+03 5.375e+03
  * lat      (lat) float64 3kB -75.25 -74.75 -74.25 -73.75 ... 88.25 88.75 89.25
  * lon      (lon) float64 6kB 0.25 0.75 1.25 1.75 ... 358.2 358.8 359.2 359.8
Data variables:
    temp     (time, lev, lat, lon) float32 64GB ...
    salt     (time, lev, lat, lon) float32 64GB ...
    u        (time, lev, lat, lon) float32 64GB ...
    v        (time, lev, lat, lon) float32 64GB ...
    w        (time, lev, lat, lon) float32 64GB ...
    taux     (time, lat, lon) float32 2GB ...
    tauy     (time, lat, lon) float32 2GB ...
    ssh      (time, lat, lon) float32 2GB ...
Attributes:
    title:          SODA v2.2.4 monthly means
    Conventions:    COARDS\nGrADS
    dataType:       Grid
    documentation:  http://apdrc.soest.hawaii.edu/datadoc/soda_2.2.4.php
    history:        Wed Apr 23 10:40:58 HST 2025 : imported by GrADS Data Ser...
根据自己所需变量定义下载函数,并行下载
  1. var = 'u'
  2. season = ['MAM','JJA','SON','DJF']
  3. S = 1
  4. def download_SODA(year):
  5.     subset = ds[var].sel(time=slice(f'{year}-01-01', f'{year}-12-31')).groupby("time.season")[f'{season[S]}'].sel(lev=slice(5,1000)).sel(lat=slice(-40,40)).sel(lon=slice(30,300))
  6.     start_time = time.time() # 开始计时
  7.     output_file = f"SODA2.2.4_{var}_{year}_{season[S]}.nc"
  8.     output_dir = "/data/usb0/DATA_obs/OCEAN/SODA2.2.4/"
  9.     subset.to_netcdf(output_dir + output_file)
  10.     elapsed = time.time() - start_time
  11.     print(f"下载完成!用时:{elapsed:.2f} 秒")
  12. Parallel(n_jobs=4)(delayed(download_SODA)(year) for year in range(1900, 2011))
复制代码





密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表