You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写循环为ERA5 netCDF4文件每个格点生成逐日相对湿度txt文件

问题背景

我有一份从ERA5平台下载的netCDF4文件,内含格点化逐日相对湿度数据,相关参数如下:

  • 格点尺寸(X, Y):0.25 × 0.25
  • 数据时间范围:2001年1月1日至2018年12月31日

已完成的预处理代码如下:

from netCDF4 import Dataset
from osgeo import gdal
import os
import numpy as np
import pandas as pd

# 读取netCDF文件
data = Dataset(r'C:\Users\obarresi\Desktop\ERA\moisture\humidity.nc', 'r') # 替换为你的文件存储路径
data.variables.keys()
# 输出为:dict_keys(['longitude', 'latitude', 'time', 'r'])

# 指定输出路径
os.chdir('/Users/obarresi/Desktop/ERA/moisture') # 该路径为SWAT+文件的保存位置

# 提取变量
lat = data.variables['latitude'][:]
lon = data.variables['longitude'][:]
rh = data.variables['r'][:]

已确认相对湿度数组rh的维度为(时间步长, 纬度数, 经度数),单时间步下的打印示例如下:

print(rh)
# 输出示例:
# [[[ 75.06203241  75.03655509  76.3460895  ...  72.56525473  72.07099466
#     72.47353637]
#   [ 75.02381643  74.87350022  75.86711583 ...  70.91177645  70.62133496
#     70.7665557 ]
#   ...
#   [ 94.61587803  96.10375371  97.08208293 ...  70.53980753  71.31941362
#     72.21876313]]

需求说明

为每个格点单独生成TXT文件存储该点逐日相对湿度,文件格式要求如下:

  1. 第一行仅写入起始日期20010101
  2. 从第二行开始依次写入对应日期的相对湿度数值,保留两位小数

格式示例:

20010101
75.06
80.36
40.32
...
45.35

实现方案

直接遍历所有格点的经纬度索引,提取对应格点的全时间序列湿度值写入文件即可,代码如下:

# 提前创建输出目录,避免写入报错
output_dir = "./grid_rh_txt"
os.makedirs(output_dir, exist_ok=True)

# 获取各维度长度
n_time, n_lat, n_lon = rh.shape

# 遍历所有格点
for lat_idx in range(n_lat):
    for lon_idx in range(n_lon):
        # 获取当前格点的经纬度,用于命名文件避免重复
        current_lat = round(float(lat[lat_idx]), 4)
        current_lon = round(float(lon[lon_idx]), 4)
        file_path = os.path.join(output_dir, f"rh_lat{current_lat}_lon{current_lon}.txt")
        
        # 提取当前格点的全时间序列湿度值,保留两位小数
        grid_rh_series = rh[:, lat_idx, lon_idx].round(2)
        
        # 写入文件
        with open(file_path, "w", encoding="utf-8") as f:
            # 第一行写入起始日期
            f.write("20010101\n")
            # 逐行写入湿度数值
            for val in grid_rh_series:
                f.write(f"{val}\n")

如果格点数量极多觉得循环速度慢,可自行改用numpy向量化操作批量写入,普通场景下上述方案即可满足需求。


内容的提问来源于stack exchange,提问作者Luis Barresi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:27:01