Python micaps数据转nc

# -*- coding: utf-8 -*-
"""
@Author: xxd
@Features: Read diamond 4; Conver to .nc
"""
import glob
import numpy as np
import pandas as pd
import netCDF4 as nc

if __name__ == '__main__':
    paths = glob.glob(r'E:\PT\20221020\大暴雨3km\*')
    ''' 这种读法容易报错,且复杂,不可取
    f = open(filename, mode='r')
    data = f.readlines()
    '''
    df = pd.read_csv(paths[0], skiprows=2, header=None, delimiter=' ') #读取micaps 4数据
    data = np.array(df) # 转为数组
   
    # 创建nc数据
    nc_new = nc.Dataset('test.nc', 'w', format='NETCDF4')  # 创建一个格式为.nc的
    # time纬度为12。注意,第2个参数 表示维度,但是必须是 integer整型,也就是只能创建一个基础单一维度信息。
    # 如果后面要创建一个变量维度>1,则必须由前面的单一维度组合而来。

    # 确定基础变量的维度信息。相对与坐标系的各个轴(x,y,z)
    nc_new.createDimension('time', 1)
    # f_w.createDimension('level', 1)
    nc_new.createDimension('lat', 196)
    nc_new.createDimension('lon', 240)

    # 创建变量。参数依次为:‘变量名称’,‘数据类型’,‘基础维度信息’
    nc_new.createVariable('time', np.int64, ('time'))
    nc_new.createVariable('lat', np.float32, ('lat'))
    nc_new.createVariable('lon', np.float32, ('lon'))
    nc_new.createVariable('data', np.float32, ('time', 'lat', 'lon'))
    # 写入变量data的数据。维度必须与定义的一致。
    time_str = paths[0][-12:-4]+paths[0][-3:]
    time = np.array(int(time_str))
    nc_new.variables['time'][:] = time
    nc_new.variables['lat'][:] = np.arange(36.2, 46, 0.05)
    nc_new.variables['lon'][:] = np.arange(116.3, 128.25, 0.05)
    nc_new.variables['data'][:] = data
    nc_new.close()




你可能感兴趣的:(笔记,python)