Omaha #3595 Adding original, unmodified raobs scripts.

Change-Id: I466b5b89790bff9887022a35deda7c9f9871bc80

Former-commit-id: 5e5256fca1 [formerly 104b47daa2] [formerly 4241eab8ac [formerly d6793fc17662a0ea0d5814524f4e641e1524ebde]]
Former-commit-id: 4241eab8ac
Former-commit-id: aa36802cdf
This commit is contained in:
Nathan Bowler 2014-10-10 10:53:49 -04:00
parent 57fac3e239
commit 939e8a4736
3 changed files with 643 additions and 0 deletions

View file

@ -0,0 +1,290 @@
s/^04202,/BGTL,/g
s/^08594,/GVAC,/g
s/^21824,/RUTS,/g
s/^25563,/UHMA,/g
s/^25594,/UHMD,/g
s/^25913,/UHMM,/g
s/^31329,/UHPB,/g
s/^31735,/RUHB,/g
s/^31960,/UHWW,/g
s/^32150,/RUSH,/g
s/^32540,/UHPP,/g
s/^46692,/RCSS,/g
s/^46697,/RCGM,/g
s/^46747,/RCMJ,/g
s/^47058,/ZKKK,/g
s/^47110,/RKSS,/g
s/^47122,/RKSO,/g
s/^47138,/RKTH,/g
s/^47158,/RKJJ,/g
s/^47187,/RKPM,/g
s/^47401,/RJCW,/g
s/^47412,/RJCO,/g
s/^47580,/RJSM,/g
s/^47582,/RJSK,/g
s/^47590,/RJSS,/g
s/^47678,/RJTH,/g
s/^47681,/RJNH,/g
s/^47808,/RJFF,/g
s/^47827,/RJFK,/g
s/^47881,/RJOS,/g
s/^47918,/ROIG,/g
s/^47931,/RODN,/g
s/^47936,/ROAH,/g
s/^47945,/ROMD,/g
s/^47971,/RJAO,/g
s/^47981,/RJAW,/g
s/^47991,/RJAM,/g
s/^50745,/ZYQQ,/g
s/^50953,/ZYHB,/g
s/^54161,/ZYCC,/g
s/^54342,/ZYYY,/g
s/^54662,/ZYTL,/g
s/^54857,/ZSQD,/g
s/^58457,/ZSHC,/g
s/^61641,/GOOY,/g
s/^61902,/FHAW,/g
s/^61967,/DJDG,/g
s/^70026,/PABR,/g
s/^70086,/PABA,/g
s/^70133,/PAOT,/g
s/^70200,/PAOM,/g
s/^70219,/PABE,/g
s/^70231,/PAMC,/g
s/^70261,/PAFA,/g
s/^70273,/PAFC,/g
s/^70308,/PASN,/g
s/^70316,/PACB,/g
s/^70326,/PAKN,/g
s/^70350,/PADQ,/g
s/^70361,/PAYA,/g
s/^70398,/PANT,/g
s/^70414,/PASY,/g
s/^71043,/CYVQ,/g
s/^71051,/CWSY,/g
s/^71081,/CYUX,/g
s/^71082,/CYLT,/g
s/^71109,/CYZT,/g
s/^71119,/CWEG,/g
s/^71120,/CYOD,/g
s/^71121,/CYED,/g
s/^71123,/CYEG,/g
s/^71203,/CYLW,/g
s/^71396,/CYHZ,/g
s/^71399,/CWOS,/g
s/^71600,/CWSA,/g
s/^71603,/CYQI,/g
s/^71624,/CYYZ,/g
s/^71627,/CYUL,/g
s/^71701,/CYCX,/g
s/^71722,/CWMW,/g
s/^71799,/CYYJ,/g
s/^71801,/CYYT,/g
s/^71807,/CWAR,/g
s/^71811,/CYZV,/g
s/^71815,/CYJT,/g
s/^71816,/CYYR,/g
s/^71823,/CYAH,/g
s/^71836,/CYMO,/g
s/^71845,/CWPL,/g
s/^71853,/CWLO,/g
s/^71867,/CYQD,/g
s/^71879,/CYXD,/g
s/^71896,/CYXS,/g
s/^71906,/CYVP,/g
s/^71907,/CYPH,/g
s/^71909,/CYFB,/g
s/^71913,/CYYQ,/g
s/^71915,/CYZS,/g
s/^71917,/CWEU,/g
s/^71924,/CYRB,/g
s/^71925,/CYCB,/g
s/^71926,/CYBK,/g
s/^71934,/CYSM,/g
s/^71945,/CYYE,/g
s/^71957,/CYEV,/g
s/^71964,/CYXY,/g
s/^72201,/KKEY,/g
s/^72202,/KMFL,/g
s/^72206,/KJAX,/g
s/^72208,/KCHS,/g
s/^72210,/KTBW,/g
s/^72214,/KTAE,/g
s/^72215,/KFFC,/g
s/^72221,/KVPS,/g
s/^72230,/KBMX,/g
s/^72233,/KLIX,/g
s/^72235,/KJAN,/g
s/^72240,/KLCH,/g
s/^72248,/KSHV,/g
s/^72249,/KFWD,/g
s/^72250,/KBRO,/g
s/^72251,/KCRP,/g
s/^72257,/KHLR,/g
s/^72261,/KDRT,/g
s/^72265,/KMAF,/g
s/^72269,/KWSD,/g
s/^72274,/KTWC,/g
s/^72280,/KYUM,/g
s/^72291,/KNSI,/g
s/^72293,/KNKX,/g
s/^72305,/KMHX,/g
s/^72317,/KGSO,/g
s/^72318,/KRNK,/g
s/^72327,/KOHX,/g
s/^72340,/KLZK,/g
s/^72357,/KOUN,/g
s/^72363,/KAMA,/g
s/^72364,/KEPZ,/g
s/^72365,/KABQ,/g
s/^72376,/KFGZ,/g
s/^72381,/KEDW,/g
s/^72386,/KLAS,/g
s/^72387,/KDRA,/g
s/^72391,/KNTD,/g
s/^72393,/KVBG,/g
s/^72402,/KWAL,/g
s/^72403,/KLWX,/g
s/^72426,/KILN,/g
s/^72440,/KSGF,/g
s/^72451,/KDDC,/g
s/^72456,/KTOP,/g
s/^72469,/KDNR,/g
s/^72476,/KGJT,/g
s/^72489,/KREV,/g
s/^72493,/KOAK,/g
s/^72501,/KOKX,/g
s/^72518,/KALY,/g
s/^72520,/KPBZ,/g
s/^72528,/KBUF,/g
s/^72558,/KOAX,/g
s/^72562,/KLBF,/g
s/^72572,/KSLC,/g
s/^72582,/KLKN,/g
s/^72597,/KMFR,/g
s/^72632,/KDTX,/g
s/^72634,/KAPX,/g
s/^72645,/KGRB,/g
s/^72649,/KMPX,/g
s/^72659,/KABR,/g
s/^72662,/KUNR,/g
s/^72672,/KRIW,/g
s/^72681,/KBOI,/g
s/^72694,/KSLE,/g
s/^72712,/KCAR,/g
s/^72747,/KINL,/g
s/^72764,/KBIS,/g
s/^72768,/KGGW,/g
s/^72776,/KTFX,/g
s/^72786,/KOTX,/g
s/^72797,/KUIL,/g
s/^74002,/KAPG,/g
s/^74004,/K1Y7,/g
s/^74005,/K1Y8,/g
s/^74006,/K1Y9,/g
s/^74389,/KGYX,/g
s/^74455,/KDVN,/g
s/^74494,/KCHH,/g
s/^74560,/KILX,/g
s/^74626,/KPSR,/g
s/^74794,/KXMR,/g
s/^76151,/MILS,/g
s/^76225,/MMCU,/g
s/^76256,/MMGM,/g
s/^76342,/MMOV,/g
s/^76361,/MLMM,/g
s/^76382,/MTRC,/g
s/^76394,/MMMY,/g
s/^76405,/MLAP,/g
s/^76458,/MMMZ,/g
s/^76491,/MCVM,/g
s/^76499,/MSOT,/g
s/^76548,/MTAM,/g
s/^76612,/MMGL,/g
s/^76644,/MMMD,/g
s/^76649,/MCZM,/g
s/^76654,/MMZO,/g
s/^76665,/MMOR,/g
s/^76679,/MMMX,/g
s/^76680,/MMDF,/g
s/^76692,/MMVR,/g
s/^76723,/MISC,/g
s/^76749,/MCME,/g
s/^76805,/MACA,/g
s/^76830,/MIZT,/g
s/^76840,/MARR,/g
s/^76904,/MTAP,/g
s/^78016,/TXKF,/g
s/^78073,/MYNN,/g
s/^78367,/MUGM,/g
s/^78384,/MKCG,/g
s/^78397,/MKJP,/g
s/^78486,/MDSD,/g
s/^78526,/TJSJ,/g
s/^78583,/MZBZ,/g
s/^78806,/MPHO,/g
s/^78808,/MABK,/g
s/^78866,/MACM,/g
s/^78897,/TFFR,/g
s/^78954,/MKPB,/g
s/^78970,/MKPP,/g
s/^78988,/MACC,/g
s/^80001,/MCSP,/g
s/^80035,/SKRH,/g
s/^81405,/SOCA,/g
s/^91066,/PMDY,/g
s/^91165,/PHLI,/g
s/^91212,/PGUM,/g
s/^91217,/PGAC,/g
s/^91218,/PGUA,/g
s/^91245,/PWAK,/g
s/^91250,/PKMA,/g
s/^91275,/PJON,/g
s/^91285,/PHTO,/g
s/^91334,/PTKK,/g
s/^91348,/PTPN,/g
s/^91366,/PKWA,/g
s/^91376,/PMKJ,/g
s/^91408,/PTRO,/g
s/^91413,/PTYA,/g
s/^91517,/AGGH,/g
s/^91558,/NHHH,/g
s/^91592,/NWWN,/g
s/^91610,/NGTA,/g
s/^91643,/NGFU,/g
s/^91680,/NFFN,/g
s/^91700,/PCIS,/g
s/^91765,/NSTU,/g
s/^91843,/NCRG,/g
s/^91925,/NTMN,/g
s/^91938,/NTTT,/g
s/^91944,/NTTO,/g
s/^93997,/NZRN,/g
s/^94027,/AYLA,/g
s/^94035,/AYPY,/g
s/^94120,/YPDN,/g
s/^94203,/YPBR,/g
s/^94212,/AHHC,/g
s/^94238,/YDTC,/g
s/^94287,/YBCS,/g
s/^94294,/YBTL,/g
s/^94326,/YBAS,/g
s/^94332,/YBMA,/g
s/^94346,/YBLR,/g
s/^94367,/YBMK,/g
s/^94380,/YBGL,/g
s/^94510,/YBCV,/g
s/^94578,/YBBN,/g
s/^94637,/YPKG,/g
s/^94646,/YPFT,/g
s/^94653,/YPCD,/g
s/^94659,/YPWR,/g
s/^94672,/YPAD,/g
s/^94693,/YMMI,/g
s/^94750,/YSNW,/g
s/^94767,/YSSY,/g
s/^94776,/YSWM,/g
s/^94791,/YSCH,/g
s/^94995,/ASLH,/g
s/^94996,/YSNF,/g
s/^98327,/RPMK,/g

View file

@ -0,0 +1,95 @@
#!/bin/csh
#
# A script wrapper around a UEngine call that is meant to get all available
# raob data in the A-II database over a specified range of times. The data
# is output to stdout as ASCII. This version can adapt to use a python
# stub that calls the data access framework.
#
# Usage:
#
# a2gtraob.csh {p} yyyy-mm-dd hh:mm yyyy-mm-dd hh:mm
#
# The literal p flag is optional. The p flag means preserve
# the final version of the python submitted to the UEngine instead of
# cleaning it up. The path to the finalized python is /tmp/a2gtraobNNNNN.py
# where NNNNN is a unix process id.
#
set rmpy = yes
if ( "$1" == "p" ) then
set rmpy = no
shift
endif
#
# Identify directory this script is in, will be one of the directories we
# search for other files in.
#
set mydir = `dirname $0`
set d1 = `echo $mydir | cut -c1`
if ( "$mydir" == '.' ) then
set mydir = $PWD
else if ( "$d1" != "/" ) then
set mydir = $PWD/$mydir
endif
set mydir = `(cd $mydir ; pwd)`
if ( ! $?FXA_HOME ) set FXA_HOME = xxxx
if ( ! $?FXA_LOCAL_SITE ) set FXA_LOCAL_SITE = xxxx
if ( ! $?FXA_INGEST_SITE ) set FXA_INGEST_SITE = $FXA_LOCAL_SITE
#
# Locate python stub that we will modify to create the final python logic.
#
set stubbase = a2gtraobStub.py
set stubpy = ./${stubbase}
if ( $?FXA_HOME ) then
if ( -e ./${stubbase} ) then
set stubpy = ./${stubbase}
else if ( -e $FXA_HOME/src/dm/raob/${stubbase} ) then
set stubpy = $FXA_HOME/src/dm/raob/${stubbase}
else if ( -e $FXA_HOME/bin/${stubbase} ) then
set stubpy = $FXA_HOME/bin/${stubbase}
endif
endif
#
# Determine if we are using the data access framework or the uEngine.
#
grep DataAccessLayer $stubpy >& /dev/null
if ( $status == 0 ) then
set method = "daf"
else
#
# Set up the environment we need to run the UEngine.
#
set method = "uengine"
if ( -e ./UEngine.cshsrc ) then
set ueenv = ./UEngine.cshsrc
else if ( -e $mydir/UEngine.cshsrc ) then
set ueenv = $mydir/UEngine.cshsrc
else if ( -e $FXA_HOME/src/dm/point/UEngine.cshsrc ) then
set ueenv = $FXA_HOME/src/dm/point/UEngine.cshsrc
else if ( -e $FXA_HOME/bin/UEngine.cshsrc ) then
set ueenv = $FXA_HOME/bin/UEngine.cshsrc
else
bash -c "echo could not find UEngine.cshsrc 1>&2"
exit
endif
source $ueenv
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
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
( uengine -r python < $specpy ) | grep -v '<' | sed -n '3,$p' | \
sed -f $staInf
endif
if ( "$rmpy" == "yes" ) rm -rf $specpy >& /dev/null
#

View file

@ -0,0 +1,258 @@
# pointDataQuery.stationName_lat_lon.py
from com.raytheon.uf.common.message.response import ResponseMessageGeneric
import PointDataQuery
# 1.
pdq = PointDataQuery.PointDataQuery("bufrua")
# 3. the stuff we want returned to us in PointDataContainer
reqPar = "wmoStaNum,validTime,rptType"
reqPar += ",latitude,longitude,staElev"
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
pdq.addConstraint("dataTime","BBBBB:00.0",">=")
pdq.addConstraint("dataTime","EEEEE:00.0","<=")
# 5.1 execute() returns a ResponseMessageGeneric
pdq.requestAllLevels()
rmg = pdq.execute()
# 5.1, cont'd. RMG's payload is a PointDataContainer
pdc = rmg.getContents()
# return ResponseMessageGeneric(pdc)
# Get the data for each requested parameter.
ista = pdc.getPointDataTypes().get("wmoStaNum").getIntData()
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
if len(tobs) == 0 :
msg = "couldn't get data"
return ResponseMessageGeneric(msg)
# D-2D format files expect depression
i = len(tman)-1
while i>=0 :
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"
i = iMan = iSigT = iSigW = iTrop = iMxW = 0
while i < len(tobs) :
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 += 100
iSigT += 120
iSigW += 120
iTrop += 5
iMxW += 5
i += 1
continue
msg += str(ista[i]) + ","
msg += str(tobs[i]/1000) + ","
msg += "%.4f"%lat[i] + ","
msg += "%.4f"%lon[i] + ","
msg += "%.0f"%elev[i] + ","
msg += str(ista[i]) + ","
msg += str(nman[i]) + ","
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 += 100
msg += str(nsigt[i]) + ","
kk = iSigT + nsigt[i]
if nsigt[i]>0 : msg += "%.1f"%psigt[iSigT]
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 += 120
msg += str(ntrop[i]) + ","
kk = iTrop + ntrop[i]
if ntrop[i]>0 : msg += "%.1f"%ptrop[iTrop]
k = iTrop + 1
while k < kk :
msg += "|" + "%.1f"%ptrop[k];
k += 1
msg += ","
if ntrop[i]>0 : msg += "%.1f"%ttrop[iTrop]
k = iTrop + 1
while k < kk :
msg += "|" + "%.1f"%ttrop[k];
k += 1
msg += ","
if ntrop[i]>0 : msg += "%.1f"%tdtrop[iTrop]
k = iTrop + 1
while k < kk :
msg += "|" + "%.1f"%tdtrop[k];
k += 1
msg += ","
if ntrop[i]>0 : msg += "%.1f"%fftrop[iTrop]
k = iTrop + 1
while k < kk :
msg += "|" + "%.1f"%fftrop[k];
k += 1
msg += ","
if ntrop[i]>0 : msg += "%.1f"%ddtrop[iTrop]
k = iTrop + 1
while k < kk :
msg += "|" + "%.1f"%ddtrop[k];
k += 1
msg += ","
iTrop += 5
msg += str(nmxw[i]) + ","
kk = iMxW + nmxw[i]
if nmxw[i]>0 : msg += "%.1f"%pmxw[iMxW]
k = iMxW + 1
while k < kk :
msg += "|" + "%.1f"%pmxw[k];
k += 1
msg += ","
if nmxw[i]>0 : msg += "%.1f"%ffmxw[iMxW]
k = iMxW + 1
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
return ResponseMessageGeneric(msg)