一、代码说明
该代码用于将一个文件夹下所有nc数据文件转为tiff文件,具体文件如下图所示:
用ArcMap打开也是美美的。
二、完整代码展示
import xarray as xr
import os
import pandas as pd
input_path = r'F:\test\pre_to_tif' #nc文件所在文件夹
output_path = r'F:\test\pre_result' #输出结果所在文件夹
def nc_to_tiff(variable_name,lon_name,lat_name):
variable_data = data[variable_name]
variable_data.rio.set_spatial_dims(x_dim=lon_name, y_dim=lat_name, inplace=True)
variable_data.rio.write_crs('epsg:4326', inplace=True) #对数据进行投影
time_list = variable_data['time'].values
for time_index in range(len(time_list)):
variable_data_small = variable_data[time_index]
time = time_list[time_index]
time = pd.to_datetime(str(time))
timestr = time.strftime('%Y%m%d')
output_filename = f'{variable_name}_{timestr}.tiff'
output_filepath = os.path.join(output_path,output_filename)
variable_data_small.rio.to_raster(output_filepath)
#%%
file_list = os.listdir(input_path) #获得文件夹下所有nc数据文件
pre_name = file_list[0]
pre_file_path = os.path.join(input_path,pre_name)
data = xr.open_dataset(pre_file_path) #nc文件数据
print(data) #获取文件信息
#%%
for pre_name in file_list:
pre_file_path = os.path.join(input_path,pre_name)
data = xr.open_dataset(pre_file_path) #nc文件数据
variable_name = 'Precipitation_Flux' #选择变量名称
lon_name,lat_name = 'lon','lat' #nc文件中经纬度的名称
nc_to_tiff(variable_name,lon_name,lat_name)
print('处理完成!!')
data.close() #关闭数据集
①选择nc文件及输出文件所在的文件夹
②运行print(data)前的代码查询nc文件中的经纬度名称及变量名
③将查询得到的变量名、经纬度名填写好后即可运行文件。