Merge branch 'master_13.4.1' into master_13.5.1

Conflicts (solved by taking all of 13.4.1-14):
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/ProductScriptsDialog.java
	cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java
	cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PolygonUtil.java
	cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenLayer.java
	cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenUIState.java
	cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/template/TemplateRunner.java
	rpms/awips2.core/Installer.ldm/component.spec
	rpms/build/i386/build.sh


Former-commit-id: 388fb201c6914d9ec7986a1017df57e5e2de0633
This commit is contained in:
Steve Harris 2013-06-10 15:07:59 -04:00
commit b0e5c758dc
6813 changed files with 467894 additions and 1058129 deletions

View file

@ -4,7 +4,7 @@
<comment></comment>
<projects>
<project>org.apache.activemq</project>
<project>org.apache.tools.bzip2</project>
<project>org.itadaki.bzip2</project>
<project>RadarServer</project>
<project>RadarServerWithMQ</project>
</projects>

View file

@ -26,7 +26,7 @@
This build script expects the following projects to exist at the same
level as this project's folder. com.raytheon.rcm.lib
com.raytheon.rcm.server com.raytheon.rcm.server.mq
com.raytheon.rcm.tools org.apache.tools.bzip2 The projects must be
com.raytheon.rcm.tools org.itadaki.bzip2 The projects must be
built before running this script.
-->
&substitute-targets;
@ -133,7 +133,7 @@
<include name="**/spring-context*.jar" />
<include name="**/quartz-all*.jar" />
</fileset>
<fileset dir="../org.apache.tools.bzip2" includes="**/*.jar" />
<fileset dir="../org.itadaki.bzip2" includes="**/*.jar" />
</copy>
<delete dir="bin" />

View file

@ -72,7 +72,7 @@
<fileset dir="${buildDirectory}/../../" includes="com.raytheon.rcm*/**"/>
</copy>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../" includes="org.apache.tools.bzip2*/**"/>
<fileset dir="${buildDirectory}/../../" includes="org.itadaki.bzip2*/**"/>
</copy>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../" includes="org.apache.*/**"/>

View file

@ -78,7 +78,7 @@
version="0.0.0"/>
<plugin
id="org.apache.tools.bzip2"
id="org.itadaki.bzip2"
download-size="0"
install-size="0"
version="0.0.0"

View file

@ -27,6 +27,21 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
/**
* TODO Add Description
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 03/07/2013 DR15495 zwang Load elevation info for SSSS radars
*
* </pre>
*
* @author dfriedman
* @version 1.0
*/
public class ElevationInfo {
// TODO: check all handling of -1/null vcp
@ -90,6 +105,15 @@ public class ElevationInfo {
fs.close();
}
// Load SSSS radar elevation lists
s = ElevationInfo.class.getResourceAsStream("ssssElevationLists.txt");
fs = new Scanner(s);
try {
Loader.loadSsssElevationInfo(fs, staticInfo);
} finally {
fs.close();
}
s = ElevationInfo.class.getResourceAsStream("tdwrElevations.txt");
fs = new Scanner(s);
try {

View file

@ -39,6 +39,21 @@ import com.raytheon.rcm.products.ElevationInfo.VCPInfo;
import com.raytheon.rcm.products.RadarProduct.Format;
import com.raytheon.rcm.products.RadarProduct.Param;
/**
* TODO Add Description
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 03/07/2013 DR15495 zwang Load elevation info for SSSS radars
*
* </pre>
*
* @author dfriedman
* @version 1.0
*/
public class Loader {
static List<RadarProduct> loadRadarInfoData(Scanner fs) {
@ -216,6 +231,43 @@ public class Loader {
}
}
public static void loadSsssElevationInfo(Scanner fs,
HashMap<Sel, int[]> staticInfo) {
Pattern p = Pattern.compile("^k*VCP(\\d+)$");
while (fs.hasNext()) {
String line = fs.nextLine();
Scanner ls = new Scanner(line);
if (skipComments(ls))
continue;
try {
String radarID = ls.next();
String id = ls.next();
int vcp = 0;
ls.next(); // Unused op mode
int nElevs = ls.nextInt();
int[] elevs = new int[nElevs];
for (int i = 0; i < elevs.length; ++i)
elevs[i] = (int) (ls.nextDouble() * 10.0);
Matcher m = p.matcher(id);
if (m.matches())
vcp = Integer.parseInt(m.group(1));
else if (id.equals("OTR"))
vcp = ElevationInfo.OTR_OR_RMR_CODE;
else
/* RMR is the same as OTR. We do not care about the TDWR
* entries, we will use the radar-specific one. Actually,
* we shouldn't bother with VCP80 and VCP90 either (TODO: ?)
*/
continue;
Sel sel = new Sel(radarID, vcp);
staticInfo.put(sel, elevs);
} catch (NoSuchElementException e) {
// TODO:
}
}
}
public static void loadTdwrElevationInfo(Scanner fs,
HashMap<Sel, int[]> staticInfo) {
ArrayList<Integer> elevs = new ArrayList<Integer>(25);

View file

@ -123,6 +123,7 @@
136|256 | 0 | 4.0 | 0 | SO | SuperOb (SO) | SuperOb | | | | | | | | | |82
137| 16 | 9 | 1.0 | 230 | ULR | User Selectable Lyr Refl (ULR)| Radial | | | | | | | | | |88
139| 0 | 0 | 0.0 | 230 | MRU | Rapid Update Mesocyclone (MRU)| Graphic | y | | | | | | | | |91
140| 0 | 0 | 0.0 | 230 | GFM | Gust Front MIGFA (GFM) | Generic | | | | | | | | | |28
141| 0 | 0 | 0.0 | 230 | MD | Mesocyclone (MD) | Graphic | | | | | | | | | |92
143| 0 | 0 | 0.0 | 230 | TRU | TVS Rapid Update (TRU) | Graphic | y | | | | | | | | |93
149| 0 | 0 | 0.0 | 230 | DMD | Digital Meso Detection (DMD) | Generic | y | | | | | | | | |94

View file

@ -0,0 +1,28 @@
#This file stores elevation lists for SSSS radars
#This file stores the elevation angle lists for the OTR, RPS and RMR.
#
#The format is,
#radarID, List-Name type number-of-values value1 value2... valueN
#radarID: klgx is the only radar for now
#List-Name: Name for a angle set. It can be OTR, RMR or VCPxx.
#type: Type of the list. for VCP is the storm or clear-air. For the OTR and
# RMR is none.
#number-of-values: How many angles is in this list.
#valuen: A elevation angle value.
#
#Keep one list one line!
# klgx
#For the OTR of WSR-88D
klgx OTR none 40 0.2 0.5 0.9 1.3 1.5 1.8 2.1 2.4 2.5 2.9 3.1 3.4 3.5 3.8 4.0 4.3 4.5 4.8 5.1 5.3 6.0 6.1 6.2 6.4 7.5 7.7 8.0 8.7 9.7 9.9 10.0 12.0 12.2 12.5 14.0 14.6 15.5 15.6 16.7 19.5
#For RMR of WSR-88D
klgx RMR none 40 0.2 0.5 0.9 1.3 1.5 1.8 2.1 2.4 2.5 2.9 3.1 3.4 3.5 3.8 4.0 4.3 4.5 4.8 5.1 5.3 6.0 6.1 6.2 6.4 7.5 7.7 8.0 8.7 9.7 9.9 10.0 12.0 12.2 12.5 14.0 14.6 15.5 15.6 16.7 19.5
#For RPS of WSR-88D
klgx VCP11 storm 15 0.2 0.5 1.5 2.4 3.4 4.3 5.3 6.2 7.5 8.7 10.0 12.0 14.0 16.7 19.5
klgx VCP12 storm 15 0.2 0.5 0.9 1.3 1.8 2.4 3.1 4.0 5.1 6.4 8.0 10.0 12.5 15.6 19.5
klgx VCP21 storm 10 0.2 0.5 1.5 2.4 3.4 4.3 6.0 9.9 14.6 19.5
klgx VCP121 storm 10 0.2 0.5 1.5 2.4 3.4 4.3 6.0 9.9 14.6 19.5
klgx VCP211 storm 15 0.2 0.5 1.5 2.4 3.4 4.3 5.3 6.2 7.5 8.7 10.0 12.0 14.0 16.7 19.5
klgx VCP212 storm 15 0.2 0.5 0.9 1.3 1.8 2.4 3.1 4.0 5.1 6.4 8.0 10.0 12.5 15.6 19.5
klgx VCP221 storm 10 0.2 0.5 1.5 2.4 3.4 4.3 6.0 9.9 14.6 19.5
klgx VCP31 clear-air 6 0.2 0.5 1.5 2.5 3.5 4.5
klgx VCP32 clear-air 6 0.2 0.5 1.5 2.5 3.5 4.5

View file

@ -30,9 +30,29 @@ import com.raytheon.rcm.products.ProductInfo.Selector;
import com.raytheon.rcm.products.RadarProduct;
import com.raytheon.rcm.products.RadarProduct.Param;
/**
* Representation of an RPS list
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 2009-04-22 #1693 D. Friedman Initial checkin
* ...
* 2013-01-31 DR 15458 D. Friedman Define UNSPECIFIED_VCP
* </pre>
*
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class RpsList implements Cloneable {
/**
* Indicates an a list that is appropriate for any VCP or an unspecified
* VCP.
*/
public static final int UNSPECIFIED_VCP = -1;
/* just a guess of what will be useful... */
protected int opMode;
protected int vcp;

View file

@ -7,7 +7,6 @@ Export-Package: com.raytheon.rcm.mqsrvr
Require-Bundle: com.raytheon.rcm.server;bundle-version="1.0.0",
org.apache.activemq;bundle-version="5.2.0",
com.raytheon.rcm.lib;bundle-version="1.0.0",
org.apache.tools.bzip2;bundle-version="1.0.0",
javax.jms;bundle-version="1.0.0",
org.apache.qpid;bundle-version="1.0.0"
Import-Package: org.apache.tools.bzip2
org.apache.qpid;bundle-version="1.0.0",
org.itadaki.bzip2;bundle-version="0.9.1"

View file

@ -43,7 +43,7 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.qpid.client.AMQConnectionFactory;
import org.apache.tools.bzip2.CBZip2InputStream;
import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.rcm.config.EndpointConfig;
import com.raytheon.rcm.config.awips1.Awips1ProdDistInfoBuilder;
@ -659,11 +659,7 @@ public class DataArchiveEndpoint extends RadarEventAdapter {
try {
InputStream ins = new ByteArrayInputStream(msg, 120,
msg.length - 120);
char c1 = (char) ins.read();
char c2 = (char) ins.read();
if (c1 != 'B' || c2 != 'Z')
throw new IOException("Not a bzip2 stream");
ins = new CBZip2InputStream(ins);
ins = new BZip2InputStream(ins, false);
// ByteArrayOutputStream outs = new
// ByteArrayOutputStream(uncompressedSize);
uncompressed = new byte[uncompressedSize];

View file

@ -13,10 +13,9 @@ Export-Package: com.raytheon.rcm.coll,
com.raytheon.rcm.rpsmgr,
com.raytheon.rcm.server
Require-Bundle: com.raytheon.rcm.lib;bundle-version="1.0.0",
org.apache.tools.bzip2;bundle-version="1.0.0",
org.apache.commons.logging;bundle-version="1.0.4",
org.springframework;bundle-version="2.5.6"
org.springframework;bundle-version="2.5.6",
org.itadaki.bzip2;bundle-version="0.9.1"
Import-Package: com.raytheon.uf.common.util,
org.apache.log4j,
org.apache.tools.bzip2,
org.junit

View file

@ -58,6 +58,20 @@ import com.raytheon.rcm.server.StatusManager.RadarStatus;
/* TODO: Log PRR messages for requests the mgr sent? (RPSHandler::handlePRR)
*/
/**
* Manages current RPS lists and requests for changes to RPS lists.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 2009-04-22 #1693 D. Friedman Initial checkin
* ...
* 2013-01-31 DR 15458 D. Friedman Explicitly handle UNSPECIFIED_VCP.
* </pre>
*
*/
public class RPSListManager extends RadarEventAdapter {
// All RPS list requests will use this for the sequence number.
@ -149,7 +163,7 @@ public class RPSListManager extends RadarEventAdapter {
RadarStatus status = radarServer.getStatusManager().getRadarStatus(
radarID);
int opMode;
int vcp;
int currentVCP;
int[] gsmCuts;
try {
byte[] msg = status.getCurrentGSM();
@ -157,7 +171,7 @@ public class RPSListManager extends RadarEventAdapter {
return "Not connected or no status information received yet";
GSM gsm = GSM.decode(msg);
opMode = gsm.opMode;
vcp = gsm.vcp;
currentVCP = gsm.vcp;
gsmCuts = gsm.cuts;
} catch (RuntimeException e) {
Log.errorf("Error reading GSM: %s", e);
@ -165,23 +179,22 @@ public class RPSListManager extends RadarEventAdapter {
return "Error getting radar status";
}
int[] cuts = ElevationInfo.getInstance().getScanElevations(radarID, vcp);
int[] cuts = ElevationInfo.getInstance().getScanElevations(radarID, currentVCP);
if (cuts == null && Util.getRadarType(rc) == RadarType.WSR)
cuts = gsmCuts;
// TODO: INVALID_VCP
if (list.getVcp() > 0 && list.getVcp() != vcp) {
if (list.getVcp() != RpsList.UNSPECIFIED_VCP && list.getVcp() != currentVCP) {
if (store)
return null; // TODO: Should warn instead.
else
return String.format("RPS list for VCP %d. Current VCP is %d",
list.getVcp(), vcp);
list.getVcp(), currentVCP);
}
list = (RpsList) list.clone();
list.setVcp(vcp);
list.setVcp(currentVCP);
list = getMergedRpsListForRadar(rc, opMode, vcp, cuts, list);
list = getMergedRpsListForRadar(rc, opMode, currentVCP, cuts, list);
if (list != null) {
// TODO: Should persist this
currentRpsLists.put(rc.getRadarID(), (RpsList) list.clone());

View file

@ -27,15 +27,15 @@ import java.io.InputStream;
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import org.apache.tools.bzip2.CBZip2InputStream;
import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.rcm.event.ConfigEvent;
import com.raytheon.rcm.event.RadarEvent;
import com.raytheon.rcm.event.RadarEventAdapter;
import com.raytheon.rcm.message.GraphicProduct;
import com.raytheon.rcm.message.GraphicProduct.PDB;
import com.raytheon.rcm.message.Message;
import com.raytheon.rcm.message.MessageFormatException;
import com.raytheon.rcm.message.GraphicProduct.PDB;
/**
* A radar server component that delivers radar products to an EDEX file
@ -172,11 +172,7 @@ public class Awips2Endpoint extends RadarEventAdapter {
try {
InputStream ins = new ByteArrayInputStream(msg, 120,
msg.length - 120);
char c1 = (char) ins.read();
char c2 = (char) ins.read();
if (c1 != 'B' || c2 != 'Z')
throw new IOException("Not a bzip2 stream");
ins = new CBZip2InputStream(ins);
ins = new BZip2InputStream(ins, false);
// ByteArrayOutputStream outs = new
// ByteArrayOutputStream(uncompressedSize);
uncompressed = new byte[uncompressedSize];

View file

@ -2,6 +2,6 @@
<?eclipse-pydev version="1.0"?>
<pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.5</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
</pydev_project>

View file

@ -228,6 +228,8 @@
<var name="cave.arch" value="arch.x86" />
<extractCAVEini
zip.file="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip" />
<!-- add the Xss jvm parameter to the 32-bit CAVE -->
<echo file="/tmp/cave/cave.ini" append="true" message="-Xss512k" />
<antcall target="generateDynamicCAVE" />
<!-- Update the 32-bit CAVE zip file -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"

View file

@ -232,14 +232,6 @@
<param name="feature"
value="com.raytheon.uf.viz.ncep.dataplugins.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.uf.viz.ncep.displays.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.uf.viz.ncep.nsharp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.viz.avnfps.feature" />
@ -252,6 +244,14 @@
<param name="feature"
value="com.raytheon.uf.viz.d2d.xy.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.uf.viz.ncep.displays.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.uf.viz.ncep.nsharp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.uf.viz.d2d.nsharp.feature" />
@ -304,6 +304,10 @@
<param name="feature"
value="com.raytheon.uf.viz.gisdatastore.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature"
value="com.raytheon.viz.dataaccess.feature" />
</antcall>
<antcall target="cleanup.features" />
</target>

View file

@ -1,19 +1,19 @@
##
# 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
# 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
#
# 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.
##
@ -140,10 +140,20 @@
# Relationship Type: In Response to
# Status: TEST
# Title: AvnFPS: Lack of customization in QC check
#
#
#**
#*
#*
#* <pre>
#* SOFTWARE HISTORY
#* Date Ticket# Engineer Description
#* ------------ ---------- ----------- --------------------------
#* Initial creation.
#* Mar 07, 2013 1735 rferrel Changes to obtain grid data for a list of sites.
##
#
import logging, os, time, ConfigParser
import Avn, AvnLib, AvnParser
import Avn, AvnLib, AvnParser, JUtil, cPickle
import PointDataView, GfeValues
_Missing = ''
@ -157,7 +167,7 @@ _Keys = ['Temp', 'DwptT', 'WDir', 'WSpd', 'WGust', 'Obvis', 'Vsby', \
'Ints2', 'Prob2', 'PTyp3', 'Ints3', 'Prob3']
_NumHours = 36
Parameters = ['Sky', 'T', 'Td', 'Wind', 'WindGust', 'PoP', 'Wx', 'WindGust']
Parameters = ['Sky', 'T', 'Td', 'Wind', 'WindGust', 'PoP', 'Wx']
Translate = { 'Sky':'Sky', 'Temp':'T', 'DwptT':'Td', 'WDir':'WindDir', 'WSpd':'WindSpd', 'WGust':'WindGust',
'PoP1h':'PoP', 'Obvis':'Wx', 'PoP':'PoP', 'Tstm':'Wx', 'Tint':'Wx', 'PTyp1':'Wx', 'Prob1':'Wx', 'Ints1':'Wx',
@ -294,7 +304,6 @@ def _cvt(itime, d):
def _getData(pdc, firstTime):
organizedData = {}
data = []
pdc = None
if pdc is not None :
for i in range(pdc.getCurrentSz()):
jpdv = pdc.readRandom(i)
@ -444,8 +453,11 @@ def _readPrbConf():
prb_conf['after9hr'][wx] = conf.getint('after9hr',wx)
return prb_conf
def makeData(siteID, timeSeconds):
def makeData(siteID, timeSeconds):
data = retrieveData(siteID, timeSeconds)
return formatData(siteID, timeSeconds, data)
def formatData(siteID, timeSeconds, data):
if data is None or data['issuetime'] < time.time() - 86400:
msg = 'Grid data is not available'
_Logger.info(msg)
@ -492,34 +504,57 @@ def makeTable(siteID, timeSeconds):
msg = 'Grid data for %s is not available', siteID
raise Avn.AvnError(msg)
def retrieveData(siteID, timeSeconds, parameters=Parameters):
results = _retrieveMapData([siteID], timeSeconds, parameters)
return results[siteID]
def retrieveData(siteID, timeSeconds):
def retrieveMapData(siteIDs, timeSeconds, parameters=Parameters):
r = _retrieveMapData(siteIDs, timeSeconds, parameters=Parameters)
results = {}
for siteID in siteIDs:
results[siteID] = cPickle.dumps(r[siteID])
return JUtil.pyDictToJavaMap(results)
def _retrieveMapData(siteIDs, timeSeconds, parameters=Parameters):
import JUtil
from com.raytheon.uf.common.dataplugin.gfe.request import GetPointDataRequest
from com.vividsolutions.jts.geom import Coordinate
from com.raytheon.viz.aviation.guidance import GuidanceUtil
from com.raytheon.uf.viz.core.localization import LocalizationManager
config = AvnParser.getTafSiteCfg(siteID)
lat = config['geography']['lat']
lon = config['geography']['lon']
gfeSiteId = LocalizationManager.getInstance().getCurrentSite()
task = GetPointDataRequest()
task.setSiteID(gfeSiteId);
c = Coordinate(float(lon), float(lat))
task.setCoordinate(c)
task.setNumberHours(_NumHours)
task.setStartTime(long(timeSeconds * 1000))
for p in Parameters:
task.addParameter(p)
db = gfeSiteId + '_GRID__Official_00000000_0000'
task.setDatabaseID(db)
pdc = GuidanceUtil.getGFEPointData(task)
data = _getData(pdc, timeSeconds * 1000)
if data is None :
_Logger.info('Data not available for %s', siteID)
return data
for siteID in siteIDs:
config = AvnParser.getTafSiteCfg(siteID)
lat = config['geography']['lat']
lon = config['geography']['lon']
c = Coordinate(float(lon), float(lat))
task.addCoordinate(c)
task.setNumberHours(_NumHours)
task.setStartTime(long(timeSeconds * 1000))
for p in parameters:
task.addParameter(p)
pdcs = GuidanceUtil.getGFEPointsData(task)
results = {}
if pdcs is None :
for siteId in siteIDs:
_Logger.info('Data not available for %s', siteID)
results[siteID] = None
return results
i = 0
for siteID in siteIDs:
pdc = pdcs.getContainer(i)
if i < pdcs.getSize() :
++i
data = _getData(pdc, timeSeconds * 1000)
if data is None:
_Logger.info('Data not available for %s', siteID)
results[siteID] = data
return results
###############################################################################
if __name__ == '__main__':

View file

@ -1,19 +1,19 @@
##
# 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
# 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
#
# 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.
##
@ -125,10 +125,20 @@
# IFPS grids monitoring module
# Author: George Trojan, SAIC/MDL, August 2003
# last update: 04/20/06
#**
#*
#*
#* <pre>
#* SOFTWARE HISTORY
#* Date Ticket# Engineer Description
#* ------------ ---------- ----------- --------------------------
#* Initial creation.
#* Mar 07, 2013 1735 rferrel Use SiteGridManager to limit calls to server.
##
import logging, time
import Avn, AvnLib, Globals, GridData, MonitorP, TafDecoder, TafGen
import logging, time, cPickle
import Avn, AvnLib, Globals, GridData, MonitorP, TafDecoder, TafGen, JUtil
from com.raytheon.viz.aviation.monitor import SiteGridManager
_Logger = logging.getLogger(Avn.CATEGORY)
##############################################################################
@ -142,7 +152,21 @@ class Monitor(MonitorP.Monitor):
def __makeData(self, t):
try:
data = GridData.makeData(self.info['ident'], t)
siteID = self.info['ident']
timeSeconds = long(t)
if SiteGridManager.needData(timeSeconds) :
siteIDs = JUtil.javaStringListToPylist(SiteGridManager.getSiteIDs())
containersMap = GridData.retrieveMapData(siteIDs, timeSeconds)
SiteGridManager.setContainersMap(containersMap)
return None
o = SiteGridManager.getData(siteID, timeSeconds)
if o is None :
return None
ndata = cPickle.loads(o)
data = GridData.formatData(siteID, timeSeconds, ndata)
bbb = 'RRA'
tc=TafGen.TafGen('grid',data,bbb)
taf=tc.createTaf(False)

View file

@ -35,6 +35,7 @@ _Logger = logging.getLogger(Avn.CATEGORY)
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 07/22/09 njensen Initial Creation.
# 02/13/2013 1549 rferrel Change to properly display grid data.
#
#
#
@ -307,6 +308,7 @@ def tafgen(siteObjs, model, format='short', routine = False, highlightFlightCat=
return tafWithHeader
def __makeHeader(model, data):
#print '__makeHeader data: ', data
if data and data['itime'] and data['itime']['value']:
date = time.strftime('%m/%d/%y %H%M UTC', time.gmtime(data['itime']['value']))
else:
@ -460,12 +462,12 @@ def gridgenRetrieve(siteID):
d = (requestTime, data)
o['data'] = d
obj = pickle.dumps(o)
# print 'return gridgenRetrieve - siteID, data', siteID, d
#print 'return gridgenRetrieve - siteID, data', siteID, d
return obj
def gridgen(siteObjs, format='short', routine=False, highlightFlightCat=True):
siteObjs = JUtil.javaStringListToPylist(siteObjs)
# print 'GuidanceEntry:gridgen format, highlightFlightCat:', format, highlightFlightCat
#print 'GuidanceEntry:gridgen format, highlightFlightCat:', format, highlightFlightCat
currentTime = time.gmtime()
requestTime = time.mktime((currentTime[0], currentTime[1], currentTime[2], currentTime[3],
0, 0, currentTime[6], currentTime[7], currentTime[8])) - time.timezone
@ -496,9 +498,12 @@ def gridgen(siteObjs, format='short', routine=False, highlightFlightCat=True):
o = pickle.loads(siteObj)
siteID = o['siteID']
cacheRequestTime, data = o['data']
if data is not None :
data = data.values()[0]
if not firstSiteID:
firstSiteID = siteID
# print 'gridgen siteID, cacheRequestTime, data: ', cacheRequestTime, data
#print 'gridgen siteID, cacheRequestTime, data: ', siteID, cacheRequestTime, data
if cacheRequestTime != requestTime:
cacheList.append('++Cache out of date :%s' % siteID)
if data:

View file

@ -1,19 +1,19 @@
##
# 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
# 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
#
# 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.
##
@ -48,6 +48,16 @@
# Title: AvnFPS: Incorrect file permission on ISH files
#
#
#**
#*
#*
#* <pre>
#* SOFTWARE HISTORY
#* Date Ticket# Engineer Description
#* ------------ ---------- ----------- --------------------------
#* Initial creation.
#* Mar 25, 2013 1735 rferrel Retrieve only the last 24 hours of acars records.
##
from com.raytheon.viz.aviation.monitor import LlwsManager
import logging, os, time
@ -86,6 +96,10 @@ def writeLLWS(ident, data):
_Logger.error('Cannot write LLWS file for %s', ident)
def retrieve(siteID, info):
from datetime import timedelta
day = timedelta(days=1)
secondsPerDay = day.total_seconds()
msPerSecond = 1000.0
th = LLWSThread.Server(info)
t = 0
d = {}
@ -96,12 +110,17 @@ def retrieve(siteID, info):
profilerIds = th.processProfilerData(siteID)
for profilerId in profilerIds:
try :
shear = th.genShear(siteID, profilerId)
d[profilerId] = shear
except LLWSThread.InValid:
pass
shear = th.genShear(siteID, profilerId)
d[profilerId] = shear
except LLWSThread.InValid:
pass
acarsRec = LlwsManager.getAcarsRecord(siteID, 0)
# This gets all acarsRec in the database since 0 retrieves from the epoch.
# This may be ok if database is purged frequently.
# How far back should it go 1, 6, 12, 24 hours?
# acarsRec = LlwsManager.getAcarsRecord(siteID, 0)
refTime = long((time.time() - secondsPerDay) * msPerSecond)
acarsRec = LlwsManager.getAcarsRecord(siteID, refTime)
if acarsRec:
acarsId = siteID[1:]
th.processAcarsData(acarsId,acarsRec)
@ -111,7 +130,7 @@ def retrieve(siteID, info):
except LLWSThread.InValid:
pass
else:
_Logger.info('Missing ACARS Sounding data for %s.', siteID)
_Logger.info('Missing ACARS Sounding data for %s.', siteID)
radars = info['sites']['radars']
for radar in radars:
vwp = LlwsManager.getVerticalWindProfile(radar, 0)

View file

@ -95,7 +95,6 @@ class Monitor(MonitorP.Monitor):
def __compare(self, taf):
now = time.time()
text, maxval = [], -1.0
#data = Globals.DRC.getLLWS(self.info['ident'])
data = LLWSData.retrieve(self.info['ident'], self.info)
if data is None:
data = []

View file

@ -159,6 +159,17 @@
# Status: CLOSED
# Title: AvnFPS: AvnFPS regression based lightning forecast to use LAMP
#
#**
#*
#*
#* <pre>
#* SOFTWARE HISTORY
#* Date Ticket# Engineer Description
#* ------------ ---------- ----------- --------------------------
#* Initial creation.
#* Mar 25, 2013 1735 rferrel __initializeLLWSDictsLists now reads cfg data only for
#* desired site instead of all sites. So it is O(n) instead of O(n**2)
##
#
import logging, os, Queue, re, time, math, sys
import Avn, AvnParser, LLWSData, MetarData
@ -184,7 +195,6 @@ class Server(object):
__TimeOut = 10.0
def __init__(self, info):
#self.name = info['name']
self.profilerList = []
self.radarList = []
self.metarList = []
@ -207,7 +217,8 @@ class Server(object):
rList = []
aList = []
for m in AvnParser.getTafHeaders():
m = info['ident']
if m is not None:
siteDict = AvnParser.getTafSiteCfg(m)
try:
radars = siteDict['sites']['radars']
@ -226,17 +237,16 @@ class Server(object):
except KeyError:
acars = []
if profilers == [] and radars == [] and acars == []:
continue
#
# This TAF site needs to be monitored
self.metarList.append(m)
self.siteVWPsDict[m] = [radars,profilers,radar_cutoff,profiler_cutoff]
self.acarsDict[m] = [acars]
#
pList.extend(profilers)
rList.extend(radars)
aList.extend(acars)
if len(profilers) > 0 or len(radars) > 0 or len(acars) > 0 :
#
# This TAF site needs to be monitored
self.metarList.append(m)
self.siteVWPsDict[m] = [radars,profilers,radar_cutoff,profiler_cutoff]
self.acarsDict[m] = [acars]
#
pList.extend(profilers)
rList.extend(radars)
aList.extend(acars)
#
# Find all unique radars and profilers to monitor
self.profilerList = dict.fromkeys(pList).keys()

View file

@ -32,6 +32,7 @@ import ForecastPointDataRetrieve, NoDataException
# ------------ ---------- ----------- --------------------------
# 09/15/09 njensen Initial Creation.
# 26APR2012 14688 rferrel Use ForecastPointDataRetrieve.
# 03APR2013 1735 rferrel Limit retrieval for forecast times to the number used.
#
#
#
@ -39,23 +40,24 @@ import ForecastPointDataRetrieve, NoDataException
PARAMETERS = ['tstorm2hr', 'stationId', 'refTime', 'fcstHr']
LOOK_AHEAD = 3 # hours
SEC_PER_HOUR = 60*60
_Logger = logging.getLogger(Avn.CATEGORY)
def retrieve(siteID):
try:
pdc = ForecastPointDataRetrieve.retrieve('bufrmosLAMP', siteID, PARAMETERS)
def retrieve(siteID):
try:
pdc = ForecastPointDataRetrieve.retrieve('bufrmosLAMP', siteID, PARAMETERS, forecastTimesLimit=3)
except NoDataException.NoDataException:
return None
pots = []
try:
# assume pdc[0] is 0 hour and not used in the forecast.
vtime = pdc[1]['refTime'] / 1000.0 + LOOK_AHEAD*3600
vtime = pdc[1]['refTime'] / 1000.0 + LOOK_AHEAD*SEC_PER_HOUR
for n in range(1, LOOK_AHEAD):
pdv = pdc[n]
pots.append(pdv['tstorm2hr'])
data = max([x for x in pots if 0<= x <= 100] + [0])
return {'from': vtime-LOOK_AHEAD*3600, 'to': vtime, 'prob': min(data, 100)}
data = max([x for x in pots if 0 <= x <= 100] + [0])
return {'from': vtime-LOOK_AHEAD*SEC_PER_HOUR, 'to': vtime, 'prob': min(data, 100)}
except KeyError:
return None

View file

@ -22,8 +22,7 @@
<displayList>
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<resourceType>PLAN_VIEW</resourceType>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorMapCapability">
@ -31,6 +30,7 @@
</capability>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
<perspectiveProperty xsi:type="d2dLoadProperties" overlayMatchTolerance="1"/>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">

View file

@ -22,10 +22,10 @@
<displayList>
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<resourceType>PLAN_VIEW</resourceType>
<resource>
<loadProperties xsi:type="gridLoadProperties"
displayType="CONTOUR" >
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false"
isVisible="true">

View file

@ -22,8 +22,7 @@
<displayList>
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<resourceType>PLAN_VIEW</resourceType>
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="colorMapCapability">
@ -31,6 +30,7 @@
</capability>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
<perspectiveProperty xsi:type="d2dLoadProperties" overlayMatchTolerance="1"/>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">

View file

@ -22,8 +22,7 @@
<displayList>
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<resourceType>PLAN_VIEW</resourceType>
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="colorMapCapability">
@ -31,6 +30,7 @@
</capability>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
<perspectiveProperty xsi:type="d2dLoadProperties" overlayMatchTolerance="1"/>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">

View file

@ -167,30 +167,17 @@ class Procedure (SmartScript.SmartScript):
# any grids. We need to do this because the GFE caches the original
# version of all grids and there's no way yet to turn this off.
minTDict = {}
maxTDict = {}
tDict = {}
tdDict = {}
minTRList = self.getWEInventory("MinT")
for tr in minTRList:
grid = self.getGrids(MODEL, "MinT", LEVEL, tr, mode = "First")
minTDict[tr] = grid
minTDict = self.getGrids(MODEL, "MinT", LEVEL, minTRList, mode = "First")
maxTRList = self.getWEInventory("MaxT")
for tr in maxTRList:
grid = self.getGrids(MODEL, "MaxT", LEVEL, tr, mode = "First")
maxTDict[tr] = grid
maxTDict = self.getGrids(MODEL, "MaxT", LEVEL, maxTRList, mode = "First")
TTRList = self.getWEInventory("T")
for tr in TTRList:
grid = self.getGrids(MODEL, "T", LEVEL, tr, mode = "First")
tDict[tr] = grid
tDict = self.getGrids(MODEL, "T", LEVEL, TTRList, mode = "First")
TdTRList = self.getWEInventory("Td")
for tr in TdTRList:
grid = self.getGrids(MODEL, "Td", LEVEL, tr, mode = "First")
tdDict[tr] = grid
tdDict = self.getGrids(MODEL, "Td", LEVEL, TdTRList, mode = "First")
# get the all locks by other users, so we can detect they are locked
# before attempting to modify them
@ -274,8 +261,7 @@ class Procedure (SmartScript.SmartScript):
if checkOnly:
self.createGrid(MODEL, "MaxLessThanMin", "SCALAR", mask.astype('float32'),
maxTR, minAllowedValue=0.0, maxAllowedValue= 1.0,
units="", descriptiveName="")
maxTR, minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force the change
if maxTR in maxTLocks:
msg = "Can't modify MaxT grid at " + str(maxTR) + \

View file

@ -1,19 +1,19 @@
##
# 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
# 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
#
# 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.
##
@ -31,6 +31,12 @@
# Author: Tom LeFebvre
# Contributor: Pablo Santos
# ----------------------------------------------------------------------------
# SOFTWARE HISTORY
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 3/6/2013 15658 ryu Merge in change from AWIPS I DR 21414, which fixed
# makeMaxWindGrid() for when center is outside domain.
# Mar 13, 2013 1793 bsteffen Performance improvements for TCMWindTool
# The MenuItems list defines the GFE menu item(s) under which the
# Procedure is to appear.
@ -1104,8 +1110,6 @@ class Procedure (SmartScript.SmartScript):
# fetches and returns all of the wind grids specified by the model
# name. Should be called before any new wind grids are created
def getBackgroundGrids(self, modelName):
bgDict = {}
siteID = self.getSiteID()
if modelName == "Fcst":
level = "SFC"
@ -1121,9 +1125,8 @@ class Procedure (SmartScript.SmartScript):
inv = self.getWEInventory(modelName, elementName, level)
for tr in inv:
bgDict[tr] = self.getGrids(modelName, elementName, level,
tr, mode="First")
bgDict = self.getGrids(modelName, elementName, level, inv,
mode="First")
return bgDict
def secondsToYYYYMMDDHH(self, baseTime):
@ -1309,10 +1312,9 @@ class Procedure (SmartScript.SmartScript):
# inside RMW gets a linear slope to largest of max wind forecasts
if inRadius <= 1.0:
dSdR = (outSpeed - inSpeed) / (outRadius - inRadius)
grid = where(mask, inSpeed + (dSdR * distanceGrid), grid)
grid[mask] = inSpeed + (dSdR * distanceGrid[mask])
else: # outside RMW
grid = where(mask, inSpeed * power((inRadius / distanceGrid), exponent),
grid)
grid[mask] = inSpeed * power((inRadius / distanceGrid[mask]), exponent)
# grid = clip(grid, 0.0, 200.0)
dirGrid = self.makeDirectionGrid(latGrid, lonGrid, center[0], center[1])
@ -1336,52 +1338,16 @@ class Procedure (SmartScript.SmartScript):
startTime = interpFcstList[0]["validTime"]
endTime = startTime + (123 * 3600) # 123 hours later
fcstIndex = 0
while fcstIndex < len(interpFcstList)-1:
f1 = interpFcstList[fcstIndex]
f2 = interpFcstList[fcstIndex + 1]
f1Time = interpFcstList[fcstIndex]['validTime']
f2Time = interpFcstList[fcstIndex + 1]['validTime']
print "Interpolating from:", time.asctime(time.gmtime(f1Time)), \
"to", time.asctime(time.gmtime(f2Time))
lat1, lon1 = f1['centerLocation']
lat2, lon2 = f2['centerLocation']
x1, y1 = self.getGridCell(lat1, lon1)
x2, y2 = self.getGridCell(lat2, lon2)
if x1 is None or y1 is None or x2 is None or y2 is None:
fcstIndex += 1
continue
dx = abs(x2 - x1)
dy = abs(y2 - y1)
dmax = max(dx, dy)
newInterval = float(interval) / dmax
newFcstList = self.interpolateWindFcst(f1, f2, newInterval)
print "Created", len(newFcstList), "new wind forecasts."
for f in newFcstList:
mag, dir = self.makeRankine(f, latGrid, lonGrid, pieSlices, radiiFactor)
maxWindGrid = where(greater(mag, maxWindGrid), mag, maxWindGrid)
fcstIndex += 1
if f2["validTime"] >= endTime:
break
start = AbsTime.AbsTime(startTime)
end = AbsTime.AbsTime(endTime)
timeRange = TimeRange.TimeRange(start, end)
# Used getGrids to calculate the maximum wind grid.
#
# Fetch the max of the wind grids just generated as this is very fast.
maxWindGrid, maxDirGrid = self.getGrids("Fcst", "Wind", "SFC", timeRange, mode="Max")
maxWindGrid = self.smoothGrid(maxWindGrid, 3)
self.createGrid("Fcst", "TCMMaxWindComposite", "SCALAR", maxWindGrid, timeRange,
@ -1485,7 +1451,7 @@ class Procedure (SmartScript.SmartScript):
# # Use this method to fetch a product from the text database
if productID == "preTCM":
textProduct = self.getTextProductFromFile("/tmp/Irene.txt")
textProduct = self.getTextProductFromFile("/tmp/Isaac.txt")
decoder = TCMDecoder()
decoder.decodeTCMProduct(textProduct, self.dialogEyeDiameter)
fcstList = decoder.getFcstList()
@ -1588,14 +1554,6 @@ class Procedure (SmartScript.SmartScript):
# get the lat, lon grids
latGrid, lonGrid = self.getLatLonGrids()
# interpolate through forecast period to very high resolution and make
# a composite maxWind grid from those wind grids
if maxwindswath is "Yes":
t1 = time.time()
self.makeMaxWindGrid(interpFcstList, interval, latGrid, lonGrid, pieSlices,
radiiFactor)
print time.time() - t1, "seconds to generate Max wind composite."
# make a grid for each interpolate forecast
gridCount = 0
for f in interpFcstList:
@ -1621,6 +1579,14 @@ class Procedure (SmartScript.SmartScript):
print "TCMWindTool:", productID, "- Generated",gridCount, \
"out of", len(interpFcstList), "grids", time.asctime(time.gmtime(timeRange.startTime().unixTime()))
# interpolate through forecast period to very high resolution and make
# a composite maxWind grid from those wind grids
if maxwindswath is "Yes":
t1 = time.time()
self.makeMaxWindGrid(interpFcstList, interval, latGrid, lonGrid, pieSlices,
radiiFactor)
print time.time() - t1, "seconds to generate Max wind composite."
if msg != "":
self.statusBarMsg(msg, "S")

View file

@ -32,6 +32,13 @@
# 2005/07/29 - Version 0.1 - updated grid database structure
# 2006/11/06 - Version 1.0 - no changes - just part of BOIVerify upgrade
# 2007/10/25 - Version 2.0 - no changes - just part of BOIVerify upgrade
#
# SOFTWARE HISTORY
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 1/30/13 15536 ryu Made necessary changes to get tool to run
#
# ----------------------------------------------------------------------------
ToolType = "numeric"
WeatherElementEdited = "None"
@ -75,10 +82,11 @@ class Tool (SmartScript.SmartScript):
processVarList=ProcessVariableList.ProcessVariableList(
"Pick Model",VList,varReturn)
status=processVarList.status()
if status != "Ok":
if status.lower() != "ok":
self.docancel=1
return
self.modelName=varReturn["Model:"]
#
# Remove any current VER grids from gridManager
#
@ -86,7 +94,7 @@ class Tool (SmartScript.SmartScript):
parmList = self._dbss.getParmManager().getDisplayedParms()
for parm in parmList:
pid=parm.getParmID()
pmodel = pid.getDbID().getModelId()
pmodel = pid.getDbId().getModelId()
name=pid.getParmName()
level=pid.getParmLevel()
if pmodel == "Ver":
@ -102,7 +110,7 @@ class Tool (SmartScript.SmartScript):
def execute(self,WEname,GridTimeRange):
"Show history of grids over time"
self.VU.logMsg(" executing for time:%s"%GridTimeRange)
mutableModel=self.mutableID().model()
mutableModel=self.mutableID().modelName()
tomorrow=time.time()+86400
parm=WEname
self.VU.logMsg(" running for parm:%s"%parm)
@ -111,7 +119,7 @@ class Tool (SmartScript.SmartScript):
# Get the color table and range for the parm
#
(self.parmUnits,self.parmPrecision,self.parmMinval,self.parmMaxval,
self.parmColorTable,self.parmDisplayMinval,
self.parmRateFlag,self.parmColorTable,self.parmDisplayMinval,
self.parmDisplayMaxval)=self.getParmInfo(mutableModel,WEname)
#
# Get start/end of current timerange and get verification
@ -124,6 +132,7 @@ class Tool (SmartScript.SmartScript):
# Loop over verification model records
#
for rec in recs:
rec = int(rec)
self.VU.logMsg("rec=%d"%rec)
#
# read grid - clip to min/max for this parm
@ -159,16 +168,19 @@ class Tool (SmartScript.SmartScript):
self.parmMaxval,self.parmUnits)
self.setActiveElement("Ver",parmname,"SFC",GridTimeRange,
self.parmColorTable,(self.parmDisplayMinval,
self.parmDisplayMaxval),0)
self.parmColorTable,(float(self.parmDisplayMinval),
float(self.parmDisplayMaxval)),0)
return
#==================================================================
#
# getParmInfo - get information on a parm (units, precision, minval,
# maxval, colortablename, displayminval, displaymaxval)
# from the database specified
#
def getParmInfo(self,mutableModel,parm):
units="units"
precision=0
minval=0
maxval=100
rateflag=0
colorTable="Gridded Data"
displayMinval=0
displayMaxval=100
parm=self.getParm(mutableModel,parm,"SFC")
if parm is not None:
parmInfo = parm.getGridInfo()
@ -176,15 +188,11 @@ class Tool (SmartScript.SmartScript):
precision=parmInfo.getPrecision()
minval=parmInfo.getMinValue()
maxval=parmInfo.getMaxValue()
colorTable="Gridded Data"
displayMinval=0
displayMaxval=100
rateflag=parmInfo.isRateParm()
from com.raytheon.viz.gfe.rsc import DiscreteDisplayUtil
ctInfo = DiscreteDisplayUtil.buildColorMapParameters(parm)
if ctInfo is not None:
colorTable = ctInfo.getColorMapName()
displayMinval = ctInfo.getColorMapMin()
displayMaxVal = ctInfo.getColorMapMax()
return(units,precision,minval,maxval,colorTable,displayMinval,displayMaxval)
colorTable = ctInfo.getColorMapName()
displayMinval = ctInfo.getColorMapMin()
displayMaxval = ctInfo.getColorMapMax()
return(units,precision,minval,maxval,rateflag,colorTable,displayMinval,displayMaxval)

View file

@ -88,11 +88,17 @@ def executeFromJava(databaseID, site, username, dataMgr, forecastList, logFile,
site = str(site)
databaseID = str(databaseID)
username = str(username)
logger.info("TextFormatter Starting")
startTime = time.time()
logger.info("Text Formatter Starting")
forecasts = runFormatter(databaseID=databaseID, site=site, forecastList=forecastList, testMode=testMode,
cmdLineVarDict=cmdLineVarDict, vtecMode=vtecMode, username=username,
dataMgr=dataMgr, drtTime=drtTime)
elapsedTime = (time.time() - startTime)*1000
logger.info("Text Formatter Finished, took: %d ms",elapsedTime)
RedirectLogging.restore()
return forecasts
@ -286,7 +292,6 @@ def runFormatter(databaseID, site, forecastList, cmdLineVarDict, vtecMode,
# This also means that you may not import any new modules after this
# point!!!!!!!!!!!!!!!
logger.info("Text Formatter Finished")
return forecasts
def getAbsTime(timeStr):

View file

@ -1,19 +1,19 @@
##
# 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.
##
@ -175,7 +175,7 @@ class TextUtils:
# Return 1 if any of the searchKeys are found in subkeys
wxSize = len(subkeys)
wxStr = ""
for x in range(wxSize):
for x in range(wxSize):
wxStr += str(subkeys[x])
if x < wxSize - 1:
wxStr += '^'
@ -253,7 +253,7 @@ class TextUtils:
return 0.0
countAbove = 0
for histSample in parmHisto.histoSamples():
for histSample in parmHisto.histoSamples():
for histPair in histSample.histogram():
if histPair.value().scalar() > value:
countAbove = countAbove + histPair.count()
@ -418,7 +418,7 @@ class TextUtils:
if index == -1:
name = parmNameAndLevel
level = "SFC"
parm = ParmID(name,databaseID,level)
parm = ParmID(name,databaseID,level)
else:
name = parmNameAndLevel[0:index]
level = parmNameAndLevel[index+1:]
@ -674,11 +674,11 @@ class TextUtils:
def getPreviousProduct(self, productID, searchString="", version=0):
# gets a previous product from the AWIPS database
from com.raytheon.viz.gfe.core import DataManager
from com.raytheon.viz.gfe.product import TextDBUtil
opMode = DataManager.getCurrentInstance().getOpMode().name() == "OPERATIONAL"
# DR 15703 - always retrieve operational products
opMode = True
previousProduct = TextDBUtil.retrieveProduct(productID, version, opMode)
previousProduct = string.strip(previousProduct)

View file

@ -30,6 +30,8 @@
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 11/05/08 njensen Initial Creation.
# 01/17/13 1486 dgilling Re-factor based on
# RollbackMasterInterface.
#
#
#
@ -37,15 +39,13 @@
import sys
import Exceptions
import MasterInterface
from com.raytheon.uf.common.localization import PathManagerFactory
import RollbackMasterInterface
class ProcedureInterface(MasterInterface.MasterInterface):
class ProcedureInterface(RollbackMasterInterface.RollbackMasterInterface):
def __init__(self, scriptPath):
MasterInterface.MasterInterface.__init__(self)
self.importModules(scriptPath)
self.pathMgr = PathManagerFactory.getPathManager()
super(ProcedureInterface, self).__init__(scriptPath)
self.importModules()
self.menuToProcMap = {}
for script in self.scripts:
@ -72,26 +72,20 @@ class ProcedureInterface(MasterInterface.MasterInterface):
return scriptList
def addModule(self, moduleName):
MasterInterface.MasterInterface.addModule(self, moduleName)
super(ProcedureInterface, self).addModule(moduleName)
self.__mapMenuList(moduleName)
def removeModule(self, moduleName):
MasterInterface.MasterInterface.removeModule(self, moduleName)
super(ProcedureInterface, self).removeModule(moduleName)
for key in self.menuToProcMap:
procList = self.menuToProcMap.get(key)
if moduleName in procList:
procList.remove(moduleName)
self.menuToProcMap[key] = procList
if self.pathMgr.getStaticLocalizationFile("gfe/userPython/procedures/" + moduleName + ".py") is not None:
self.addModule(moduleName)
def getStartupErrors(self):
from java.util import ArrayList
errorList = ArrayList()
for err in self.getImportErrors():
errorList.add(str(err))
return errorList
# in-case we removed just an override, let's
# check to see if another script with the same name exists
if sys.modules.has_key(moduleName):
self.__mapMenuList(moduleName)
def getMethodArgNames(self, moduleName, className, methodName):
from java.util import ArrayList
@ -133,10 +127,5 @@ class ProcedureInterface(MasterInterface.MasterInterface):
# wasn't in list
pass
MasterInterface.MasterInterface.reloadModule(self, moduleName)
super(ProcedureInterface, self).reloadModule(moduleName)
self.__mapMenuList(moduleName)

View file

@ -2,19 +2,19 @@
##
# 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.
##
@ -119,7 +119,7 @@ nnn = r'(?:[A-Z]{2}[ZC])?\d{3}'
purge = r'(?P<purgeT>\d{6})-'
ugc = r'\n(?P<uhdr>' + r'[A-Z]{2}[Z|C](?:(?:\d{3})|(?:ALL))' + r'(?:[->]\n?' + nnn + \
r')*-\n?' + purge + el + r')'
cityh = r'-\n(?P<incc>(?:\s*\n)*(?:INCLUDING THE (?:CITIES|CITY) OF...)?)'
cityh = r'(?<=-\n(?!.*-\n))(?P<incc>(?:.*\n))'
body = r'(?P<body>(?:^.*\n)*?)'
#body = r'.*'
@ -192,20 +192,20 @@ class ProductParser:
#l = headline_re.finditer(str)
l = single_head_re.finditer(str)
for m in l:
if m is not None:
if m is not None:
#print 'phl m = ', m
newstart = start + m.start()
m = headline_re.match(m.group(0))
if m is not None:
hdlns.append(self.dumpMatch(m, newstart))
#print 'hdlns = ', hdlns
rval['headInfo'] = hdlns
def dumpMatch(self, m, offset=0, rval=None):
if rval is None:
rval = {}
#print 'dumpmatch m = ', m.groupdict()
for k in m.groupdict().keys():
if m.start(k) != -1 and m.start(k) != m.end(k):
@ -234,7 +234,7 @@ class ProductParser:
segs = []
l = ugch_re.finditer(self._str)
for m in l:
if m is not None:
m1 = cityh_re.search(self._str, m.end())
@ -250,7 +250,7 @@ class ProductParser:
else:
continue
m4 = head_re.search(self._str, m.end(), m3.end())
d = self.dumpMatch(m)
d = self.dumpMatch(m2, rval=d)
d = self.dumpMatch(m3, rval=d)
@ -266,7 +266,7 @@ class ProductParser:
else:
d['city'] = (self.tkc(m2.start()),
self.tkc(m2.start()))
if m4 is not None:
#print 'm4 = ', m4.group()
d = self.dumpMatch(m4, rval=d)
@ -284,7 +284,7 @@ class ProductParser:
rval['frames'] = frames
return rval
def parseFromJava(self, text):
self._str = text
self._ci = None
@ -295,13 +295,13 @@ class ProductParser:
lc.append(count)
count += l
self._totals = lc
#print 'text START ----------------------'
#print text
#print 'text END ------------------------'
result = self.parse()
#print 'result = ', result
return JUtil.pyDictToJavaMap(result)

View file

@ -23,23 +23,35 @@
# any purpose.
#
# SmartScript -- library of methods for Smart Tools and Procedures
# History
# Time Ticket# Developer Comments
# ----------------------------------------------------------------------
# 01/09/2012 DR15626 J. Zeng Add methods
# enableISCsend
# clientISCSendStatus
# manualSendISC_autoMode
# manualSendISC_manualMode
#
# Author: hansen
# ----------------------------------------------------------------------------
#
# SOFTWARE HISTORY
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 01/09/13 DR15626 J. Zeng Add methods
# enableISCsend
# clientISCSendStatus
# manualSendISC_autoMode
# manualSendISC_manualMode
# 01/30/13 1559 dgilling Fix TypeError in
# getGridCellSwath().
# Mar 13, 2013 1791 bsteffen Implement bulk getGrids to
# improve performance.
# Mar 13, 2013 1793 bsteffen Performance improvements for
# TCMWindTool
# Apr 24, 2013 1947 randerso Fix UVToMagDir to work with scalar arguments
# Cleaned up some constants
#
########################################################################
import types, string, time, sys
from math import *
from numpy import *
import os
import numpy
import math
import re
import jep
import BaseTool, Exceptions
@ -52,6 +64,7 @@ from java.util import Date
from java.nio import FloatBuffer
from com.raytheon.uf.common.time import SimulatedTime
from com.raytheon.uf.common.time import TimeRange as javaTimeRange
from com.raytheon.uf.common.dataplugin.gfe.grid import Grid2DByte
from com.raytheon.uf.common.dataplugin.gfe.grid import Grid2DFloat
from com.raytheon.uf.common.dataplugin.gfe.discrete import DiscreteKey
@ -350,7 +363,10 @@ class SmartScript(BaseTool.BaseTool):
# e.g. "SFC", "MB350", "BL030"
# x, y: integer coordinates
# timeRange: Must be a special time range object such as
# that passed in the argument list as GridTimeRange
# that passed in the argument list as GridTimeRange or a list of time
# range objects. If it is a list than the return value will be a dict
# where the time range objects are keys and the result of getGrids
# for each time range is the value.
# mode: specifies how to handle the situation if multiple grids
# are found within the given time range:
# "TimeWtAverage": return time-weighted Average value
@ -393,10 +409,19 @@ class SmartScript(BaseTool.BaseTool):
if isinstance(model, DatabaseID.DatabaseID):
model = model.modelIdentifier()
timeRangeList = None
if isinstance(timeRange, TimeRange.TimeRange):
timeRange = timeRange.toJavaObj()
elif isinstance(timeRange, list):
timeRangeList = timeRange
timeRangeArray = jep.jarray(len(timeRangeList), javaTimeRange)
for i in xrange(len(timeRangeList)):
tr = timeRangeList[i]
if isinstance(tr, TimeRange.TimeRange):
tr = tr.toJavaObj()
timeRangeArray[i] = tr
timeRange = timeRangeArray
# if cache:
# for cModel, cElement, cLevel, cMostRecent, cRange, cMode, cResult in \
# self.__pythonGrids:
@ -414,7 +439,17 @@ class SmartScript(BaseTool.BaseTool):
"NoData", "No Weather Element for " + exprName)
else:
return None
result = self.__cycler.getCorrespondingResult(parm, timeRange, mode)
result = self.__cycler.getCorrespondingResult(parm, timeRange, mode)
if timeRangeList is not None:
retVal = {}
for i in xrange(len(timeRangeList)):
iresult = self._getGridsResult(timeRangeList[i], noDataError, mode, exprName, result[i])
retVal[timeRangeList[i]] = iresult
return retVal
else:
return self._getGridsResult(timeRange, noDataError, mode, exprName, result)
def _getGridsResult(self, timeRange, noDataError, mode, exprName, result):
retVal = None
if result is not None:
if len(result) == 0:
@ -756,18 +791,26 @@ class SmartScript(BaseTool.BaseTool):
## Conversion methods
def UVToMagDir(self, u, v):
RAD_TO_DEG = 57.29577951308232
RAD_TO_DEG = 180.0 / numpy.pi
# Sign change to make math to meteor. coords work
u = - u
v = - v
speed = numpy.sqrt(u * u + v * v)
dir = numpy.arctan2(u, v) * RAD_TO_DEG
dir = numpy.where(numpy.greater_equal(dir, 360), dir - 360, dir)
dir = numpy.where(numpy.less(dir, 0), dir + 360, dir)
u = -u
v = -v
if type(u) is numpy.ndarray or type(v) is numpy.ndarray:
speed = numpy.sqrt(u * u + v * v)
dir = numpy.arctan2(u, v) * RAD_TO_DEG
dir[numpy.greater_equal(dir, 360)] -= 360
dir[numpy.less(dir, 0)] += 360
else:
speed = math.sqrt(u * u + v * v)
dir = math.atan2(u, v) * RAD_TO_DEG
while dir < 0.0:
dir = dir + 360.0
while dir >= 360.0:
dir = dir - 360.0
return (speed, dir)
def MagDirToUV(self, mag, dir):
DEG_TO_RAD = 0.017453292519943295
DEG_TO_RAD = numpy.pi / 180.0
# Note sign change for components so math to meteor. coords works
uw = - sin(dir * DEG_TO_RAD) * mag
vw = - cos(dir * DEG_TO_RAD) * mag
@ -775,7 +818,7 @@ class SmartScript(BaseTool.BaseTool):
def convertMsecToKts(self, value_Msec):
# Convert from meters/sec to Kts
return value_Msec * 1.944
return value_Msec * 3600.0 / 1852.0
def convertKtoF(self, t_K):
# Convert the temperature from Kelvin to Fahrenheit
@ -797,7 +840,7 @@ class SmartScript(BaseTool.BaseTool):
def convertFtToM(self, value_Ft):
# Convert the value in Feet to Meters
return value_Ft/3.28084
return value_Ft * 0.3048
#########################################################################
## Error Handling ##
@ -1210,7 +1253,6 @@ class SmartScript(BaseTool.BaseTool):
# color. If "on" is 0, turn off the highlight.
parm = self.getParm(model, element, level)
from com.raytheon.viz.gfe.core.msgs import HighlightMsg
from com.raytheon.uf.common.time import TimeRange as javaTimeRange
trs = jep.jarray(1, javaTimeRange)
trs[0] = timeRange.toJavaObj()
@ -1553,8 +1595,6 @@ class SmartScript(BaseTool.BaseTool):
return self.__dataMgr.getSpatialDisplayManager().getActivatedParm()
def getGridCellSwath(self, editArea, cells):
from com.raytheon.uf.common.dataplugin.gfe.reference import ReferenceID
from com.raytheon.uf.common.dataplugin.gfe.reference import ReferenceData
from com.raytheon.uf.common.dataplugin.gfe.reference import ReferenceData_CoordinateType as CoordinateType
# Returns an AFPS.ReferenceData swath of the given
# number of cells around the given an edit area.
@ -1569,10 +1609,10 @@ class SmartScript(BaseTool.BaseTool):
grid2DBit = self.getGridLoc().gridCellSwath(
polygon.getCoordinates(), float(cells), False)
if grid2DB is not None:
grid2DB = grid2DB | grid2DBit
grid2DB = grid2DB.orEquals(grid2DBit)
else:
grid2DB = grid2DBit
return ReferenceData(self.getGridLoc(), ReferenceID("test"), grid2DB)
return self.getGridLoc().convertToReferenceData(grid2DB)
def getLatLon(self, x, y):
# Get the latitude/longitude values for the given grid point

View file

@ -30,6 +30,8 @@
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 10/21/08 njensen Initial Creation.
# 01/17/13 1486 dgilling Re-factor based on
# RollbackMasterInterface.
#
#
#
@ -37,19 +39,17 @@
import sys
import Exceptions
import MasterInterface
from com.raytheon.uf.common.localization import PathManagerFactory
import RollbackMasterInterface
class SmartToolInterface(MasterInterface.MasterInterface):
class SmartToolInterface(RollbackMasterInterface.RollbackMasterInterface):
def __init__(self, scriptPath):
MasterInterface.MasterInterface.__init__(self)
self.importModules(scriptPath)
super(SmartToolInterface, self).__init__(scriptPath)
self.importModules()
self.parmToModuleMap = {'variableElement' : set()}
for script in self.scripts:
self.__mapDisplayList(script)
self.pathMgr = PathManagerFactory.getPathManager()
def __mapDisplayList(self, script):
if hasattr(sys.modules[script], "WeatherElementEdited"):
@ -137,20 +137,21 @@ class SmartToolInterface(MasterInterface.MasterInterface):
return argList
def addModule(self, moduleName):
MasterInterface.MasterInterface.addModule(self, moduleName)
super(SmartToolInterface, self).addModule(moduleName)
self.__mapDisplayList(moduleName)
def reloadModule(self, moduleName):
if sys.modules.has_key(moduleName):
self.__removeModuleFromMap(moduleName)
MasterInterface.MasterInterface.reloadModule(self, moduleName)
self.__removeModuleFromMap(moduleName)
super(SmartToolInterface, self).reloadModule(moduleName)
self.__mapDisplayList(moduleName)
def removeModule(self, moduleName):
MasterInterface.MasterInterface.removeModule(self, moduleName)
super(SmartToolInterface, self).removeModule(moduleName)
self.__removeModuleFromMap(moduleName)
if self.pathMgr.getStaticLocalizationFile("gfe/userPython/smartTools/" + moduleName + ".py") is not None:
self.addModule(moduleName)
# in-case we removed just an override, let's
# check to see if another script with the same name exists
if sys.modules.has_key(moduleName):
self.__mapDisplayList(moduleName)
def __removeModuleFromMap(self, moduleName):
for parm in self.parmToModuleMap:
@ -159,13 +160,6 @@ class SmartToolInterface(MasterInterface.MasterInterface):
toolList.remove(moduleName)
self.parmToModuleMap[parm] = toolList
def getStartupErrors(self):
from java.util import ArrayList
errorList = ArrayList()
for err in self.getImportErrors():
errorList.add(str(err))
return errorList
def runTool(self, moduleName, className, methodName, **kwargs):
try:
return self.runMethod(moduleName, className, methodName, **kwargs)

View file

@ -9,15 +9,15 @@
! J.Carr/NCEP 7/98 changed contouring for the product
! T. Lee/GSC 6/99 Increased omega contour range
!
GLEVEL=4700:10000!700 !700 !850 !30:0
GVCORD=SGMA !PRES !PRES !PRES!pdly
GLEVEL=4700:10000!700!700!850 !0:30
GVCORD=SGMA!PRES!PRES!PRES!pdly
SKIP=
FILTER=y
SCALE=0 !3 !3 !0
GDPFUN=relh !sm9s(omeg)!sm9s(omeg) !tmpc !tmpc
TYPE=f !c
CINT=0 !1/2 !-1;-2;-3;-5;-7;-9;-11;-13;-15;-17;-19;-21;-23;-25!200;0!200;0
LINE=0 !30/10/2!6/1/2 !2/1/2!20/1/2
SCALE=0!1!1 !0
GDPFUN=relh!sm9s(omeg)!sm9s(omeg)!tmpc !tmpc
TYPE=f!c
CINT=0!1/2!-1;-2;-3;-5;-7;-9;-11;-13;-15;-17;-19;-21;-23;-25!200;0!200;0
LINE=0!30/10/2!6/1/2!2/1/2!20/1/2
FINT=50;70;90
FLINE=0;24;23;22
HILO=0

View file

@ -7,15 +7,15 @@
! D.W.Plummer/NCEP 7/98 Changed contouring for the product
! T. Lee/GSC 6/99 Increased omega contour range
!
GLEVEL=4400:10000!700 !700 !850 !9950
GVCORD=SGMA !PRES !PRES !PRES!SGMA
GLEVEL=4400:10000!700!700!850!9950
GVCORD=SGMA!PRES!PRES!PRES!SGMA
SKIP=1
FILTER=y
SCALE=0 !3 !3 !0
GDPFUN=relh !omeg!omeg !tmpc !tmpc
TYPE=f !c
CINT=0 !1/1 !-1;-2;-3;-5;-7;-9;-11;-13;-15;-17;-19;-21;-23;-25!200;0!200;0
LINE=0 !30/10/3!6/1/2 !2/1/2!20/1/2
FILTER= y
SCALE=0!3!3!0
GDPFUN=relh!omeg!omeg!tmpc!tmpc
TYPE=f!c
CINT=0!1/1!-1;-2;-3;-5;-7;-9;-11;-13;-15;-17;-19;-21;-23;-25!200;0!200;0
LINE=0!30/10/3!6/1/2!2/1/2!20/1/2
FINT=50;70;90
FLINE=0;24;23;22
HILO=0

View file

@ -8,7 +8,7 @@ GLEVEL=150
GVCORD=pres
SKIP=
FILTER=y
SCALE=3 !-1
SCALE=0 !-1
GDPFUN=knts((mag(wnd))) !sm9s(hght)!kntv(wnd)
TYPE=c/f !c !b
CINT=30;50;70;90;110;130;150 !12

View file

@ -8,9 +8,9 @@ GLEVEL=200
GVCORD=PRES
SKIP=
FILTER=y
SCALE=0!0!5!5!-1
GDPFUN=mag(kntv(wnd))!mag(kntv(wnd))!div(wnd)!div(wnd)!sm5s(hght)
TYPE=c!c/f!c/f!c!c
SCALE=0!0!5!5
GDPFUN=mag(kntv(wnd))!mag(kntv(wnd))!div(wnd)!div(wnd)
TYPE=c!c/f!c/f!c
CINT=30;50!70;90;110;130;150;170;190!-11;-9;-7;-5;-3!2/3/18!12/720
LINE=26!32//2!19/-2//2!20!1//2
FINT=!70;90;110;130;150;170;190!3;5;7;9;11;13!

View file

@ -17,7 +17,7 @@ FINT = .01;.1;.25;.5;.75;1;1.25;1.5;1.75;2;2.25;2.5;2.75;3;3.25;3.5;3.75;4
FLINE = 0;21-30;14-20;5
HILO = 31;0/x#2////y
HLSYM = 1.5
!CLRBAR= 1
!CLRBAR = 1
WIND = 0
TITLE = 1/-1/~ 24-HR OBS PRECIP (RFC, 40km avg) !0
COLORS = 2

View file

@ -17,7 +17,7 @@ FINT = .01;.10;.25;.5;1;1.5;2;2.5;3;3.5;4;4.5;5;6;8;10.0
FLINE = 0;11;18;8;6;25;21;22;7;30;4;24;20;17;15;14;31
HILO = 0
HLSYM = 0
!CLRBAR= 1//CL/0;.5/.75;.01
!CLRBAR = 1//CL/0;.5/.75;.01
WIND =
TITLE = 1/-1/COOPERATIVE RAINFALL REPORTS FOR 24 hrs ENDING 12 UTC: ~
COLORS =

View file

@ -20,7 +20,7 @@ HILO = 2;6/X;N/-99--4;4-99 ! 0
HLSYM = 0
!CLRBAR = 1/V/LL!0
WIND = 6/.8/2/112
TITLE = 1/-1/~ @ WIND = AND RELATIVE VORTICITY!0
TITLE = 1/-1/~ @ WIND AND RELATIVE VORTICITY!0
COLORS = 2
MARKER = 2
GRDLBL = 5

View file

@ -20,7 +20,7 @@ HILO = !2;6/X;N/10-99;10-99!
HLSYM = 0
!CLRBAR = 1
WIND = 18/1/1
TITLE = 5/0/~ @ HEIGHT, VORTICITY & VORTICITY ADV|~ @ HGHT & VORT ADV!0
TITLE = 5/0/~ @ HEIGHT, VORTICITY AND VORTICITY ADV|~ @ HGHT AND VORT ADV!0
COLORS = 2
MARKER = 2
GRDLBL = 5

View file

@ -0,0 +1,24 @@
!
! Restore File : 500mb_mean_hght
!
! Log:
!Archana 3/13 Initial creation
!
GLEVEL=500
GVCORD=pres
SKIP=
FILTER=y
SCALE=-1
GDPFUN=GHmean
TYPE=c
CINT=6
LINE=5/1/2/1
FINT=
FLINE=
HILO=
HLSYM=
WIND=
TITLE=5/-1/~ @ MEAN HEIGHT AT 500 mb!0
COLORS=2
MARKER=2
GRDLBL=5

View file

@ -20,7 +20,7 @@ HILO = 0!0!6/H#;L#
HLSYM = 0!0!1.5;1.5//22;22/2;2/hw
!CLRBAR= 1/V/LL!0
WIND = 9/0.9/2/212
TITLE = 1/-1/~ @ DEW POINT (>-8), WIND (KTS), AND HEIGHT!0
TITLE = 1/-1/~ @ DEW POINT (GREATER THAN -8), WIND (KTS), AND HEIGHT!0
COLORS = 2
MARKER = 2
GRDLBL = 5

View file

@ -6,7 +6,7 @@
! J.Carr/NCEP 6/97 changed boundary layer labels to comply with EMC
! D.W.Plummer/NCEP 8/97 Added FILTER parameter and changed TEXT value
!
GLEVEL=700!700!700!850!850!30:0!30:0
GLEVEL=700!700!700!850!850!0:30!0:30
GVCORD=PRES!PRES!PRES!PRES!PRES!pdly!pdly
SKIP=
FILTER=y

View file

@ -7,7 +7,7 @@
! D.W.Plummer/NCEP 8/97 Added FILTER parameter and changed TEXT value
! Archana/Chugach 9/2012 #866 Added CLRBAR
!
GLEVEL=700!700!700!850!850!30:0!30:0
GLEVEL=700!700!700!850!850!0:30!0:30
GVCORD=PRES!PRES!PRES!PRES!PRES!pdly!pdly
SKIP=
FILTER=y

View file

@ -8,9 +8,9 @@
! D.W.Plummer/NCEP 8/97 Added FILTER parameter
! J. Carr/HPC 10/97 Moved from the standard directory because this
! restore file did not apply to all the models
! J. Carr/HPC 2/99 Changed 9823 sgma to 30:0 pdly
! J. Carr/HPC 2/99 Changed 9823 sgma to 0:30 pdly
!
GLEVEL=850 !850 !30:0 !850
GLEVEL=850 !850 !0:30 !850
GVCORD=pres !pres !pdly !pres
SKIP=
FILTER=y

View file

@ -7,9 +7,9 @@
! D.W.Plummer/NCEP 8/97 Added FILTER = parameter
! J. Carr/HPC 10/97 Moved from the standard directory because this
! restore file did not apply to all the models
! J. Carr/HPC 2/99 Changed 9823 sgma to 30:0 pdly
! J. Carr/HPC 2/99 Changed 9823 sgma to 0:30 pdly
!
GLEVEL = 850 !850 !30:0 !850
GLEVEL = 850 !850 !0:30 !850
GVCORD = pres !pres !pdly !pres
SKIP = 0/1
FILTER=y
@ -22,7 +22,7 @@ FINT = 6;12;18;24;30;36
FLINE = 0;23;22;21;14;15;2
HILO = 0 !5/H#;L#!0
HLSYM = 0 !1;1//22;22/2;2/hw!0
!CLRBAR= 1/V/LL!0
!CLRBAR = 1/V/LL!0
WIND = 16/0.9/2/211/0.5
TITLE = 1/-1/~ @ MOISTURE TRANSPORT, HGHT, BL THTAE!0
COLORS = 2

View file

@ -20,7 +20,7 @@ FLINE=0;23;22;30;14;2
HILO=0!0!6/H#;L#
HLSYM=0!0!1.5;1.5//22;22/2;2/hw
WIND=9/0.9/2/112
TITLE=1/-1/~ @ DEW POINT (>-4), WIND (KTS), AND HEIGHT!0
TITLE=1/-1/~ @ DEW POINT (GREATER THAN -4), WIND (KTS), AND HEIGHT!0
COLORS=2
MARKER=2
GRDLBL=5

View file

@ -18,7 +18,7 @@ FINT =
FLINE =
HILO = 0
HLSYM = 0
!CLRBAR= 0
!CLRBAR = 0
WIND = 9/0.9/2/112
TITLE = 1/-1/~ 850mb WIND (KTS) and PRECIP WATER
COLORS = 2

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AUTOSPE</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>TP1hr</attrSetNames>
</AttributeSetGroup>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AVIATION</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>icprb_6400,turb_6400,icsev_6400,sipd_6400</attrSetNames>
<attrSetNames>ICIP</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AVN</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AVN190AK</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AVN80PAC</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>AVN80US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CCPA</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>precip_3hr</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CCPA2P5</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>precip_3hr</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CCPA_US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>precip_3hr</attrSetNames>
</AttributeSetGroup>

View file

@ -2,6 +2,6 @@
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>CMC</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>1000-500_thkn,1000-850_thkn,1000mb_hght_tmp_wind,200mb_div_isotachs,200mb_hght_wind,250mb_ageo_div_isotachs,250mb_hght_wind,250mb_wind_and_rel_vort,300mb_div_isotachs,500mb_hght_absv,500mb_hght_absv_adv,500mb_hght_absv_wind,500mb_hght_color,500mb_hght_geoabsv,500mb_hght_wind,500mb_hght_tmp_wind,700mb_hght_rh_omega,700mb_hght_tmp_wind,850-700_thkn,850mb_hght_tmp_wind,pmsl,pmsl_thkn,pmsl_and_bl_wind_global,300-200mb_pv,400-200mb_pv,400-250mb_pv_global,500-250mb_pv,500-300mb_pv</attrSetNames>
<attrSetNames>1000-500_thkn,1000-850_thkn,1000mb_hght_tmp_wind,200mb_div_isotachs,200mb_hght_wind,250mb_ageo_div_isotachs,250mb_hght_wind,250mb_wind_and_rel_vort,300mb_div_isotachs,500mb_hght_absv,500mb_hght_absv_adv,500mb_hght_absv_wnd,500mb_hght_color,500mb_hght_geoabsv,500mb_hght_wind,500mb_hght_tmp_wind,700mb_hght_rh_omega,700mb_hght_tmp_wind,850-700_thkn,850mb_hght_tmp_wind,pmsl,pmsl_thkn,pmsl_and_bl_wind_global,300-200mb_pv,400-200mb_pv,400-250mb_pv_global,500-250mb_pv,500-300mb_pv</attrSetNames>
<!-- attrSetNames>1000-500_thkn,1000-850_thkn,1000mb_hght_tmp_wind,200mb_div_isotachs,200mb_hght_wind,250mb_ageo_div_isotachs,250mb_hght_wind,250mb_wind_and_rel_vort,300mb_div_isotachs,300mb_hght_absv_adv,500mb_hght_absv,500mb_hght_absv_adv,500mb_hght_absv_wind,500mb_hght_color,500mb_hght_geoabsv,500mb_hght_wind,500mb_hght_tmp_wind,700mb_hght_rh_omega,700mb_hght_tmp_wind,850-700_thkn,850mb_hght_tmp_wind,pmsl,pmsl_thkn,pmsl_and_bl_wind_global,300-200mb_pv,400-200mb_pv,400-250mb_pv_global,500-250mb_pv,500-300mb_pv</attrSetNames> -->
</AttributeSetGroup>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>CMC</resource>
<attrSetGroupName>streamline</attrSetGroupName>
<attrSetGroupName>streamlines</attrSetGroupName>
<attrSetNames>250mb_streamlines,500mb_streamlines,700mb_streamlines,850mb_streamlines,925mb_streamlines,1000mb_streamlines</attrSetNames>
</AttributeSetGroup>

View file

@ -2,5 +2,5 @@
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>CMC</resource>
<attrSetGroupName>tropical</attrSetGroupName>
<attrSetNames>500mb_hght_absv,850-300mb_wind_shear,850mb_wind_pw_mm,bl_moisture_conv_thtae,bl_thte_wind_global,mlw_pmsl,pmsl_bl_temp_wind,pmsl_thkn_850mb_wind,pmsl_and_bl_wind_global,precip_water_mslp,precip_water_mslp_mm</attrSetNames>
<attrSetNames>500mb_hght_absv,850-300mb_wind_shear,850mb_wind_pw_mm,bl_moisture_conv_thtae,bl_thte_wind_global,mlw_pmsl,pmsl_bl_temp_wind,pmsl_thkn_850mb_wind,pmsl_and_bl_wind_global,precip_water_mslp</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CMCE</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>200mb_hght_wind,500mb_hght_absv_wnd,500mb_hght_color,700mb_hght_tmp_wind,850mb_hght_tmp_wind,pmsl_1000-500thk</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CMCE_ENS</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>CPCOUTLK80US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>prob_precip_above_normal</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>DGEX_AK</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>250mb_hght_wind,500mb_hght_absv_wnd,850mb_hght_tmp_wind,700mb_hght_tmp_wind</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>DGEX_US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>pmsl_1000-500thk,500mb_hght_absv_wnd,700mb_hght_tmp_wind,850mb_hght_tmp_wind,850mb_thtae_advection,250mb_hght_wind</attrSetNames>
</AttributeSetGroup>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>EASTNMM</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght_absv,500mb_hght_color,500mb_hght_wind</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWFWAVE</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>directional_width_of_wind_wave</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_AF</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_wind_and_rel_vort</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_ATL</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_tmp,500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_ATL_EQ</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_wind_and_rel_vort</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_EPAC</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght,850mb_tmp</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_EPAC_EQ</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_wind_and_rel_vort</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_EU</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght,850mb_tmp</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_NH</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_tmp,500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_WPAC</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght,850mb_tmp</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ECMWF_WPAC_EQ</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>850mb_wind_and_rel_vort</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ESTOFS_PR</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>extra_tropical_storm_surge</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>ESTOFS_US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>extra_tropical_storm_surge</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,23 @@
!
! Restore File :FFG0124hr
!
! Log:
!
GLEVEL=0
GVCORD=NONE
SKIP=
FILTER=y
SCALE=0
GDPFUN=FFG0124hr
TYPE=p
CINT=0
LINE=5/1/1
FINT=50;60;70;80;90
FLINE=0;29;28;27;26;0
HILO=
HLSYM=
WIND=18/1/1
TITLE=1/-1/~ FFG0124hr !0
COLORS=2
MARKER=2
GRDLBL=5

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>FFG_ALR</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>FFG0124hr</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>FFG_TIR_HIRES</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>ffg1224hr,FFG0124hr</attrSetNames>
</AttributeSetGroup>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>FNMOCWAVE</resource>
<attrSetGroupName>exp_marine</attrSetGroupName>
<attrSetNames>sig_wave_gridded_feet,sig_wave_gridded_feet_only,sig_wave_gridded_feet_dir,sig_wave_gridded_metersn,sig_wave_gridded_meters_only,sig_wave_gridded_meters_dir</attrSetNames>
<attrSetNames>sig_wave_gridded_feet_only,sig_wave_gridded_feet_dir,sig_wave_gridded_meters_only,sig_wave_gridded_meters_dir</attrSetNames>
</AttributeSetGroup>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>FNMOCWAVE</resource>
<attrSetGroupName>marine</attrSetGroupName>
<attrSetNames>sig_wave_gridded_feet,sig_wave_gridded_meters,sig_wave_cont_fill_feet,sig_wave_cont_fill_meters</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GDAS</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght_absv_wnd,1000-500_thkn,250mb_ageo_div_isotachs</attrSetNames>
</AttributeSetGroup>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS</resource>
<attrSetGroupName>basic_wx</attrSetGroupName>
<attrSetNames>1000-470mb_rh_rs_t_700mb_vv_global,1000-500mb_rh,200mb_vorticity_pw,250mb_vorticity_pw,300-700_q-vctrs_thkn,300mb_vorticity_pw,bl_thte_wind_global,ct_index_global,great_lakes_snow_global,great_lakes_snow2_global,lifted_index_global,pmsl_thkn_wind,pmsl_1000-850_thk_global,pmsl_bl_temp_wind,precip_6hr_1000-500_thkn,precip_type_global,precip_type_vv_global</attrSetNames>
<attrSetNames>1000-470mb_rh_rs_t_700mb_vv_global,1000-500mb_rh,200mb_vorticity_pw,250mb_vorticity_pw,300-700_q-vctrs_thkn,300mb_vorticity_pw,bl_thte_wind_global,ct_index_global,great_lakes_snow_global,great_lakes_snow2_global,lifted_index_global,pmsl_thkn_wind,pmsl_1000-850_thk_global,pmsl_bl_temp_wind,precip_6hr_1000-500_thkn,precip_type_global,precip_type_vv_global,pmsl_thkn</attrSetNames>
</AttributeSetGroup>

View file

@ -2,5 +2,5 @@
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>GFS</resource>
<attrSetGroupName>marine</attrSetGroupName>
<attrSetNames>1000mb_hght_absv,500mb_hght_absv,850mb_hght_absv,bl_moisture_conv_thtae,pmsl_1000-850_thk_global.attr,pmsl_bl_temp_wind,pmsl_and_bl_wind_global,pmsl_and_bl_wind_global,precip_water_pmsl,stability_850mb_wnd_global,stability_950mb_wnd</attrSetNames>
<attrSetNames>1000mb_hght_absv,500mb_hght_absv,850mb_hght_absv,bl_moisture_conv_thtae,pmsl_1000-850_thk_global,pmsl_bl_temp_wind,pmsl_and_bl_wind_global,pmsl_and_bl_wind_global,precip_water_pmsl,stability_850mb_wnd_global,stability_950mb_wnd</attrSetNames>
</AttributeSetGroup>

View file

@ -2,5 +2,5 @@
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<resource>GFS</resource>
<attrSetGroupName>monochrome</attrSetGroupName>
<attrSetNames>bl_thte_wind_mono_global,pmsl_thkn_wind_mono_global.attr</attrSetNames>
<attrSetNames>bl_thte_wind_mono_global,pmsl_thkn_wind_mono_global</attrSetNames>
</AttributeSetGroup>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS</resource>
<attrSetGroupName>precip</attrSetGroupName>
<attrSetNames>precip_12hr,precip_12hr_mm,precip_24hr,precip_24hr_mm,precip_3-day,precip_4-day,precip_48hr,precip_5-day,precip_54hr,precip_60hr,precip_66hr,precip_6hr,precip_6hr_mslp,precip_6hr_mslp_sfchght,precip_6hr_mslphilo,precip_72hr,precip_78hr</attrSetNames>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>1000-500_thkn,1000-850_thkn,1000mb_hght_tmp_wind,100mb_hght_wind,150mb_hght_wind,200mb_div_isotachs,200mb_hght_wind,250mb_ageo_div_isotachs,250mb_hght_wind,250mb_wind_and_rel_vort,300mb_div_isotachs,300mb_hght_absv_adv,300mb_hght_wind,300mb_hght_tmp_wind,500mb_hght_absv,500mb_hght_absv_adv,500mb_hght_absv_wnd,500mb_hght_color,500mb_hght_geoabsv,500mb_hght_wind,500mb_hght_tmp_wind,50mb_hght_wind,600mb_hght_rh_omega,700mb_hght_rh_omega,700mb_hght_tmp_wind,70mb_hght_wind,850-700_thkn,850mb_hght_tmp_wind,pmsl,pmsl_thkn,pmsl_and_bl_wind_global,300-200mb_pv,400-200mb_pv,400-250mb_pv_global,500-250mb_pv,500-300mb_pv</attrSetNames>
<attrSetNames>1000-500_thkn,1000-850_thkn,1000mb_hght_tmp_wind,100mb_hght_wind,150mb_hght_wind,200mb_div_isotachs,200mb_hght_wind,250mb_ageo_div_isotachs,250mb_hght_wind,250mb_wind_and_rel_vort,300mb_div_isotachs,300mb_hght_absv_adv,300mb_hght_wind,300mb_hght_tmp_wind,500mb_hght_absv,500mb_hght_absv_adv,500mb_hght_absv_wnd,500mb_hght_color,500mb_hght_geoabsv,500mb_hght_wind,500mb_hght_tmp_wind,50mb_hght_wind,600mb_hght_rh_omega,700mb_hght_rh_omega,700mb_hght_tmp_wind,70mb_hght_wind,850-700_thkn,850mb_hght_tmp_wind,pmsl,pmsl_thkn,pmsl_and_bl_wind_global,300-200mb_pv,400-200mb_pv,400-250mb_pv_global,500-250mb_pv,500-300mb_pv,500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS40US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS95US</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFSGUIDE</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>iceg</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFSLAMPTSTORM</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>tstorm_prob_2hr</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS_AK</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>500mb_hght</attrSetNames>
</AttributeSetGroup>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AttributeSetGroup xmlns:ns2="http://www.example.org/productType">
<resource>GFS_GU</resource>
<attrSetGroupName>standard</attrSetGroupName>
<attrSetNames>surface_temperature</attrSetNames>
</AttributeSetGroup>

Some files were not shown because too many files have changed in this diff Show more