Omaha #3599 Update grid inventory scirpts to DAF.
Change-Id: I0ede4fae07d4b393348bf636612df0f81eb80bef Former-commit-id:37e89b5fda
[formerly3adeed0277
] [formerly79fea328f3
[formerly 881f242499a9130dd21fba9e5f65788627a95180]] Former-commit-id:79fea328f3
Former-commit-id:08efd3fb84
This commit is contained in:
parent
49fb546f20
commit
163fa45af2
2 changed files with 220 additions and 78 deletions
|
@ -1,4 +1,23 @@
|
|||
#!/bin/csh
|
||||
##
|
||||
# This software was developed and / or modified by Raytheon Company,
|
||||
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
#
|
||||
# U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
# This software product contains export-restricted data whose
|
||||
# export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
# to non-U.S. persons whether in the United States or abroad requires
|
||||
# an export license or other authorization.
|
||||
#
|
||||
# Contractor Name: Raytheon Company
|
||||
# Contractor Address: 6825 Pine Street, Suite 340
|
||||
# Mail Stop B8
|
||||
# Omaha, NE 68106
|
||||
# 402.291.0100
|
||||
#
|
||||
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
# further licensing information.
|
||||
##
|
||||
#
|
||||
# A script wrapper that is meant to get inventories of gridded data
|
||||
# from the A-II database. The data is output to stdout as ASCII.
|
||||
|
@ -53,6 +72,15 @@
|
|||
# submitted to the UEngine instead of cleaning it up. The path to the
|
||||
# finalized python is /tmp/a2rdmdlNNNNN.py where NNNNN is a unix process id.
|
||||
#
|
||||
# Gets all available raob data in the A-II database over a specified range of
|
||||
# times. The data is output to stdout as ASCII.
|
||||
#
|
||||
# SOFTWARE HISTORY
|
||||
#
|
||||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# 2014-10-22 3599 nabowle Initial modification. Changed to properly call DAF version.
|
||||
#
|
||||
set rmpy = yes
|
||||
if ( "$1" == "p" ) then
|
||||
set rmpy = no
|
||||
|
@ -112,16 +140,7 @@ if ( $status == 0 || $#ids > 1 ) then
|
|||
endif
|
||||
set sss = $mmm
|
||||
endif
|
||||
#
|
||||
if ( "$*" == "+" ) then
|
||||
set varList = `$me $sss`
|
||||
foreach onevar ( $varList )
|
||||
echo ${onevar}:
|
||||
$me $sss $onevar | tr '\n' ' '
|
||||
echo
|
||||
end
|
||||
exit
|
||||
endif
|
||||
|
||||
#
|
||||
# Locate python stub that we will modify to create the final python logic.
|
||||
#
|
||||
|
@ -142,12 +161,36 @@ endif
|
|||
#
|
||||
grep DataAccessLayer $stubpy >& /dev/null
|
||||
if ( $status == 0 ) then
|
||||
set method = "daf"
|
||||
if ( "$*" == "+" ) then
|
||||
/awips2/python/bin/python $stubpy --mode fieldplane --srcId $sss
|
||||
else if ( "$1" == "" ) then
|
||||
/awips2/python/bin/python $stubpy --mode field --srcId $sss
|
||||
else if ( "$1" == "@" ) then
|
||||
/awips2/python/bin/python $stubpy --mode time --srcId $sss
|
||||
else if ( "$2" == "" ) then
|
||||
/awips2/python/bin/python $stubpy --mode plane --srcId $sss --varAbrev $1
|
||||
else if ( "$3" == "" ) then
|
||||
/awips2/python/bin/python $stubpy --mode time --srcId $sss --lvlName $1 --varAbrev $2
|
||||
else if ( "$4" == "" ) then
|
||||
/awips2/python/bin/python $stubpy --mode time --srcId $sss --lvlName $1 --lvlOne $2 --varAbrev $3
|
||||
else
|
||||
/awips2/python/bin/python $stubpy --mode time --srcId $sss --lvlName $1 --lvlOne $2 --lvlTwo $3 --varAbrev $4
|
||||
endif
|
||||
else
|
||||
#
|
||||
if ( "$*" == "+" ) then
|
||||
set varList = `$me $sss`
|
||||
foreach onevar ( $varList )
|
||||
echo ${onevar}:
|
||||
$me $sss $onevar | tr '\n' ' '
|
||||
echo
|
||||
end
|
||||
exit
|
||||
endif
|
||||
|
||||
#
|
||||
# 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
|
||||
|
@ -161,53 +204,51 @@ else
|
|||
exit
|
||||
endif
|
||||
source $ueenv
|
||||
endif
|
||||
#
|
||||
# Modify the text of special tags in stub to create finalized script.
|
||||
#
|
||||
set specpy = /tmp/a2invmdl${$}.py
|
||||
rm -rf $specpy >& /dev/null
|
||||
touch $specpy
|
||||
chmod 775 $specpy
|
||||
set plane = no
|
||||
if ( "$1" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/field/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed 's/^.*VVVVV.*$//g' >> $specpy
|
||||
else if ( "$1" == "@" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed 's/^.*VVVVV.*$//g' >> $specpy
|
||||
else if ( "$2" == "" ) then
|
||||
set plane = yes
|
||||
cat $stubpy | sed "s/MMMMM/plane/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$1/g" >> $specpy
|
||||
else if ( "$3" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$2/g" >> $specpy
|
||||
else if ( "$4" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed "s/LLLLL/$2/g"| \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$3/g" >> $specpy
|
||||
else
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed "s/LLLLL/$2/g" | \
|
||||
sed "s/22222/$3/g" | sed "s/VVVVV/$4/g" >> $specpy
|
||||
endif
|
||||
if ( "$method" == "daf" ) then
|
||||
/awips2/python/bin/python $specpy
|
||||
else if ( "$plane" == "no" ) then
|
||||
cd $UE_BIN_PATH
|
||||
( uengine -r python < $specpy ) |& grep attributes | cut '-d"' -f4
|
||||
else
|
||||
cd $UE_BIN_PATH
|
||||
( uengine -r python < $specpy ) |& sed 's|.*</items>.*|@|g' | \
|
||||
grep -E 'attributes|@' | cut '-d"' -f4 | tr '\n' ' ' | tr '@' '\n' | \
|
||||
sed 's/ -999999.0//g' | sed 's/^ *//g' | sed 's/ *$//g'
|
||||
endif
|
||||
if ( "$rmpy" == "yes" ) rm -rf $specpy >& /dev/null
|
||||
#
|
||||
|
||||
#
|
||||
# Modify the text of special tags in stub to create finalized script.
|
||||
#
|
||||
set specpy = /tmp/a2invmdl${$}.py
|
||||
rm -rf $specpy >& /dev/null
|
||||
touch $specpy
|
||||
chmod 775 $specpy
|
||||
set plane = no
|
||||
if ( "$1" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/field/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed 's/^.*VVVVV.*$//g' >> $specpy
|
||||
else if ( "$1" == "@" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed 's/^.*VVVVV.*$//g' >> $specpy
|
||||
else if ( "$2" == "" ) then
|
||||
set plane = yes
|
||||
cat $stubpy | sed "s/MMMMM/plane/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed 's/^.*TTTTT.*$//g' | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$1/g" >> $specpy
|
||||
else if ( "$3" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed 's/^.*LLLLL.*$//g' | \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$2/g" >> $specpy
|
||||
else if ( "$4" == "" ) then
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed "s/LLLLL/$2/g"| \
|
||||
sed 's/^.*22222.*$//g' | sed "s/VVVVV/$3/g" >> $specpy
|
||||
else
|
||||
cat $stubpy | sed "s/MMMMM/time/g" | sed "s/SSSSS/$sss/g" | \
|
||||
sed "s/TTTTT/$1/g" | sed "s/LLLLL/$2/g" | \
|
||||
sed "s/22222/$3/g" | sed "s/VVVVV/$4/g" >> $specpy
|
||||
endif
|
||||
if ( "$plane" == "no" ) then
|
||||
cd $UE_BIN_PATH
|
||||
( uengine -r python < $specpy ) |& grep attributes | cut '-d"' -f4
|
||||
else
|
||||
cd $UE_BIN_PATH
|
||||
( uengine -r python < $specpy ) |& sed 's|.*</items>.*|@|g' | \
|
||||
grep -E 'attributes|@' | cut '-d"' -f4 | tr '\n' ' ' | tr '@' '\n' | \
|
||||
sed 's/ -999999.0//g' | sed 's/^ *//g' | sed 's/ *$//g'
|
||||
endif
|
||||
#if ( "$rmpy" == "yes" ) rm -rf $specpy >& /dev/null
|
||||
#
|
||||
endif
|
||||
|
||||
|
|
|
@ -1,22 +1,123 @@
|
|||
# Get inventories
|
||||
##
|
||||
# This software was developed and / or modified by Raytheon Company,
|
||||
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
#
|
||||
# U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
# This software product contains export-restricted data whose
|
||||
# export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
# to non-U.S. persons whether in the United States or abroad requires
|
||||
# an export license or other authorization.
|
||||
#
|
||||
# Contractor Name: Raytheon Company
|
||||
# Contractor Address: 6825 Pine Street, Suite 340
|
||||
# Mail Stop B8
|
||||
# Omaha, NE 68106
|
||||
# 402.291.0100
|
||||
#
|
||||
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
# further licensing information.
|
||||
##
|
||||
|
||||
import CatalogQuery
|
||||
query = CatalogQuery.CatalogQuery("grid")
|
||||
mode = "MMMMM"
|
||||
# Gets inventories of gridded data from the A-II database. The data is output
|
||||
# to stdout as ASCII.
|
||||
#
|
||||
# SOFTWARE HISTORY
|
||||
#
|
||||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# 2014-10-22 3599 nabowle Initial modification. Convert to DAF.
|
||||
#
|
||||
|
||||
if mode == "field" :
|
||||
query.setDistinctField("info.parameter.abbreviation")
|
||||
elif mode == "plane" :
|
||||
query.setDistinctField("info.level.masterLevel.name")
|
||||
query.setDistinctField("info.level.levelonevalue")
|
||||
query.setDistinctField("info.level.leveltwovalue")
|
||||
else :
|
||||
query.setDistinctField("dataTime")
|
||||
import argparse
|
||||
import numpy
|
||||
import sys
|
||||
|
||||
query.addConstraint("info.datasetId", "SSSSS")
|
||||
query.addConstraint("info.level.masterLevel.name", "TTTTT")
|
||||
query.addConstraint("info.level.levelonevalue", "LLLLL")
|
||||
query.addConstraint("info.level.leveltwovalue", "22222")
|
||||
query.addConstraint("info.parameter.abbreviation", "VVVVV")
|
||||
from ufpy.dataaccess import DataAccessLayer
|
||||
|
||||
return query.executeWrapped()
|
||||
def get_args():
|
||||
parser = argparse.ArgumentParser(conflict_handler="resolve")
|
||||
parser.add_argument("-h", action="store", dest="host",
|
||||
help="EDEX server hostname (optional)", metavar="hostname")
|
||||
parser.add_argument("--srcId", action="store", dest="srcId",
|
||||
help="Unique alphanumeric name for gridded data source",
|
||||
metavar="srcId")
|
||||
parser.add_argument("--varAbrev", action="store", dest="varAbrev",
|
||||
help="Variable abreviation", metavar="varAbrev")
|
||||
parser.add_argument("--lvlOne", action="store", dest="lvlOne",
|
||||
help="Level One value", metavar="lvlOne", type=float)
|
||||
parser.add_argument("--lvlTwo", action="store", dest="lvlTwo",
|
||||
help="Level Two value", metavar="lvlTwo", type=float)
|
||||
parser.add_argument("--lvlName", action="store", dest="lvlName",
|
||||
help="Master level name", metavar="lvlName")
|
||||
parser.add_argument("--mode", action="store", dest="mode", default="time",
|
||||
help="Mode - time, plane, field, or fieldplane")
|
||||
return parser.parse_args()
|
||||
|
||||
def main():
|
||||
user_args = get_args()()
|
||||
|
||||
if user_args.host:
|
||||
DataAccessLayer.changeEDEXHost(user_args.host)
|
||||
|
||||
req = DataAccessLayer.newDataRequest("grid")
|
||||
|
||||
if not user_args.srcId:
|
||||
print >> sys.stderr, "srcId not provided"
|
||||
return
|
||||
req.addIdentifier("info.datasetId", user_args.srcId)
|
||||
|
||||
if user_args.varAbrev:
|
||||
req.setParameters(user_args.varAbrev)
|
||||
if user_args.lvlName is not None:
|
||||
req.addIdentifier("info.level.masterLevel.name", user_args.lvlName)
|
||||
if user_args.lvlOne is not None:
|
||||
req.addIdentifier("info.level.levelonevalue", numpy.float64(user_args.lvlOne))
|
||||
if user_args.lvlTwo is not None:
|
||||
req.addIdentifier("info.level.leveltwovalue", numpy.float64(user_args.lvlTwo))
|
||||
|
||||
mode = user_args.mode
|
||||
if mode not in ["time", "plane", "field", "fieldplane"]:
|
||||
print >> sys.stderr, "mode must be one of time, plane, field, or fieldplane."
|
||||
return
|
||||
|
||||
msg = "";
|
||||
if mode == "time":
|
||||
times = DataAccessLayer.getAvailableTimes(req)
|
||||
for time in times:
|
||||
timeStr = str(time)
|
||||
if "--" in timeStr:
|
||||
timeStr = timeStr[0:-22] + ".0" + timeStr[-22:-1] + ".0" + timeStr[-1]
|
||||
msg += timeStr[0:19] + ".0" + timeStr[19:] + "\n"
|
||||
elif mode == "plane":
|
||||
levels = DataAccessLayer.getAvailableLevels(req)
|
||||
for level in levels:
|
||||
msg += level_to_string(level) + "\n"
|
||||
elif mode == "field":
|
||||
params = DataAccessLayer.getAvailableParameters(req)
|
||||
msg = "\n".join(params)
|
||||
else: #fieldplane
|
||||
params = DataAccessLayer.getAvailableParameters(req)
|
||||
for param in params:
|
||||
msg += param + ":\n"
|
||||
req.setParameters(param)
|
||||
levels = DataAccessLayer.getAvailableLevels(req)
|
||||
if levels:
|
||||
levelStr = []
|
||||
for level in levels:
|
||||
levelStr.append(level_to_string(level))
|
||||
msg += " ".join(levelStr) + " \n"
|
||||
|
||||
print msg.strip("\n")
|
||||
|
||||
|
||||
def level_to_string(level):
|
||||
name = level.getMasterLevel().getName()
|
||||
lvlOne = str(level.getLevelonevalue())
|
||||
lvlTwo = str(level.getLeveltwovalue())
|
||||
msg = name + " " + lvlOne
|
||||
if lvlTwo not in ["None", "-999999.0"]:
|
||||
msg += " " + lvlTwo
|
||||
return msg
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Add table
Reference in a new issue