读知识首页 >> 动漫游戏 >> 知识详情

解密动漫游戏里的商业模式,原来如此

2024-07-23

好的,我理解了您的需求。我已经根据您提供的信息修改了之前的代码,能够将1961-2022年逐日降水数据集nc文件转换为逐年的TIFF文件。以下是修改后的代码:

动漫游戏里的商业模式,原来如此

```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=f'{year}').values

# Create output filename

output_file = f"{variable_name}_{year}_daily.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_daily"

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` 函数中的循环从 `var.time` 改为 `range(1961, 2023)`,这样可以逐年处理数据。

2. 将输出文件名中的日期格式改为 `{variable_name}_{year}_daily.tiff`,以体现每年的逐日数据。

3. 其他部分保持不变。

运行这个代码后,将会在 `E:/CN05.1/Daily/nc_to_tif_daily` 文件夹下生成1961到2022年每年的逐日降水数据的TIFF文件。

标签:商业模式