![](/img/trans.png)
[英]Convert ASCII File to netCDF using Python (selective columns from ASCII file)
[英]Converting ascii file to netcdf using python
我想将所有数据从ascii文件添加到netcdf文件。 ascii文件包含地球上每0.25度像元的数据。
我能够创建所有纬度/经度,但无法添加数据。 ASCII文件在这里: https : //www.dropbox.com/s/lybu6yvm4ph7pcr/tmp.txt? dl =0
有人可以诊断代码并查看出了什么问题吗?
from netCDF4 import Dataset
import numpy, os, pdb, errno, sys
NUM_LATS = 180.0
NUM_LONS = 360.0
inp_dir = 'C:\\Input\\'
out_dir = 'C:\\Output\\nc\\'
def make_dir_if_missing(d):
try:
os.makedirs(d)
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
make_dir_if_missing(out_dir)
# Read ASCII File
fl_name = inp_dir+'tmp.txt'
ascii_fl = numpy.loadtxt(fl_name, delimiter=' ')
# Compute dimensions of nc file based on # rows/cols in ascii file
fl_res = NUM_LATS/ascii_fl.shape[0]
if fl_res != NUM_LONS/ascii_fl.shape[1]:
print 'Incorrect dimensions in ascii file'
sys.exit(0)
# Initialize nc file
out_nc = out_dir+os.path.basename(inp_dir+'tmp.txt')[:-4]+'.nc'
nc_data = Dataset(out_nc, 'w', format='NETCDF4')
nc_data.description = 'Test'
# dimensions
nc_data.createDimension('lat', ascii_fl.shape[0])
nc_data.createDimension('lon', ascii_fl.shape[1])
nc_data.createDimension('data', 1)
# Populate and output nc file
# variables
latitudes = nc_data.createVariable('latitude', 'f4', ('lat',))
longitudes = nc_data.createVariable('longitude', 'f4', ('lon',))
glm_data = nc_data.createVariable('glm_data', 'f4', ('lat', 'lon', 'data'), fill_value=-9999.0)
glm_data.units = ''
# set the variables we know first
latitudes = numpy.arange(-90.5, 89.5, fl_res)
longitudes = numpy.arange(0.5, 360.5, fl_res)
glm_data = ascii_fl ### THIS LINE IS NOT WORKING!!!!!!!
nc_data.close()
您只需要为变量glm_data
明确写出二维:
glm_data[:,:] = ascii_fl[:,:]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.