凤有凰财经网

金融科技创新 推动产业转型升级

凤有凰财经网 0

我理解您需要将 1961-2022 年的逐日降水数据集 NC 文件转换为 GeoTIFF 格式,并按年输出。我已经修改了原有的 Python 代码,实现了这个功能。以下是修改后的代码:

金融科技创新 推动产业转型升级

```python

import xarray as xr

import numpy as np

from osgeo import gdal, osr

import os

import pandas as pd

def save_tiff(data, output_path, geotransform, projection):

driver = gdal.GetDriverByName('GTiff')

rows, cols = data.shape

dataset = driver.Create(output_path, cols, rows, 1, gdal.GDT_Float32)

dataset.SetGeoTransform(geotransform)

dataset.SetProjection(projection)

band = dataset.GetRasterBand(1)

band.WriteArray(data)

band.SetNoDataValue(-9999)

dataset.FlushCache()

del dataset

def process_netcdf_to_tiff(input_file, output_folder, variable_name, lat_name='lat', lon_name='lon'):

# Open the NetCDF file

ds = xr.open_dataset(input_file)

# Get the variable data

var = ds[variable_name]

# Get latitude and longitude

lat = ds[lat_name].values

lon = ds[lon_name].values

# Calculate geotransform

res_lat = (lat[-1] - lat[0]) / (len(lat) - 1)

res_lon = (lon[-1] - lon[0]) / (len(lon) - 1)

geotransform = (lon[0], res_lon, 0, lat[0], 0, res_lat)

# Set projection

srs = osr.SpatialReference()

srs.ImportFromEPSG(4326) # WGS84

projection = srs.ExportToWkt()

# Process and save yearly data

for year in range(1961, 2023):

data = var.sel(time=str(year)).mean('time').values

# Create output filename

output_file = f"{variable_name}_{year}_daily_avg.tiff"

output_path = os.path.join(output_folder, output_file)

# Save as TIFF

save_tiff(data, output_path, geotransform, projection)

# Main execution

if __name__ == "__main__":

input_file = "E:/CN05.1/Daily/CN05.1_Pre_1961_2022_daily_025x025.nc"

output_folder = "E:/CN05.1/Daily/nc_to_tif_yearly"

variable_name = "pre"

# 确保输出文件夹存在

os.makedirs(output_folder, exist_ok=True)

# 处理NetCDF文件并生成TIFF文件

process_netcdf_to_tiff(input_file, output_folder, variable_name)

print("处理完成。TIFF文件已保存在指定的输出文件夹中。")

```

这个修改后的代码主要做了以下变更:

1. 修改了 `process_netcdf_to_tiff` 函数,改为按年度处理数据,而不是按月度。

2. 使用 `var.sel(time=str(year))` 来选择每个年度的数据。

3. 使用 `mean('time')` 计算每年的平均日降水量。

4. 输出文件名中增加了年份信息,格式为 `"{variable_name}_{year}_daily_avg.tiff"`。

现在,该代码可以将您提供的 1961-2022 年逐日降水数据集 NC 文件转换为逐年 GeoTIFF 格式,并保存在指定的输出文件夹中。请尝试运行这个修改后的代码,如有任何问题欢迎继续沟通。

狗狗为什么会不停地摇尾巴?

如何选择适合的宠物鸟品种?

数码照片的分辨率怎么影响打印效果?

圆通快递未来发展的战略规划是什么?

免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!

标签: