__all__ = ['ncf2height_pressure', 'write_hgtprss']
__doc__ = """
.. _Write
:mod:`Write` -- CAMx height_pressure writer
============================================
.. module:: Write
:platform: Unix, Windows
:synopsis: Provides :ref:`PseudoNetCDF` writer for CAMx
height_pressure files.
for interface details
.. moduleauthor:: Barron Henderson <barronh@unc.edu>
"""
# Site-Packages
from numpy import array
# This Package modules
from PseudoNetCDF.camxfiles.timetuple import timeadd, timerange
from PseudoNetCDF.camxfiles.FortranFileUtil import writeline
from PseudoNetCDF._getwriter import registerwriter
[docs]
def ncf2height_pressure(ncffile, outpath, hght='HGHT', pres='PRES',
tflag='TFLAG'):
outfile = open(outpath, 'wb')
thp = zip(ncffile.variables[tflag][:, 0, :],
ncffile.variables[hght],
ncffile.variables[pres])
for (d, t), h3d, p3d in thp:
t = array(t.astype('>f') / 100, ndmin=1).astype('>f')
d = array(d, ndmin=1).astype('>i')
d = (d % (d // 100000 * 100000)).astype('>i')
for i, (h2d, p2d) in enumerate(zip(h3d, p3d)):
h2d = h2d.astype('>f')
p2d = p2d.astype('>f')
buf = array((h2d.size + 2) * 4, ndmin=1).astype('>i').tobytes()
outfile.write(buf + t.tobytes() + d.tobytes())
h2d.tofile(outfile)
outfile.write(buf)
outfile.write(buf + t.tobytes() + d.tobytes())
p2d.tofile(outfile)
outfile.write(buf)
outfile.flush()
return outfile
registerwriter('camxfiles.height_pressure', ncf2height_pressure)
registerwriter('height_pressure', ncf2height_pressure)