批量下载ERA5数据
批量下载ERA5数据文章目录系列文章目录前言一、pandas是什么二、使用步骤1.引入库2.读入数据总结前言提示这里可以添加本文要记录的大概内容例如随着人工智能的不断发展机器学习这门技术也越来越重要很多人都开启了学习机器学习本文就介绍了机器学习的基础内容。提示以下是本篇文章正文内容下面案例可供参考一、ERA5数据介绍ERA5数据是ERA5官网二、下载步骤1.生成下载示例代码代码如下示例import cdsapi dataset reanalysis-era5-pressure-levels-monthly-means request { product_type: [monthly_averaged_reanalysis], variable: [geopotential], pressure_level: [300], year: [ 1971, 1972, 1973, 1974 ], month: [ 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 ], time: [00:00], data_format: grib, download_format: unarchived } client cdsapi.Client() client.retrieve(dataset, request).download()2.生成批量下载的链接代码如下示例import os import logging import argparse import cdsapi # Configure logging logging.basicConfig(filenamedownload.log, levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s) # Initialize CDS API client c cdsapi.Client() # Function to make CDS API request def cdsapi_request(var, year, areaNone): if area is None: # Set to global area: North, West, South, East area [90, -180, -90, 180] dataset derived-era5-single-levels-daily-statistics request { product_type: reanalysis, variable: [var], year: year, month: [f{m:02d} for m in range(1, 13)], day: [f{d:02d} for d in range(1, 32)], daily_statistic: daily_sum, time_zone: utc00:00, frequency: 1_hourly, area: area, format: netcdf } try: r c.retrieve(dataset, request) file_name fERA5_{var}_{year}_daily_sum.nc logging.info(fRequest prepared for variable: {var} year: {year}) return r.location, file_name except Exception as e: logging.error(fCDS API request failed for {var} {year}: {e}) raise # Save download links and filenames def save_download_info(var, data_path, data_name, output_dir): try: with open(os.path.join(output_dir, f{var}_data_path.txt), a) as f: f.write(data_path \n) with open(os.path.join(output_dir, f{var}_data_name.txt), a) as f: f.write(data_name \n) logging.info(fSaved link and file name for {var}: {data_name}) except Exception as e: logging.error(fError saving download info for {var}: {e}) raise # Main function def main(): parser argparse.ArgumentParser(descriptionGenerate ERA5 download links and filenames for each year.) parser.add_argument(-v, --variables, nargs, requiredTrue, helpList of variables to download) parser.add_argument(-y, --years, nargs, default[str(y) for y in range(1980, 2006)], helpYears to download) parser.add_argument(-o, --output_dir, defaultE:/dataset/ERA5/daily/globe, helpOutput directory for downloaded files) parser.add_argument(-a, --area, nargs4, typefloat, helpBounding box: N W S E (e.g. 90 -180 -90 180 for global)) args parser.parse_args() if not os.path.exists(args.output_dir): os.makedirs(args.output_dir) for var in args.variables: for year in args.years: try: url, file_name cdsapi_request(var, year, areaargs.area) save_download_info(var, url, file_name, args.output_dir) except Exception as e: logging.error(fError generating download info for {var} {year}: {e}) if __name__ __main__: main()调用示例python ERA5dowanload.py总结提示这里对文章进行总结例如以上就是今天要讲的内容本文仅仅简单介绍了pandas的使用而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。