41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
import os
|
|
import pandas as pd
|
|
import netCDF4 as nc
|
|
import numpy as np
|
|
from logzero import logger
|
|
target_lon = ['120.85', '121.15']
|
|
target_lat = ['29.6', '28.8']
|
|
|
|
|
|
def trans2csv(file_list):
|
|
file_list.sort()
|
|
par_list = []
|
|
cols = []
|
|
for file_name in file_list:
|
|
logger.info(file_name)
|
|
try:
|
|
file = file_name.split('\\')[1]
|
|
date_time = file.split('_')[1] + ' ' + file.split('_')[2]
|
|
print(date_time)
|
|
nc_data = nc.Dataset(file_name)
|
|
lat = nc_data['latitude'][:] # 纬度
|
|
lon = nc_data['longitude'][:] # 经度
|
|
lat_str = list(map(lambda x: str(round(x, 2)), np.asarray(lat)))
|
|
lon_str = list(map(lambda x: str(round(x, 2)), np.asarray(lon)))
|
|
# 分辨率
|
|
min_lat, max_lat = min(target_lat), max(target_lat)
|
|
min_lon, max_lon = min(target_lon), max(target_lon)
|
|
min_lat_index, max_lat_index = lat_str.index(min_lat), lat_str.index(max_lat)
|
|
min_lon_index, max_lon_index = lon_str.index(min_lon), lon_str.index(max_lon)
|
|
par = np.asarray(nc_data['PAR'][:])
|
|
par_save = par[max_lat_index:min_lat_index, min_lon_index:max_lon_index]
|
|
logger.info(par_save.shape)
|
|
new_par = np.c_[np.array(lat_str)[max_lat_index:min_lat_index], par_save]
|
|
new_par = np.c_[np.array([str(date_time)] * par_save.shape[0]), new_par]
|
|
cols = lon_str[min_lon_index:max_lon_index]
|
|
par_list.extend(new_par)
|
|
except Exception as e:
|
|
logger.info(e)
|
|
continue
|
|
date_df = pd.DataFrame.from_records(par_list, columns=['time', 'lat'] + cols)
|
|
return date_df |