python如何把多个1961年到2014年的格点txt文件写入nc文件
时间: 2023-11-17 11:05:29 浏览: 72
您好,您可以使用Python的NetCDF4库来将多个格点数据文件写入一个NC文件中。下面是一个示例代码,假设您的格点数据文件都存储在同一个文件夹中:
```python
import os
import numpy as np
from netCDF4 import Dataset
# 定义NC文件名和路径
nc_filename = 'grid_data.nc'
nc_path = '/path/to/nc/file/'
# 定义格点数据文件夹路径
grid_data_path = '/path/to/grid/data/'
# 定义时间维度
years = np.arange(1961, 2015)
# 创建NC文件
nc_file = Dataset(os.path.join(nc_path, nc_filename), 'w', format='NETCDF4')
# 创建维度
nc_file.createDimension('time', len(years))
nc_file.createDimension('lat', 360)
nc_file.createDimension('lon', 720)
# 创建变量
time_var = nc_file.createVariable('time', 'i4', ('time',))
lat_var = nc_file.createVariable('lat', 'f4', ('lat',))
lon_var = nc_file.createVariable('lon', 'f4', ('lon',))
data_var = nc_file.createVariable('data', 'f4', ('time', 'lat', 'lon',))
# 定义变量属性
time_var.units = 'years since 1961'
time_var.calendar = 'standard'
lat_var.units = 'degrees_north'
lon_var.units = 'degrees_east'
data_var.units = 'temperature'
# 写入时间数据
time_var[:] = years
# 写入经纬度数据
lat_var[:] = np.arange(-179.5, 180, 1)
lon_var[:] = np.arange(-179.5, 180, 1)
# 循环读取并写入格点数据
for i, year in enumerate(years):
# 读取数据文件
data_file = os.path.join(grid_data_path, f'{year}.txt')
data = np.loadtxt(data_file)
# 写入数据
data_var[i, :, :] = data.reshape(360, 720)
# 关闭NC文件
nc_file.close()
```
这段代码会将所有年份的格点数据文件读取并写入一个NC文件中,其中包括一个时间维度和一个三维数据变量。您可以根据需要修改代码中的变量属性和维度名称。
阅读全文