I am working on sounding plot using skewTplus library:
code:
from Imports.commonImports import *
import matplotlib.pyplot as plt
def generateImage(index,lng,lat, ncfile):
print("generate image called")
dewPointTemperature=getvar(ncfile,"td2",timeidx=index)[0][:44]
print(dewPointTemperature.shape)
temperature=getvar(ncfile,'temp',timeidx=index)[:,0,0]
pressure=getvar(ncfile,"pressure",timeidx=index)
print(temperature.shape)
theta=getvar(ncfile,"T",timeidx=index)+300
qvapor=getvar(ncfile,"QVAPOR",timeidx=index)
T0 = 273.15
referencePressure = 100000.0
epsilon = 0.622 # Rd / Rv
# [Pa]
# Temperatures in Celsius
temperature = theta * np.power((pressure / referencePressure), 0.2854) - T0
vaporPressure = pressure * qvapor / (epsilon + qvapor)
dewPointTemperature = 243.5 / ((17.67 / np.log(vaporPressure * 0.01 / 6.112)) - 1)
dewPointTemperature = np.ma.masked_invalid(dewPointTemperature)
mySounding = sounding()
temperature = temperature.assign_attrs(units="Celsius", description="Temperature data")
mySounding.addField('pressure', pressure, "Pressure", "Pa")
mySounding.addField('temperature', temperature, "Temperature", "C")
mySounding.addField('dewPointTemperature', dewPointTemperature, "Dew PointTemperature", "C")
print(mySounding)
mySounding.quickPlot()
Error:
File "/home/sammanamgain/miniconda3/envs/soundings/lib/python3.6/site-packages/SkewTplus/sounding.py", line 621, in quickPlot
pressure, temperature, dewPointTemperature = self.getCleanSounding()
File "/home/sammanamgain/miniconda3/envs/soundings/lib/python3.6/site-packages/SkewTplus/sounding.py", line 582, in getCleanSounding
"Dew Point Temp: %s"%dewPointTemperature.units)
SkewTplus.errorHandling.fatalError: Error getting clean sounding plot
Details:
Temperature units: Celsius
Dew Point Temp: C
When I tried to run without assigning manual units to temperature:
It throws error like this:
File "/home/sammanamgain/miniconda3/envs/soundings/lib/python3.6/site-packages/SkewTplus/sounding.py", line 621, in quickPlot
pressure, temperature, dewPointTemperature = self.getCleanSounding()
File "/home/sammanamgain/miniconda3/envs/soundings/lib/python3.6/site-packages/SkewTplus/sounding.py", line 576, in getCleanSounding
if temperature.units is not None:
File "/home/sammanamgain/miniconda3/envs/soundings/lib/python3.6/site-packages/xarray/core/common.py", line 240, in __getattr__
"{!r} object has no attribute {!r}".format(type(self).__name__, name)
AttributeError: 'DataArray' object has no attribute 'units'