Omaha #3595 Register two more fields. Replace UEngine with DAF and properly call the script
Change-Id: I3dac64f0537877858f9cf0bbf9e394e0e56075ba Former-commit-id:33e141dd38
[formerly e1470cb4ce03b49ac85936760469a22786195a99] Former-commit-id:1df2418409
This commit is contained in:
parent
404a87b2c9
commit
db82cdbdfe
3 changed files with 318 additions and 262 deletions
|
@ -41,6 +41,7 @@
|
||||||
<constructor-arg value="MB"/>
|
<constructor-arg value="MB"/>
|
||||||
<constructor-arg>
|
<constructor-arg>
|
||||||
<list>
|
<list>
|
||||||
|
<value>prMaxW</value>
|
||||||
<value>wdMaxW</value>
|
<value>wdMaxW</value>
|
||||||
<value>wsMaxW</value>
|
<value>wsMaxW</value>
|
||||||
</list>
|
</list>
|
||||||
|
@ -66,6 +67,7 @@
|
||||||
<constructor-arg value="FHAG"/>
|
<constructor-arg value="FHAG"/>
|
||||||
<constructor-arg>
|
<constructor-arg>
|
||||||
<list>
|
<list>
|
||||||
|
<value>htSigW</value>
|
||||||
<value>wdSigW</value>
|
<value>wdSigW</value>
|
||||||
<value>wsSigW</value>
|
<value>wsSigW</value>
|
||||||
</list>
|
</list>
|
||||||
|
|
|
@ -33,12 +33,13 @@
|
||||||
# cleaning it up. The path to the finalized python is /tmp/a2gtraobNNNNN.py
|
# cleaning it up. The path to the finalized python is /tmp/a2gtraobNNNNN.py
|
||||||
# where NNNNN is a unix process id.
|
# where NNNNN is a unix process id.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# SOFTWARE HISTORY
|
# SOFTWARE HISTORY
|
||||||
#
|
#
|
||||||
# Date Ticket# Engineer Description
|
# Date Ticket# Engineer Description
|
||||||
# ------------ ---------- ----------- --------------------------
|
# ------------ ---------- ----------- --------------------------
|
||||||
# Oct 10, 2014 3595 nabowle Initial modification. Fix sed call.
|
# Oct 10, 2014 3595 nabowle Initial modification. Fix sed call.
|
||||||
|
# Oct 10, 2014 3595 nabowle Handle DAF version.
|
||||||
#
|
#
|
||||||
set rmpy = yes
|
set rmpy = yes
|
||||||
if ( "$1" == "p" ) then
|
if ( "$1" == "p" ) then
|
||||||
|
@ -74,12 +75,22 @@ if ( $?FXA_HOME ) then
|
||||||
set stubpy = $FXA_HOME/bin/${stubbase}
|
set stubpy = $FXA_HOME/bin/${stubbase}
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
set staInf = $PWD/wmoToNameRaob.txt
|
||||||
|
if ( $?FXA_HOME ) then
|
||||||
|
if ( -e $FXA_HOME/data/wmoToNameRaob.txt ) \
|
||||||
|
set staInf = $FXA_HOME/data/wmoToNameRaob.txt
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Determine if we are using the data access framework or the uEngine.
|
# Determine if we are using the data access framework or the uEngine.
|
||||||
#
|
#
|
||||||
grep DataAccessLayer $stubpy >& /dev/null
|
grep DataAccessLayer $stubpy >& /dev/null
|
||||||
if ( $status == 0 ) then
|
if ( $status == 0 ) then
|
||||||
set method = "daf"
|
# Replace first field with station names substitutions in wmoToNameRaob.txt or
|
||||||
|
# with what's stored in the database. They are similar but do not match 100%.
|
||||||
|
/awips2/python/bin/python $stubpy -b "$1 $2" -e "$3 $4" | sed -f $staInf
|
||||||
|
# /awips2/python/bin/python $stubpy -b "$1 $2" -e "$3 $4" --use-station-name
|
||||||
else
|
else
|
||||||
#
|
#
|
||||||
# Set up the environment we need to run the UEngine.
|
# Set up the environment we need to run the UEngine.
|
||||||
|
@ -98,24 +109,17 @@ else
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
source $ueenv
|
source $ueenv
|
||||||
endif
|
|
||||||
#
|
set specpy = /tmp/a2gtraob${$}.py
|
||||||
set staInf = $PWD/wmoToNameRaob.txt
|
rm -rf $specpy >& /dev/null
|
||||||
if ( $?FXA_HOME ) then
|
touch $specpy
|
||||||
if ( -e $FXA_HOME/data/wmoToNameRaob.txt ) \
|
chmod 775 $specpy
|
||||||
set staInf = $FXA_HOME/data/wmoToNameRaob.txt
|
cat $stubpy | sed "s/BBBBB/$1 $2/g" | sed "s/EEEEE/$3 $4/g" > $specpy
|
||||||
endif
|
|
||||||
set specpy = /tmp/a2gtraob${$}.py
|
|
||||||
rm -rf $specpy >& /dev/null
|
|
||||||
touch $specpy
|
|
||||||
chmod 775 $specpy
|
|
||||||
cat $stubpy | sed "s/BBBBB/$1 $2/g" | sed "s/EEEEE/$3 $4/g" > $specpy
|
|
||||||
if ( "$method" == "daf" ) then
|
|
||||||
/awips2/python/bin/python $specpy
|
|
||||||
else
|
|
||||||
cd $UE_BIN_PATH
|
cd $UE_BIN_PATH
|
||||||
( uengine -r python < $specpy ) | grep -v '<' | sed -n '2,$p' | \
|
( uengine -r python < $specpy ) | grep -v '<' | sed -n '2,$p' | \
|
||||||
sed -f $staInf
|
sed -f $staInf
|
||||||
|
|
||||||
|
if ( "$rmpy" == "yes" ) rm -rf $specpy >& /dev/null
|
||||||
endif
|
endif
|
||||||
if ( "$rmpy" == "yes" ) rm -rf $specpy >& /dev/null
|
|
||||||
#
|
|
||||||
|
|
|
@ -20,269 +20,319 @@
|
||||||
|
|
||||||
# Gets all available raob data in the A-II database over a specified range of
|
# Gets all available raob data in the A-II database over a specified range of
|
||||||
# times. The data is output to stdout as ASCII.
|
# times. The data is output to stdout as ASCII.
|
||||||
#
|
#
|
||||||
# SOFTWARE HISTORY
|
# SOFTWARE HISTORY
|
||||||
#
|
#
|
||||||
# Date Ticket# Engineer Description
|
# Date Ticket# Engineer Description
|
||||||
# ------------ ---------- ----------- --------------------------
|
# ------------ ---------- ----------- --------------------------
|
||||||
# Oct 10, 2014 3595 nabowle Initial modification. Fix Man and SigW indices.
|
# Oct 10, 2014 3595 nabowle Initial modification. Fix Man and SigW indices.
|
||||||
|
# Oct 10, 2014 3595 nabowle Replace UEngine with DAF.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# pointDataQuery.stationName_lat_lon.py
|
|
||||||
from com.raytheon.uf.common.message.response import ResponseMessageGeneric
|
|
||||||
import PointDataQuery
|
|
||||||
|
|
||||||
# 1.
|
import argparse
|
||||||
pdq = PointDataQuery.PointDataQuery("bufrua")
|
import sys
|
||||||
|
|
||||||
# 3. the stuff we want returned to us in PointDataContainer
|
from datetime import datetime
|
||||||
reqPar = "wmoStaNum,validTime,rptType"
|
from ufpy.dataaccess import DataAccessLayer
|
||||||
reqPar += ",latitude,longitude,staElev"
|
from dynamicserialize.dstypes.com.raytheon.uf.common.time import TimeRange
|
||||||
reqPar += ",numMand,prMan,htMan,tpMan,tdMan,wsMan,wdMan"
|
|
||||||
reqPar += ",numSigT,prSigT,tpSigT,tdSigT"
|
|
||||||
reqPar += ",numSigW,htSigW,wsSigW,wdSigW"
|
|
||||||
reqPar += ",numTrop,prTrop,tpTrop,tdTrop,wsTrop,wdTrop"
|
|
||||||
reqPar += ",numMwnd,prMaxW,wsMaxW,wdMaxW"
|
|
||||||
pdq.setRequestedParameters(reqPar)
|
|
||||||
|
|
||||||
# 2. some constraints
|
def get_args():
|
||||||
pdq.addConstraint("dataTime","BBBBB:00.0",">=")
|
parser = argparse.ArgumentParser(conflict_handler="resolve")
|
||||||
pdq.addConstraint("dataTime","EEEEE:00.0","<=")
|
parser.add_argument("-h", action="store", dest="host",
|
||||||
|
help="EDEX server hostname (optional)",
|
||||||
|
metavar="hostname")
|
||||||
|
parser.add_argument("-b", action="store", dest="start",
|
||||||
|
help="The start of the time range in YYYY-MM-DD HH:MM",
|
||||||
|
metavar="start")
|
||||||
|
parser.add_argument("-e", action="store", dest="end",
|
||||||
|
help="The end of the time range in YYYY-MM-DD HH:MM",
|
||||||
|
metavar="end")
|
||||||
|
parser.add_argument("--use-station-name", action='store_true', default=False,
|
||||||
|
dest="stationname", help="Output the station name instead of station id for the first output field.")
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
# 5.1 execute() returns a ResponseMessageGeneric
|
def main():
|
||||||
pdq.requestAllLevels()
|
# The multi-dimensional parameters.
|
||||||
rmg = pdq.execute()
|
MAN_PARAMS = set(['prMan', 'htMan', 'tpMan', 'tdMan', 'wdMan', 'wsMan'])
|
||||||
|
TROP_PARAMS = set(['prTrop', 'tpTrop', 'tdTrop', 'wdTrop', 'wsTrop'])
|
||||||
|
MAXW_PARAMS = set(['prMaxW', 'wdMaxW', 'wsMaxW'])
|
||||||
|
SIGT_PARAMS = set(['prSigT', 'tpSigT', 'tdSigT'])
|
||||||
|
SIGW_PARAMS = set(['htSigW', 'wdSigW', 'wsSigW'])
|
||||||
|
|
||||||
# 5.1, cont'd. RMG's payload is a PointDataContainer
|
user_args = get_args()
|
||||||
pdc = rmg.getContents()
|
|
||||||
# return ResponseMessageGeneric(pdc)
|
|
||||||
|
|
||||||
# Get the data for each requested parameter.
|
if user_args.host:
|
||||||
ista = pdc.getPointDataTypes().get("wmoStaNum").getIntData()
|
DataAccessLayer.changeEDEXHost(user_args.host)
|
||||||
tobs = pdc.getPointDataTypes().get("validTime").getLongData()
|
|
||||||
rtyp = pdc.getPointDataTypes().get("rptType").getIntData()
|
|
||||||
lat = pdc.getPointDataTypes().get("latitude").getFloatData()
|
|
||||||
lon = pdc.getPointDataTypes().get("longitude").getFloatData()
|
|
||||||
elev = pdc.getPointDataTypes().get("staElev").getFloatData()
|
|
||||||
nman = pdc.getPointDataTypes().get("numMand").getIntData()
|
|
||||||
pman = pdc.getPointDataTypes().get("prMan").getFloatData()
|
|
||||||
zman = pdc.getPointDataTypes().get("htMan").getFloatData()
|
|
||||||
tman = pdc.getPointDataTypes().get("tpMan").getFloatData()
|
|
||||||
tdman = pdc.getPointDataTypes().get("tdMan").getFloatData()
|
|
||||||
ffman = pdc.getPointDataTypes().get("wsMan").getFloatData()
|
|
||||||
ddman = pdc.getPointDataTypes().get("wdMan").getFloatData()
|
|
||||||
nsigt = pdc.getPointDataTypes().get("numSigT").getIntData()
|
|
||||||
psigt = pdc.getPointDataTypes().get("prSigT").getFloatData()
|
|
||||||
tsigt = pdc.getPointDataTypes().get("tpSigT").getFloatData()
|
|
||||||
tdsigt = pdc.getPointDataTypes().get("tdSigT").getFloatData()
|
|
||||||
nsigw = pdc.getPointDataTypes().get("numSigW").getIntData()
|
|
||||||
zsigw = pdc.getPointDataTypes().get("htSigW").getFloatData()
|
|
||||||
ffsigw = pdc.getPointDataTypes().get("wsSigW").getFloatData()
|
|
||||||
ddsigw = pdc.getPointDataTypes().get("wdSigW").getFloatData()
|
|
||||||
ntrop = pdc.getPointDataTypes().get("numTrop").getIntData()
|
|
||||||
ptrop = pdc.getPointDataTypes().get("prTrop").getFloatData()
|
|
||||||
ttrop = pdc.getPointDataTypes().get("tpTrop").getFloatData()
|
|
||||||
tdtrop = pdc.getPointDataTypes().get("tdTrop").getFloatData()
|
|
||||||
fftrop = pdc.getPointDataTypes().get("wsTrop").getFloatData()
|
|
||||||
ddtrop = pdc.getPointDataTypes().get("wdTrop").getFloatData()
|
|
||||||
nmxw = pdc.getPointDataTypes().get("numMwnd").getIntData()
|
|
||||||
pmxw = pdc.getPointDataTypes().get("prMaxW").getFloatData()
|
|
||||||
ffmxw = pdc.getPointDataTypes().get("wsMaxW").getFloatData()
|
|
||||||
ddmxw = pdc.getPointDataTypes().get("wdMaxW").getFloatData()
|
|
||||||
|
|
||||||
# 5.2 and 5.3
|
start = user_args.start
|
||||||
if len(tobs) == 0 :
|
end = user_args.end
|
||||||
msg = "couldn't get data"
|
|
||||||
return ResponseMessageGeneric(msg)
|
|
||||||
|
|
||||||
# D-2D format files expect depression
|
if not start or not end:
|
||||||
i = len(tman)-1
|
print >> sys.stderr, "Start or End date not provided"
|
||||||
while i>=0 :
|
return
|
||||||
if tdman[i]>150 and tdman[i]<=tman[i] :
|
|
||||||
tdman[i] = tman[i]-tdman[i]
|
|
||||||
else :
|
|
||||||
tdman[i] = -9999.0
|
|
||||||
i -= 1
|
|
||||||
i = len(tsigt)-1
|
|
||||||
while i>=0 :
|
|
||||||
if tdsigt[i]>150 and tdsigt[i]<=tsigt[i] :
|
|
||||||
tdsigt[i] = tsigt[i]-tdsigt[i]
|
|
||||||
else :
|
|
||||||
tdsigt[i] = -9999.0
|
|
||||||
i -= 1
|
|
||||||
i = len(ttrop)-1
|
|
||||||
while i>=0 :
|
|
||||||
if tdtrop[i]>150 and tdtrop[i]<=ttrop[i] :
|
|
||||||
tdtrop[i] = ttrop[i]-tdtrop[i]
|
|
||||||
else :
|
|
||||||
tdtrop[i] = -9999.0
|
|
||||||
i -= 1
|
|
||||||
|
|
||||||
msg = "\n"
|
beginRange = datetime.strptime( start + ":00.0", "%Y-%m-%d %H:%M:%S.%f")
|
||||||
i = iMan = iSigT = iSigW = iTrop = iMxW = 0
|
endRange = datetime.strptime( end + ":59.9", "%Y-%m-%d %H:%M:%S.%f")
|
||||||
while i < len(tobs) :
|
timerange = TimeRange(beginRange, endRange)
|
||||||
if nman[i]<0 : nman[i] = 0
|
|
||||||
if nsigt[i]<0 : nsigt[i] = 0
|
|
||||||
if nsigw[i]<0 : nsigw[i] = 0
|
|
||||||
if ntrop[i]<0 : ntrop[i] = 0
|
|
||||||
if nmxw[i]<0 : nmxw[i] = 0
|
|
||||||
if nman[i]==0 and nsigt[i]==0 and nsigw[i]==0 or rtyp[i]>2022:
|
|
||||||
iMan += 25
|
|
||||||
iSigT += 120
|
|
||||||
iSigW += 80
|
|
||||||
iTrop += 5
|
|
||||||
iMxW += 5
|
|
||||||
i += 1
|
|
||||||
continue
|
|
||||||
|
|
||||||
msg += str(ista[i]) + ","
|
req = DataAccessLayer.newDataRequest("bufrua")
|
||||||
msg += str(tobs[i]/1000) + ","
|
req.setParameters("wmoStaNum", "validTime", "rptType", "staElev", "numMand",
|
||||||
msg += "%.4f"%lat[i] + ","
|
"numSigT", "numSigW", "numTrop", "numMwnd", "staName")
|
||||||
msg += "%.4f"%lon[i] + ","
|
req.getParameters().extend(MAN_PARAMS)
|
||||||
msg += "%.0f"%elev[i] + ","
|
req.getParameters().extend(TROP_PARAMS)
|
||||||
msg += str(ista[i]) + ","
|
req.getParameters().extend(MAXW_PARAMS)
|
||||||
|
req.getParameters().extend(SIGT_PARAMS)
|
||||||
|
req.getParameters().extend(SIGW_PARAMS)
|
||||||
|
|
||||||
msg += str(nman[i]) + ","
|
geometries = DataAccessLayer.getGeometryData(req, timerange)
|
||||||
kk = iMan + nman[i]
|
|
||||||
if nman[i]>0 : msg += "%.1f"%pman[iMan]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%pman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nman[i]>0 : msg += "%.1f"%elev[i]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%zman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nman[i]>0 : msg += "%.1f"%tman[iMan]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%tman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nman[i]>0 : msg += "%.1f"%tdman[iMan]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%tdman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nman[i]>0 : msg += "%.1f"%ffman[iMan]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ffman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nman[i]>0 : msg += "%.1f"%ddman[iMan]
|
|
||||||
k = iMan + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ddman[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
iMan += 25
|
|
||||||
|
|
||||||
msg += str(nsigt[i]) + ","
|
if not geometries :
|
||||||
kk = iSigT + nsigt[i]
|
# print "couldn't get data"
|
||||||
if nsigt[i]>0 : msg += "%.1f"%psigt[iSigT]
|
return
|
||||||
k = iSigT + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%psigt[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nsigt[i]>0 : msg += "%.1f"%tsigt[iSigT]
|
|
||||||
k = iSigT + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%tsigt[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nsigt[i]>0 : msg += "%.1f"%tdsigt[iSigT]
|
|
||||||
k = iSigT + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%tdsigt[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
iSigT += 120
|
|
||||||
|
|
||||||
msg += str(nsigw[i]) + ","
|
|
||||||
kk = iSigW + nsigw[i]
|
|
||||||
if nsigw[i]>0 : msg += "%.1f"%zsigw[iSigW]
|
|
||||||
k = iSigW + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%zsigw[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nsigw[i]>0 : msg += "%.1f"%ffsigw[iSigW]
|
|
||||||
k = iSigW + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ffsigw[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nsigw[i]>0 : msg += "%.1f"%ddsigw[iSigW]
|
|
||||||
k = iSigW + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ddsigw[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
iSigW += 80
|
|
||||||
|
|
||||||
msg += str(ntrop[i]) + ","
|
manGeos = []
|
||||||
kk = iTrop + ntrop[i]
|
tropGeos = []
|
||||||
if ntrop[i]>0 : msg += "%.1f"%ptrop[iTrop]
|
maxwGeos = []
|
||||||
k = iTrop + 1
|
sigtGeos = []
|
||||||
while k < kk :
|
sigwGeos = []
|
||||||
msg += "|" + "%.1f"%ptrop[k];
|
# D-2D format files expect depression
|
||||||
k += 1
|
tdman = []
|
||||||
msg += ","
|
tdsigt = []
|
||||||
if ntrop[i]>0 : msg += "%.1f"%ttrop[iTrop]
|
tdtrop = []
|
||||||
k = iTrop + 1
|
msg = ""
|
||||||
while k < kk :
|
for geoData in geometries :
|
||||||
msg += "|" + "%.1f"%ttrop[k];
|
if set(geoData.getParameters()) & MAN_PARAMS :
|
||||||
k += 1
|
manGeos.append(geoData)
|
||||||
msg += ","
|
td = geoData.getNumber("tdMan")
|
||||||
if ntrop[i]>0 : msg += "%.1f"%tdtrop[iTrop]
|
tp = geoData.getNumber("tpMan")
|
||||||
k = iTrop + 1
|
if td >150 and td<=tp :
|
||||||
while k < kk :
|
tdman.append(tp-td)
|
||||||
msg += "|" + "%.1f"%tdtrop[k];
|
else :
|
||||||
k += 1
|
tdman.append(-9999.0)
|
||||||
msg += ","
|
continue
|
||||||
if ntrop[i]>0 : msg += "%.1f"%fftrop[iTrop]
|
if set(geoData.getParameters()) & TROP_PARAMS :
|
||||||
k = iTrop + 1
|
tropGeos.append(geoData)
|
||||||
while k < kk :
|
td = geoData.getNumber("tdTrop")
|
||||||
msg += "|" + "%.1f"%fftrop[k];
|
tp = geoData.getNumber("tpTrop")
|
||||||
k += 1
|
if td>150 and td<=tp :
|
||||||
msg += ","
|
tdtrop.append(tp-td)
|
||||||
if ntrop[i]>0 : msg += "%.1f"%ddtrop[iTrop]
|
else :
|
||||||
k = iTrop + 1
|
tdtrop.append(-9999.0)
|
||||||
while k < kk :
|
continue
|
||||||
msg += "|" + "%.1f"%ddtrop[k];
|
if set(geoData.getParameters()) & MAXW_PARAMS :
|
||||||
k += 1
|
maxwGeos.append(geoData)
|
||||||
msg += ","
|
continue
|
||||||
iTrop += 5
|
if set(geoData.getParameters()) & SIGT_PARAMS :
|
||||||
|
sigtGeos.append(geoData)
|
||||||
|
td = geoData.getNumber("tdSigT")
|
||||||
|
tp = geoData.getNumber("tpSigT")
|
||||||
|
if td>150 and td<=tp :
|
||||||
|
tdsigt.append(tp-td)
|
||||||
|
else :
|
||||||
|
tdsigt.append(-9999.0)
|
||||||
|
continue
|
||||||
|
if set(geoData.getParameters()) & SIGW_PARAMS :
|
||||||
|
sigwGeos.append(geoData)
|
||||||
|
continue
|
||||||
|
|
||||||
msg += str(nmxw[i]) + ","
|
if len(manGeos) == 0 and len(sigtGeos) == 0 and len(sigwGeos) == 0 or geoData.getNumber("rptType") > 2022 :
|
||||||
kk = iMxW + nmxw[i]
|
manGeos = []
|
||||||
if nmxw[i]>0 : msg += "%.1f"%pmxw[iMxW]
|
tropGeos = []
|
||||||
k = iMxW + 1
|
maxwGeos = []
|
||||||
while k < kk :
|
sigtGeos = []
|
||||||
msg += "|" + "%.1f"%pmxw[k];
|
sigwGeos = []
|
||||||
k += 1
|
tdman = []
|
||||||
msg += ","
|
tdsigt = []
|
||||||
if nmxw[i]>0 : msg += "%.1f"%ffmxw[iMxW]
|
tdtrop = []
|
||||||
k = iMxW + 1
|
continue
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ffmxw[k];
|
|
||||||
k += 1
|
|
||||||
msg += ","
|
|
||||||
if nmxw[i]>0 : msg += "%.1f"%ddmxw[iMxW]
|
|
||||||
k = iMxW + 1
|
|
||||||
while k < kk :
|
|
||||||
msg += "|" + "%.1f"%ddmxw[k];
|
|
||||||
k += 1
|
|
||||||
msg += "\n"
|
|
||||||
iMxW += 5
|
|
||||||
|
|
||||||
i += 1
|
if user_args.stationname and geoData.getString("staName") :
|
||||||
|
msg += geoData.getString("staName") + ","
|
||||||
|
else :
|
||||||
|
msg += geoData.getString("wmoStaNum") + ","
|
||||||
|
msg += str(geoData.getNumber("validTime")/1000) + ","
|
||||||
|
msg += "%.4f"%geoData.getGeometry().y + ","
|
||||||
|
msg += "%.4f"%geoData.getGeometry().x + ","
|
||||||
|
msg += "%.0f"%geoData.getNumber("staElev") + ","
|
||||||
|
msg += geoData.getString("wmoStaNum") + ","
|
||||||
|
|
||||||
return ResponseMessageGeneric(msg)
|
kk = len(manGeos)
|
||||||
|
msg += str(kk) + ","
|
||||||
|
if kk>0 :
|
||||||
|
msg += "%.1f"%manGeos[0].getNumber("prMan")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%manGeos[k].getNumber("prMan")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%geoData.getNumber("staElev")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%manGeos[k].getNumber("htMan")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%manGeos[0].getNumber("tpMan")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%manGeos[k].getNumber("tpMan")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tdman[0]
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tdman[k];
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%manGeos[0].getNumber("wsMan")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%manGeos[k].getNumber("wsMan")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%manGeos[0].getNumber("wdMan")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%manGeos[k].getNumber("wdMan")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
else :
|
||||||
|
msg += ",,,,,,"
|
||||||
|
|
||||||
|
kk = len(sigtGeos)
|
||||||
|
msg += str(kk) + ","
|
||||||
|
if kk>0 :
|
||||||
|
msg += "%.1f"%sigtGeos[0].getNumber("prSigT")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%sigtGeos[k].getNumber("prSigT")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%sigtGeos[0].getNumber("tpSigT")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%sigtGeos[k].getNumber("tpSigT")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tdsigt[0]
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tdsigt[k]
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
else :
|
||||||
|
msg += ",,,"
|
||||||
|
|
||||||
|
kk = len(sigwGeos)
|
||||||
|
msg += str(kk) + ","
|
||||||
|
if kk>0 :
|
||||||
|
msg += "%.1f"%sigwGeos[0].getNumber("htSigW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%sigwGeos[k].getNumber("htSigW")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%sigwGeos[0].getNumber("wsSigW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%sigwGeos[k].getNumber("wsSigW")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%sigwGeos[0].getNumber("wdSigW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%sigwGeos[k].getNumber("wdSigW")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
else :
|
||||||
|
msg += ",,,"
|
||||||
|
|
||||||
|
kk = len(tropGeos)
|
||||||
|
msg += str(kk) + ","
|
||||||
|
if kk>0 :
|
||||||
|
msg += "%.1f"%tropGeos[0].getNumber("prTrop")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tropGeos[k].getNumber("prTrop")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tropGeos[0].getNumber("tpTrop")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tropGeos[k].getNumber("tpTrop")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tdtrop[0]
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tdtrop[k]
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tropGeos[0].getNumber("wsTrop")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tropGeos[k].getNumber("wsTrop")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%tropGeos[0].getNumber("wdTrop")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%tropGeos[k].getNumber("wdTrop")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
else :
|
||||||
|
msg += ",,,,,"
|
||||||
|
|
||||||
|
kk = len(maxwGeos)
|
||||||
|
msg += str(kk) + ","
|
||||||
|
if kk>0 :
|
||||||
|
msg += "%.1f"%maxwGeos[0].getNumber("prMaxW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%maxwGeos[k].getNumber("prMaxW")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%maxwGeos[0].getNumber("wsMaxW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%maxwGeos[k].getNumber("wsMaxW")
|
||||||
|
k += 1
|
||||||
|
msg += ","
|
||||||
|
|
||||||
|
msg += "%.1f"%maxwGeos[0].getNumber("wdMaxW")
|
||||||
|
k = 1
|
||||||
|
while k < kk :
|
||||||
|
msg += "|" + "%.1f"%maxwGeos[k].getNumber("wdMaxW")
|
||||||
|
k += 1
|
||||||
|
else :
|
||||||
|
msg += ",,"
|
||||||
|
msg += "\n"
|
||||||
|
|
||||||
|
manGeos = []
|
||||||
|
tropGeos = []
|
||||||
|
maxwGeos = []
|
||||||
|
sigtGeos = []
|
||||||
|
sigwGeos = []
|
||||||
|
tdman = []
|
||||||
|
tdsigt = []
|
||||||
|
tdtrop = []
|
||||||
|
|
||||||
|
print msg.strip()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue