处理.nc文件

将一年中 每小时的数据转换为一天的总数据

import netCDF4 as nc
import numpy as np
import os
import csv

path = r"D:\jixiangshuju\tp"
files = os.listdir(path)
i = 0
for filename in files:
    file = path + "\\" + filename
    data = nc.Dataset(file)

    portion = os.path.splitext(filename)[0] + ".csv"
    lon = data.variables['longitude'][:].data  # 1440
    # 维度
    lat = data.variables['latitude'][:].data  # 721
    time = data.variables['time']
    real_time = nc.num2date(time, time.units)
    # 时间
    time1 = data.variables['time'][:].data  # 744
    # 温度
    pt = data.variables['pt'][:].data  # (744,721,11440)  时间 lat lon

    # 2017
    id = time1 // 24 - 42733
    pt = data.variables['pt'][:].data - 273.16
    lon = data.variables['longitude'][:].data
    print('数据加载完成')
    with open(portion, 'a', newline='') as fp:
        # 字段名
        writer = csv.writer(fp, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        writer.writerow(["ID",'yy', 'mm', 'dd', 'lat', 'lon', 'precip'])
        # 输入经纬度的维数
        temp = []
        for j in range(len(lat)):
            print(j)
            for k in range(len(lon)):
                for i in range(len(time)):
                    temp.append(pt[i, j, k])
                    if (len(temp) == 24):
                        ID = id[i]
                        temp = np.array(temp)
                        year = real_time[i].year
                        month = real_time[i].month
                        day = real_time[i].day
                        sumtemp = np.sum(temp)
                        long = lon[k] if lon[k] <= 180 else -(lon[k] - 180)
                        writer.writerow([
                            ID,
                            year,
                            month,
                            day,
                            lat[j],
                            long,
                            sumtemp,
                        ])
                        temp = []
        print('完成1个')
print('完成')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值