1429 lines
66 KiB
HTML
1429 lines
66 KiB
HTML
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type"
|
|
content="text/html; charset=iso-8859-1">
|
|
<meta name="GENERATOR"
|
|
content="Mozilla/4.8 [en] (X11; U; Linux 2.4.18-27.7.xsmp i686) [Netscape]">
|
|
<title>Text Products Reference</title>
|
|
<!--link REL="STYLESHEET" HREF="TextFormatter.html"-->
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
WFO Site InformationWFO Site InformationWFO Site Information
|
|
<center>
|
|
<h1><a name="ProductSet-upand"></a>Product Set-up and Customization</h1>
|
|
</center>
|
|
<a href="#ServerTemplates">EDEX Product Configuration</a> <br>
|
|
<a href="#QuickStartProductSet">Quick Start Product Set up</a> <br>
|
|
<a
|
|
href="#TABULAR_-TYPE_PRODUCTS_">Tabular Products</a><br>
|
|
<a
|
|
href="#NARRATIVE-TYPE_PRODUCTS">Narrative Products</a><br>
|
|
<a href="#Hazard_Products">Hazard Products</a><br>
|
|
<a href="#Special_Statements">Statements</a><br>
|
|
<a href="#ProductCustomization">Product Customization</a> <br>
|
|
<a href="#CustomizingNarrative">Customizing
|
|
Narrative Phrases</a> <br>
|
|
<a
|
|
href="#ExampleCustomizing">Example: Customizing a Narrative Phrase</a>
|
|
<br>
|
|
<a
|
|
href="#ConfigurableIssuance--">Narrative Definition and Configurable
|
|
Issuance -- "def issuance_list"</a> <br>
|
|
<a
|
|
href="#Post-ProcessingNarrativePhrases">Post-Processing Narrative
|
|
Phrases</a> <br>
|
|
<a href="#AllowedHazards">AllowedHazards</a><br>
|
|
<a
|
|
href="#HazardKey">HazardKey</a><br>
|
|
<a href="#WFOSITE">WFO Site Information</a><br>
|
|
<hr>
|
|
<h2> <a name="ServerTemplates"></a>EDEX Product Configuration</h2>
|
|
The GFESuite set of product formatters are delivered to the field as
|
|
templates, which are then expanded upon installation. The installation
|
|
converts the templates into the Baseline, Region, and local (site)
|
|
versions
|
|
of the formatters. The installation also will fill in the templated
|
|
information,
|
|
such as the WFO name, city, and state, and the product PIL, WMOID, and
|
|
AWIPS database pil and transmission pil.
|
|
<p>This automatic configuration
|
|
is based on the afos2awips.txt pil/wmoid table. If there are errors in
|
|
this table, then the products will not be correctly configured. To
|
|
correct
|
|
the templates after making changes to afos2awips.txt, you can rerun the
|
|
template expansion scripts. Refer to the <a
|
|
href="ConfigureTextProducts.html">configureTextProduct User Guide</a>
|
|
for more details.
|
|
</p>
|
|
<p>Some sites will have multiple entries in their afos2awips.txt table
|
|
for
|
|
a particular product, e.g., ZFP. The configuration script takes this
|
|
into
|
|
account and will automatically generate formatters for each entry
|
|
found.
|
|
</p>
|
|
<p></p>
|
|
<h2> <a name="QuickStartProductSet"></a>Quick Start Product Set Up</h2>
|
|
This section gives step-by-step instructions to get a product set-up
|
|
and running. The following section <a
|
|
href="#ProductCustomization">"Product
|
|
Customization Guide"</a> gives instructions on configuring the product
|
|
and customizing it to your local site.
|
|
<ul>
|
|
<li> <b>Login to the GFE from a terminal window under a new user ID,
|
|
e.g. TextTest</b>. From a terminal window in the /awips2/cave
|
|
directory, type ./cave.sh -u <i>tester_id</i> -component GFE. Login as a new user ID such as
|
|
TextTest.
|
|
You will use this ID to set up new products and test them. When
|
|
you are satisfied with a product, you may move it to your SITE
|
|
directory.</li>
|
|
<li> <b>Create Edit Areas.</b> Create edit areas named
|
|
"area1",
|
|
"area2", and "area3". Some products are set up to run with
|
|
these "defaultEditAreas" as noted in the table below. Other
|
|
products run with a set of edit area Combinations which can be set up
|
|
through the <a href="FormatterLauncher.html">Formatter Launcher Dialog</a>.</li>
|
|
<li><b>Locate the product you wish to set up. </b>From the GFE
|
|
Main Menu, select "Define Text Products". Locate the "Standard"
|
|
file for the product you wish to set up in the table below:</li>
|
|
</ul>
|
|
<a
|
|
name="TABULAR_-TYPE_PRODUCTS_"></a><b>TABULAR
|
|
-TYPE PRODUCTS</b> <br>
|
|
<center>
|
|
<table nosave="" border="1" cols="4" width="70%">
|
|
<caption>
|
|
<center></center>
|
|
<br>
|
|
</caption><tbody>
|
|
</tbody> <tbody>
|
|
<tr>
|
|
<td style="font-weight: bold;"> Product</td>
|
|
<td style="font-weight: bold;">Standard File<br>
|
|
(Text Products Window)<br>
|
|
</td>
|
|
<td style="font-weight: bold;">Site Definition File <br>
|
|
Site Overrides File<br>
|
|
(Text Utilities Window)<br>
|
|
<br>
|
|
OR Local file <br>
|
|
(Text Products Window)<br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">Regional
|
|
Overrides File<br>
|
|
(Text Utilities Window)<br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">Edit Areas<br>
|
|
</td>
|
|
<td style="font-weight: bold;">Additional Set-up Info </td>
|
|
</tr>
|
|
<tr>
|
|
<td>CCF</td>
|
|
<td>CCF</td>
|
|
<td>CCF_<site>_Definition<br>
|
|
CCF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CCF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas" <br>
|
|
</td>
|
|
<td>Edit Areas Needed: Typically point edit areas are required
|
|
for each entry to you wish to generate the product for.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SFT</td>
|
|
<td>SFT</td>
|
|
<td>SFT_<site>_Definition<br>
|
|
SFT_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">SFT_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td>Edit Areas Needed: Typically point edit areas are required
|
|
for each entry to you wish to generate the product for. </td>
|
|
</tr>
|
|
<tr>
|
|
<td>AFM</td>
|
|
<td>PFM</td>
|
|
<td>AFM_<site>_Definition<br>
|
|
AFM_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">AFM_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td>See Standard product file for details.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>PFM</td>
|
|
<td>PFM</td>
|
|
<td>PFM_<site>_Definition<br>
|
|
PFM_<site>_Overrides </td>
|
|
<td style="vertical-align: top;">PFM_<region>_Overrides </td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td>Edit Areas Needed: Typically point edit areas are required
|
|
for each entry to you wish to generate the product for. </td>
|
|
</tr>
|
|
<tr>
|
|
<td>MVF</td>
|
|
<td>MVF</td>
|
|
<td>MVF_<site>_Definition <br>
|
|
MVF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">MVF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td>Edit Areas Needed: Typically point edit areas are required
|
|
for each entry to you wish to generate the product for. </td>
|
|
</tr>
|
|
<tr>
|
|
<td>FWF Tabular</td>
|
|
<td>FWFTable</td>
|
|
<td>FWFTable_<site>_Definition <br>
|
|
FWFTable_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">FWFTable_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>FWM</td>
|
|
<td>FWM</td>
|
|
<td>FWM_<site>_Definition<br>
|
|
FWM_<site>_Overrides </td>
|
|
<td style="vertical-align: top;">FWM_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;"><br>
|
|
AFD</td>
|
|
<td style="vertical-align: top;">AFD</td>
|
|
<td style="vertical-align: top;">AFD_<site>_Definition<br>
|
|
AFD_<site>_Overrides </td>
|
|
<td style="vertical-align: top;">AFD_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</center>
|
|
<p> <a
|
|
name="NARRATIVE-TYPE_PRODUCTS"></a><b>NARRATIVE-TYPE
|
|
PRODUCTS</b> </p>
|
|
<center>
|
|
<table nosave="" border="1" cols="4" width="70%">
|
|
<caption>
|
|
<center></center>
|
|
<br>
|
|
</caption><tbody>
|
|
</tbody> <tbody>
|
|
<tr>
|
|
<td> <span style="font-weight: bold;">Product</span></td>
|
|
<td><span style="font-weight: bold;">Standard File</span><br
|
|
style="font-weight: bold;">
|
|
<span style="font-weight: bold;">(Text Products Window)</span><br>
|
|
</td>
|
|
<td><span style="font-weight: bold;">Site Definition File</span><br
|
|
style="font-weight: bold;">
|
|
<span style="font-weight: bold;">Site Overrides File</span><br
|
|
style="font-weight: bold;">
|
|
<span style="font-weight: bold;">(Text Utilities Window)</span><br
|
|
style="font-weight: bold;">
|
|
<br style="font-weight: bold;">
|
|
<span style="font-weight: bold;">OR Local file </span><br
|
|
style="font-weight: bold;">
|
|
<span style="font-weight: bold;">(Text Products Window)</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Regional
|
|
Overrides File</span><br style="font-weight: bold;">
|
|
<span style="font-weight: bold;">(Text Utilities Window)</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Edit
|
|
Areas</span><br>
|
|
</td>
|
|
<td style="font-weight: bold;">Additional Set-up Info </td>
|
|
</tr>
|
|
<tr>
|
|
<td>ZFP</td>
|
|
<td>AreaFcst</td>
|
|
<td>ZFP_<site>_Definition<br>
|
|
ZFP_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">ZFP_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td><br>
|
|
</td>
|
|
</tr>
|
|
<tr nosave="">
|
|
<td>SAF</td>
|
|
<td>AreaFcst</td>
|
|
<td nosave="">SAF_<site>_Definition<br>
|
|
SAF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">SAF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td>Also inherits from ZFP Site Definitions and Overrides so that
|
|
those settings and customizations will carry over to the SAF.<br>
|
|
<br>
|
|
Also inherits from SAF_Overrides<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CWF</td>
|
|
<td>CWF</td>
|
|
<td>CWF_<site>_Definition<br>
|
|
CWF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CWF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CWF_Pacific</td>
|
|
<td>CWF_Pacific</td>
|
|
<td>CWF_Pacific_<site>_Definition<br>
|
|
CWF_Pacific_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CWF_Pacific_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>GLF</td>
|
|
<td>GLF</td>
|
|
<td>GLF_<site>_Definition<br>
|
|
GLF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GLF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">"defaultEditAreas"</td>
|
|
<td>Many special edit areas needed.
|
|
<p>See Standard GLF product file for more details. <br>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr nosave="">
|
|
<td>NSH</td>
|
|
<td>NSH</td>
|
|
<td>NSH_<site>_Definition<br>
|
|
NSH_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">NSH_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td nosave=""><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">OFF<br>
|
|
</td>
|
|
<td style="vertical-align: top;">OFF<br>
|
|
</td>
|
|
<td style="vertical-align: top;">OFF_<site>_Definition<br>
|
|
OFF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">OFF_<region>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>FWF</td>
|
|
<td>FWF</td>
|
|
<td>FWF_<site>_Definition<br>
|
|
FWF_<site>_Overrides<br>
|
|
</td>
|
|
<td style="vertical-align: top;">FWF_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Combination</td>
|
|
<td>
|
|
<p><br>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">FWS<br>
|
|
</td>
|
|
<td style="vertical-align: top;">FWF<br>
|
|
</td>
|
|
<td style="vertical-align: top;">FWS_<site>_Definition<br>
|
|
FWS_<site>_Overrides</td>
|
|
<td style="vertical-align: top;">FWS_<region>_Overrides</td>
|
|
<td style="vertical-align: top;">Lat/Lon point<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Also inherits from FWS_Overrides.<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</center>
|
|
<ul>
|
|
<li> <b>Open the Standard product file for viewing. </b>Press
|
|
the arrow to the left of the product name to display available configurations;
|
|
then MB3 over the name of the standard file and choose, "Open".</li>
|
|
<li> <b>Create Data and Publish to Official Database. </b>Locate
|
|
the documentation section in the standard file for "Weather Elements
|
|
Required." Create data for these weather elements and then, from
|
|
the Products Menu, choose "Publish to Official."</li>
|
|
<li> <b>Run your product.</b> From the "Products" menu, select
|
|
"Formatter Launcher" The <a href="FormatterLauncher.html">Formatter
|
|
Launcher Dialog</a> will appear listing the
|
|
products. Select the name of the product, which brings up a new
|
|
tab. If the product
|
|
runs with Combinations of edit areas, a map will appear and you may use
|
|
the Zone Combiner portion of the dialog to set up desired
|
|
combinations. Choose "Run" to start the formatter.</li>
|
|
<li> <b>Make dialog selections.</b> Some products will display
|
|
a dialog for user input. Make appropriate selections and choose
|
|
OK.</li>
|
|
<li> <b>Output will appear</b> in the Formatter Launcher Dialog and
|
|
you
|
|
can modify, save, and/or transmit it.</li>
|
|
<li> <b>If you have any problems</b>, refer to the <a
|
|
href="TextReferenceTroubleShooting.html">Troubleshooting Guide</a>.</li>
|
|
<li style="font-weight: bold;">Review AreaDictionary. <span
|
|
style="font-weight: normal;">The "AreaDictionary" is located in the
|
|
"TextUtilities" folder of the Localization perspective. This file is
|
|
automatically generated and contains information about the zones,
|
|
counties and cities for your site. This information is documented at
|
|
the beginning of the file. Be sure and review the generated file and,
|
|
if necessary, use MB3 "Open" to make changes at SITE level. Please
|
|
note that any item listed as CONFIGURED is a generated item and will
|
|
be overwritten during software upgrades.</span></li>
|
|
<li style="font-weight: bold;"><span style="font-weight: normal;"><span
|
|
style="font-weight: bold;">Set up Customized Edit Areas</span>.
|
|
For those products that use "defaultEditAreas", modify the Site
|
|
Definition file with appropriate edit areas customized for your site.<br>
|
|
</span></li>
|
|
<li><span style="font-weight: bold;">Run the Baseline, Regional, and
|
|
Site Products.</span></li>
|
|
<li><b>Deactivating Products: If products appear in the Formatter
|
|
Launcher which your site does not want to use, you can deactivate them
|
|
as follows: </b>Open the Site Definition File OR Local product file
|
|
and set
|
|
the
|
|
"displayName. Press MB3 over the Site Definition File OR
|
|
Local file (see
|
|
table above) and choose "Open". Set the "displayName"
|
|
Definition
|
|
entry. This is the name that will appear in the Formatter
|
|
Launcher
|
|
Dialog. <br>
|
|
</li>
|
|
</ul>
|
|
<h2><a name="Hazard_Products"></a>Hazard Products</h2>
|
|
The following Hazard Products are installed automatically. To run
|
|
them: From the Formatter Launcher, choose
|
|
Products-->Hazards.<br>
|
|
<br>
|
|
<table style="text-align: left; width: 100%;" border="1" cellpadding="2"
|
|
cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Product</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Standard
|
|
File</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Local
|
|
File</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Edit
|
|
Areas</span><br>
|
|
</td>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Additional
|
|
Info</span><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">ADR<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg_ADR_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">AVA<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_AVA_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">AVW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_AVW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">BLU<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_BLU_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">CAE<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_CAE_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">CDW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_CDW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">CEM<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_CEM_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">CFW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_CFW<br>
|
|
(Inherits from GenericHazard) </td>
|
|
<td style="vertical-align: top;">Hazard_CFW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">EQR<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_EQR_Local</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">EQW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport) </td>
|
|
<td style="vertical-align: top;">CivilEmerg_EQW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">EVI<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_EVI_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">FFA<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_FFA<br>
|
|
(Inherits from GenericHazard) </td>
|
|
<td style="vertical-align: top;">Hazard_FFA_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined<br>
|
|
</td>
|
|
<td style="vertical-align: top;">A dialog is displayed when this
|
|
formatter is started to allow the forecaster to select the flood reason
|
|
for the required H-VTEC line.
|
|
<p>Can be configured for either ZONES or FIPS UGCs.<br>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">FRW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_FRW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">HLS<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_HLS<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">Hazard_HLS_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">HMW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_HMW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">HWO</td>
|
|
<td style="vertical-align: top;">Hazard_HWO<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">Hazard_HWO_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">LAE<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_LAE_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">LEW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_LEW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">MWS<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_MWS<br>
|
|
(Inherits from GenericHazard) </td>
|
|
<td style="vertical-align: top;">Hazard_MWS_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">NPW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_NPW<br>
|
|
(Inherits from GenericHazard)</td>
|
|
<td style="vertical-align: top;">Hazard_NPW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">NUW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_NUW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">RFW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_RFW<br>
|
|
(Inherits from GenericHazard)</td>
|
|
<td style="vertical-align: top;">Hazard_RFW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">RHW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_RHW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">SPW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_SPW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">TOE<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_TOE_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">VOW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">CivilEmerg<br>
|
|
(Inherits from GenericReport)</td>
|
|
<td style="vertical-align: top;">CivilEmerg_VOW_Local</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;">Does not use any gridded
|
|
data. Zone combiner is used to define area of product. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">WCN<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_WCN<br>
|
|
(Inherits from GenericHazard)</td>
|
|
<td style="vertical-align: top;">Hazard_WCN_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">WSW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Hazard_WSW<br>
|
|
(Inherits from GenericHazard)</td>
|
|
<td style="vertical-align: top;">Hazard_WSW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Automatically determined</td>
|
|
<td style="vertical-align: top;">Uses the Hazards grid. </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<h2><a name="Special_Statements"></a>Statements</h2>
|
|
<table style="width: 100%; text-align: left;" border="1" cellpadding="2"
|
|
cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="vertical-align: top;"><span style="font-weight: bold;">Product</span><br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">Standard File<br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">Local File<br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">EditAreas<br>
|
|
</td>
|
|
<td style="vertical-align: top; font-weight: bold;">Additional
|
|
Info<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">ESF<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GenericReport<br>
|
|
</td>
|
|
<td style="vertical-align: top;">ESF_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Can be configured to use either
|
|
FIPS or ZONE codes.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">NOW<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GenericReport</td>
|
|
<td style="vertical-align: top;">NOW_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">PNS<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GenericReport</td>
|
|
<td style="vertical-align: top;">PNS_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">RFD<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GenericReport</td>
|
|
<td style="vertical-align: top;">RFD_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">SPS<br>
|
|
</td>
|
|
<td style="vertical-align: top;">GenericReport</td>
|
|
<td style="vertical-align: top;">SPS_Local<br>
|
|
</td>
|
|
<td style="vertical-align: top;">Combinations</td>
|
|
<td style="vertical-align: top;"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h2> <a name="ProductCustomization"></a>Product Customization</h2>
|
|
<a name="CustomizingNarrative"></a><b>Customizing Narrative Phrases</b>
|
|
<p><a name="ExampleCustomizing"></a><b>Example: Customizing a Phrase</b>
|
|
</p>
|
|
<p>The "wind_withGusts_phrase" produces phrases such as: </p>
|
|
<p>WINDS NORTHEAST 10 TO 20 KNOTS WITH GUSTS TO AROUND 70 KNOTS VEERING
|
|
SOUTHEAST 5 TO 15 KNOTS WITH GUSTS AROUND 25 KNOTS IN THE EARLY
|
|
MORNING. </p>
|
|
<p>When we find this phrase in the Wind and
|
|
WindGust Text Rules section, we see that it can be customized in
|
|
various ways. If we want to change the descriptor from "WINDS" to
|
|
"WIND", we need to override the <i><font color="#993366">phrase_descriptor_dict</font></i>
|
|
for "Wind". <font color="#000000">First, we look to see if it is
|
|
already overridden in the Standard File, AreaFcst, which we
|
|
open in the Text Products folder of the Define Text Products dialog. We
|
|
can issue a "find" command to see if it is there. It is not, so next we
|
|
look in the ConfigVariables utility from the Text Utilities folder
|
|
and issue a "find" command. </font><font color="#cc0000">NOTE</font><font
|
|
color="#000000">:
|
|
The ConfigVariables Utility is "Read-Only", so
|
|
you cannot change the method in that file. You MUST copy it into your
|
|
Overrides file, and in that location, you can change the value which
|
|
will override or supercede the value found in the library module.<br>
|
|
</font></p>
|
|
<p>We notice that the <i><font color="#993366">phrase_descriptor_dict</font></i>
|
|
is very lengthy. We do not have to repeat the entire method.
|
|
Instead, we can use the dictionary as a starting
|
|
point and simply change any entries that are relevant to us as follows:
|
|
</p>
|
|
<blockquote><font color="#006600">def phrase_descriptor_dict(self,
|
|
tree, node):</font> <br>
|
|
<font color="#006600"> dict
|
|
= TextRules.TextRules.phrase_descriptor_dict(self, tree, node)</font> <br>
|
|
<font color="#006600">
|
|
dict["Wind"] = "wind"</font> <br>
|
|
<font color="#006600">
|
|
return dict</font></blockquote>
|
|
Notice that our descriptor entry can be in lower case. All
|
|
formatters work in lower case to construct the phrase. It is
|
|
converted to upper case near the end of processing. <br>
|
|
<p>If we want to report knots as "KTS" instead of "KNOTS", we will
|
|
override the <i><font color="#993366">units_descriptor_dict </font></i>for
|
|
"kt" as follows in the "Overriding Thresholds and Variables" section of
|
|
our Overrides file: </p>
|
|
<blockquote> <font color="#006600">def
|
|
units_descriptor_dict(self, tree, node):</font> <br>
|
|
<font color="#006600"> dict
|
|
= TextRules.TextRules.units_descriptor_dict(self, tree, node)</font> <br>
|
|
<font color="#006600">
|
|
unitsDict = dict["units"]</font> <br>
|
|
<font color="#006600">
|
|
unitsDict["kt"] = "kts"</font> <br>
|
|
<font color="#006600">
|
|
return dict</font></blockquote>
|
|
The wind_withGusts_phrase reports gusts if they are 10 knots greater
|
|
than the maximum wind speed. Suppose we would like to suppress
|
|
reporting gusts unless they are at least 15 knots greater than the
|
|
maximum wind speed. The table for the
|
|
"public_windRange_withGusts_phrase" lists a method called <i><font
|
|
color="#993366">gust_wind_difference_threshold.</font></i><font
|
|
color="#000000"> We can locate it in the VectorRelatedPhrases module
|
|
and copy and paste it into our Overrides file:</font><font
|
|
color="#000000"></font>
|
|
<p> <font color="#006600">def
|
|
gust_wind_difference_threshold(self, tree, node):</font> <br>
|
|
<font color="#006600">
|
|
# Difference between gust and max wind below which gusts are not
|
|
mentioned</font> <br>
|
|
<font color="#006600">
|
|
# Units are in mph or knots depending on the current product</font> <br>
|
|
<font color="#006600">
|
|
return 15</font> </p>
|
|
<p><a name="ConfigurableIssuance--"></a><b><font color="#000000">Narrative
|
|
Definition and Configurable Issuance -- issuance_list</font></b> </p>
|
|
<p><font color="#000000">Narrative products are composed of a
|
|
"narrative" which contains a series of "component" phrase
|
|
products. This is used to construct a "narrative" type of
|
|
product of the form:</font> </p>
|
|
<p><font color="#000000"> </font><font
|
|
color="#006600">{</font> <br>
|
|
<font color="#006600">
|
|
"type": "narrative",</font> <br>
|
|
<font color="#006600">
|
|
"narrativeDef": [(<componentName>, <number of
|
|
hours>), ...],</font> <br>
|
|
<font color="#006600">
|
|
"methodList": [self.assembleChildWords"],</font> <br>
|
|
<font color="#006600">
|
|
# optional:</font> <br>
|
|
<font color="#006600">
|
|
"priorPeriod": <number of hours>, # Number of hours
|
|
for sampling prior to forecast. Used for</font> <br>
|
|
<font color="#006600">
|
|
# first period trends</font> <br>
|
|
<font color="#006600"> }</font>
|
|
</p>
|
|
<p>For example: </p>
|
|
<p><font color="#000000"> </font><font
|
|
color="#006600">{</font> <br>
|
|
<font color="#006600">
|
|
"type": "narrative",</font> <br>
|
|
<font color="#006600">
|
|
"narrativeDef": [("Period_1", 12), ("Period_2_3", 12),
|
|
("Period_2_3, 12)],</font> <br>
|
|
<font color="#006600">
|
|
"methodList": [self.assembleChildWords"],</font> <br>
|
|
<font color="#006600">
|
|
# optional:</font> <br>
|
|
<font color="#006600">
|
|
"priorPeriod": 24, # Number of hours for sampling prior to
|
|
forecast. Used for</font> <br>
|
|
<font color="#006600">
|
|
# first period trends</font> <br>
|
|
<font color="#006600"> }</font>
|
|
</p>
|
|
<p><font color="#000000">Note that you may define a "Phantom" period
|
|
during which no phrases will be generated. It will act as a
|
|
placeholder advancing your time periods:</font> </p>
|
|
<p><font color="#000000"> </font><font
|
|
color="#006600">"narrativeDef": {</font> <br>
|
|
<font color="#006600">
|
|
("Period", "period1"),</font> <br>
|
|
<font color="#006600">
|
|
("Period", 12), ("Period", 12),</font> <br>
|
|
<font color="#006600">
|
|
("LaterPeriod", 12), ("LaterPeriod", 12), ("LaterPeriod", 12),</font> <br>
|
|
<font color="#006600">
|
|
("Phantom", 6), ("Extended", 24), ("Extended", 24), ("Extended", 24)</font>
|
|
<br>
|
|
<font color="#006600">
|
|
}</font> </p>
|
|
<p><font color="#000000">You can customize the issuance times and the
|
|
series of components by overriding the </font><i><font color="#993366">_issuance_list</font></i><font
|
|
color="#000000"> method, which returns information about the issuance
|
|
times you want for your product. The </font><i><font
|
|
color="#993366">issuance_list</font></i><font color="#000000">, is
|
|
found in the Standard file for narrative-type products.</font> </p>
|
|
<p><font color="#006600"> </font><font color="#000000">For each
|
|
issuance time we must give the following information:</font> </p>
|
|
<ul>
|
|
<li> <font color="#000000">description -- text to appear in the
|
|
startUp dialog for the product.</font></li>
|
|
<li> <font color="#000000">startHour, endHour -- start and end hours
|
|
for the first period. These times are relative to self.DAY() and
|
|
self.NIGHT() which default to 6 and 18, respectively. The
|
|
startHour or endHour can be specified as "issuanceHour".</font></li>
|
|
<li> <font color="#000000">expirationHour -- hour when the product
|
|
expires in local time (it is converted to UGC for the header)</font></li>
|
|
<li> <font color="#000000">period1 Label -- the label for the
|
|
first period. e.g. ".TODAY...", ".REST OF TODAY..."</font></li>
|
|
<li> <font color="#000000">period1 lateNight phrase -- phrase to use
|
|
if the hours of 3am to 6am must be qualified e.g. "Partly cloudy<i> in
|
|
the early morning</i>."</font></li>
|
|
<li> <font color="#000000">period1 lateDay phrase -- phrase to use
|
|
if
|
|
the hours of 3pm to 6pm must be qualified e.g. "Partly cloudy<i> in the
|
|
early evening</i>."</font></li>
|
|
<li> <font color="#000000">todayFlag -- if 1, "TODAY" and "TONIGHT"
|
|
phrasing will be used in subsequent periods, otherwise, weekday wording
|
|
will apply.</font></li>
|
|
<li> <font color="#000000">narrative definition -- component
|
|
and time period pairs</font></li>
|
|
</ul>
|
|
<font color="#000000">To understand how this works, here is an example
|
|
of an issuance list for the ZFP (AreaFcst Standard product):</font>
|
|
<p><font color="#006600"> def _10_503_issuance_list(self,
|
|
argDict):<br>
|
|
narrativeDefAM = [<br>
|
|
|
|
("Period_1",
|
|
"period1"),
|
|
<br>
|
|
|
|
("Period_2_3", 12), ("Period_2_3", 12), <br>
|
|
|
|
("Period_4_5", 12), ("Period_4_5", 12), <br>
|
|
|
|
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
|
|
("Period_6_14", 12), <br>
|
|
|
|
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
|
|
("Period_6_14", 12), <br>
|
|
]<br>
|
|
narrativeDefPM = [<br>
|
|
|
|
("Period_1", "period1"),<br>
|
|
|
|
("Period_2_3", 12), ("Period_2_3", 12), <br>
|
|
|
|
("Period_4_5", 12), ("Period_4_5", 12), <br>
|
|
|
|
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
|
|
("Period_6_14", 12), <br>
|
|
|
|
("Period_6_14", 12), ("Period_6_14", 12), ("Period_6_14", 12),
|
|
("Period_6_14", 12), <br>
|
|
|
|
("Period_6_14", 12),<br>
|
|
]<br>
|
|
<br>
|
|
return [<br>
|
|
|
|
("Morning", self.DAY(), self.NIGHT(), self.NIGHT(),<br>
|
|
|
|
".TODAY...", "early in the morning", "late in the afternoon",<br>
|
|
|
|
1, narrativeDefAM), <br>
|
|
|
|
("Morning with Pre-1st Period", self.DAY()-2, self.NIGHT(),
|
|
self.NIGHT(),<br>
|
|
|
|
".TODAY...", "early in the morning", "late in the afternoon",<br>
|
|
|
|
1, narrativeDefAM), <br>
|
|
|
|
("Morning Update", "issuanceHour", self.NIGHT(), self.NIGHT(),<br>
|
|
|
|
".REST OF TODAY...", "early in the morning", "late in the afternoon",<br>
|
|
|
|
1, narrativeDefAM), <br>
|
|
|
|
("Afternoon Update", "issuanceHour", self.NIGHT(), self.NIGHT(),<br>
|
|
|
|
".REST OF TODAY...", "early in the morning","late in the afternoon",<br>
|
|
|
|
1, narrativeDefAM), <br>
|
|
|
|
# End times are tomorrow:<br>
|
|
|
|
("Afternoon", self.NIGHT(), 24 + self.DAY(), 24 + self.DAY(),<br>
|
|
|
|
".TONIGHT...", "late in the night", "early in the evening",<br>
|
|
|
|
1, narrativeDefPM), <br>
|
|
|
|
("Afternoon with Pre-1st Period", self.NIGHT()-2, 24 + self.DAY(), 24 +
|
|
self.DAY(),<br>
|
|
|
|
".TONIGHT...", "late in the night", "early in the evening",<br>
|
|
|
|
1, narrativeDefPM), <br>
|
|
|
|
("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),<br>
|
|
|
|
".REST OF TONIGHT...", "early in the morning","early in the evening",<br>
|
|
|
|
1, narrativeDefPM),<br>
|
|
#
|
|
For the early morning update, this produces:<br>
|
|
#
|
|
REST OF TONIGHT:<br>
|
|
#
|
|
MONDAY<br>
|
|
#
|
|
MONDAY NIGHT<br>
|
|
|
|
("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),<br>
|
|
|
|
".REST OF TONIGHT...", "early in the morning","late in the afternoon",<br>
|
|
|
|
0, narrativeDefPM), <br>
|
|
#
|
|
Alternative<br>
|
|
#
|
|
For the early morning update, this produces:<br>
|
|
#
|
|
EARLY THIS MORNING:<br>
|
|
#
|
|
TODAY<br>
|
|
#
|
|
TONIGHT<br>
|
|
|
|
#("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),<br>
|
|
#
|
|
".REST OF TONIGHT...", "late in the night", "early in the evening",<br>
|
|
# 1,
|
|
narrativeDefPM), <br>
|
|
|
|
#("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),<br>
|
|
#
|
|
".EARLY THIS MORNING...", "early in the morning", "late in the
|
|
afternoon",<br>
|
|
# 1,
|
|
narrativeDefPM), <br>
|
|
]</font></p>
|
|
<p><font color="#006600"><br>
|
|
</font> NOTE: Any variables that begin with a "self._" should be
|
|
encased in a "try" block. This is because the "_issuance_list" is
|
|
accessed and examined once BEFORE the product is actually run in order
|
|
to set up the input dialog. During this first examination, the
|
|
variables are not yet initialized. As an example, here is the
|
|
issuance_list from the FWF:<br>
|
|
</p>
|
|
<p> <span style="color: rgb(0, 102, 0);">def
|
|
_issuance_list(self, argDict):</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
narrativeDefAM = [</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FirePeriod", "period1"),</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FirePeriod", 12), ("FirePeriod", 12),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
]</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
narrativeDefPM = [</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FirePeriod", "period1"),</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FirePeriod", 12), ("FirePeriod", 12), ("FirePeriod", 12)</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
]</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
extended = [</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FireExtendedShortTerm", 24), ("FireExtendedShortTerm", 24),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FireExtendedShortTerm", 24), </span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("FireExtended", 24), ("FireExtended", 24), </span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
]</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(204, 0, 0);">try:</span></span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
if self._individualExtended == 1:</span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
if self._extendedLabel == 1:</span><br style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
narrativeDefAM.append(("ExtendedLabel",0))</span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
narrativeDefPM.append(("ExtendedLabel",0))</span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
narrativeDefAM = narrativeDefAM + extended</span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
narrativeDefPM = narrativeDefPM + extended</span><br
|
|
style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
except:</span><br style="color: rgb(204, 0, 0);">
|
|
<span style="color: rgb(204, 0, 0);">
|
|
pass</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
return [</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Morning", self.DAY(), self.NIGHT(), self.NIGHT(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".TODAY...", "early in the morning", "late in the afternoon",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
1, narrativeDefAM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Morning Update", "issuanceHour", self.NIGHT(), self.NIGHT(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".REST OF TODAY...", "early in the morning", "late in the afternoon",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
1, narrativeDefAM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Afternoon Update", "issuanceHour", self.NIGHT(), self.NIGHT(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".REST OF TODAY...", "early in the morning","late in the afternoon",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
1, narrativeDefAM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# End times are tomorrow:</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Afternoon", self.NIGHT(), 24 + self.DAY(), 24 + self.DAY(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".TONIGHT...", "late in the night", "early in the evening",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
1, narrativeDefPM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".REST OF TONIGHT...", "late in the night","early in the evening",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
1, narrativeDefPM),</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# For the early morning update, this produces:</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# REST OF TONIGHT:</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# MONDAY</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# MONDAY NIGHT</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
".REST OF TONIGHT...", "early in the morning","late in the afternoon",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
0, narrativeDefPM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# Alternative</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# For the early morning update, this produces:</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# EARLY THIS MORNING:</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# TODAY</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# TONIGHT</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
#("Evening Update", "issuanceHour", 24 + self.DAY(), 24 + self.DAY(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# ".REST OF TONIGHT...", "late in the night", "early in the evening",</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# 1, narrativeDefPM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
#("Early Morning Update", "issuanceHour", self.DAY(), self.DAY(),</span><br
|
|
style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# ".EARLY THIS MORNING...", "early in the morning", "late in the
|
|
afternoon",</span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
# 1, narrativeDefPM), </span><br style="color: rgb(0, 102, 0);">
|
|
<span style="color: rgb(0, 102, 0);">
|
|
]</span><br>
|
|
</p>
|
|
<p><a name="Post-ProcessingNarrativePhrases"></a><b><font
|
|
color="#000000">Post-Processing Narrative Phrases</font></b> </p>
|
|
<p><font color="#000000">Although, it is not encouraged, there will be
|
|
times that you will want to post-process phrases to clean up
|
|
undesirable wording.</font> </p>
|
|
<p>A "postProcessPhrase" hook is available for most
|
|
phrases. This allows you to do string replacement
|
|
and/or abbreviations. Here is the default method from the
|
|
PhraseBuilder module. You may copy it into your Overrides file
|
|
and add replacements: </p>
|
|
<p><font color="#663366"> def postProcessPhrase(self,
|
|
tree, node):</font> <br>
|
|
<font color="#663366"> words
|
|
= node.get("words")</font> <br>
|
|
<font color="#663366"> if
|
|
words is not None:</font> <br>
|
|
<font color="#663366">
|
|
words = words.replace("rain showers and thunderstorms", "showers and
|
|
thunderstorms")</font> <br>
|
|
<font color="#663366">
|
|
return self.setWords(node, words)</font> <br>
|
|
</p>
|
|
<span style="font-weight: bold;"><a name="AllowedHazards"></a>AllowedHazards</span><br>
|
|
<br>
|
|
Every product that includes Headline phrases also contains a method
|
|
that controls which Hazards are mentioned. This method can be
|
|
overridden so that you have control over which weather hazards
|
|
(Warnings, Advisories, and Watches) appear in each product. An
|
|
example of this method appears below.<br>
|
|
<br>
|
|
<br style="color: rgb(0, 153, 0);">
|
|
<span style="color: rgb(0, 102, 0);"> def
|
|
allowedHazards(self):<br>
|
|
allActions = ["NEW", "EXA",
|
|
"EXB", "EXT", "UPG", "CAN", "CON", "EXP"]<br>
|
|
marineActions = ["NEW",
|
|
"EXA", "EXB", "EXT", "CON"]<br>
|
|
return [<br>
|
|
|
|
('HF.W', marineActions, 'Marine'), #
|
|
HURRICANE FORCE WIND WARNING<br>
|
|
|
|
('SR.W', marineActions, 'Marine'),
|
|
# STORM WARNING<br>
|
|
|
|
('GL.W', marineActions, 'Marine'), # GALE
|
|
WARNING<br>
|
|
|
|
('BW.Y', marineActions, 'Marine'), # BRISK WIND
|
|
ADVISORY <br>
|
|
|
|
('UP.W', allActions,
|
|
'IceAccr'),
|
|
# HEAVY FREEZING SPRAY WARNING<br>
|
|
|
|
('TO.A', allActions,
|
|
'Convective'), # TORNADO WATCH<br>
|
|
|
|
('SV.A', allActions,
|
|
'Convective'), # SEVERE
|
|
THUNDERSTORM WATCH<br>
|
|
|
|
('UP.Y', allActions,
|
|
'IceAccr'),
|
|
# HEAVY FREEZING SPRAY ADVISORY<br>
|
|
|
|
('AF.Y', allActions,
|
|
'Ashfall'),
|
|
# VOLCANIC ASHFALL ADVISORY<br>
|
|
|
|
('FG.Y', allActions,
|
|
'Fog'),
|
|
# DENSE FOG ADVISORY<br>
|
|
|
|
('SM.Y', allActions,
|
|
'Smoke'),
|
|
# DENSE SMOKE ADVISORY<br>
|
|
|
|
('LO.Y', allActions,
|
|
'LowWater'), # LOW
|
|
WATER ADVISORY<br>
|
|
|
|
('SmCrftExCau'),
|
|
# Local headline<br>
|
|
]<br>
|
|
</span><br>
|
|
In this example, we show all of the possible components of the
|
|
allowedHazards list. This list not only controls which Headlines
|
|
appear in each product, but also which VTEC strings appear in the
|
|
product as well. <br>
|
|
<br>
|
|
Each line in the allowedHazards list can contain up to three parts: the
|
|
key for the hazard, the VTEC actions that are allowed for that hazard,
|
|
and a category for the hazard. The only part that is mandatory is
|
|
the hazard key.
|
|
Usually this key corresponds to a VTEC code, but locally-defined
|
|
hazards may be defined as well (See the last entry). The action
|
|
list and the category are optional. The category field can
|
|
be used to group hazards. If more than one hazard in a group is
|
|
found, only the highest priority hazard is reported, where priority is
|
|
defined by the order of appearance in the list. In the example
|
|
above, if both a Storm Warning (SR.W) and Gale Warninng (GL.W)
|
|
were found in the grids, only the Storm Warning would be
|
|
reported. By the same token, you can have multiple hazards
|
|
in an area by assigning different categories to each hazard.<br>
|
|
<br>
|
|
<span style="font-weight: bold;"><a name="HazardKey"></a>Hazard Key</span><br>
|
|
<br>
|
|
The HazardKey is the key that appears in the serverConfig file and
|
|
hence in the GFE display when you edit the Hazard grid. There are
|
|
two types of hazard keys, VTEC, and locally-defined. VTEC hazard
|
|
keys follow a particular format and are pre-defined for you in the
|
|
VTECTable. However you may also define local hazards as well. The
|
|
last entry in the above example of the allowedHazards list is a
|
|
locally-defined hazard. In this example, it is "<span
|
|
style="color: rgb(0, 102, 0);">SmCrftExCau</span>" which is an
|
|
abreviation for "Small Craft Exercise Caution". To include a
|
|
locally-defined hazard all you need to do is list it all by itself in
|
|
the allowedHazards list. Once your localConfig is set up properly you
|
|
will see this hazard appear (generally at the end of the list of
|
|
hazards) and you can define a Hazard grid that contains this
|
|
particular Hazard. Once defined in a grid, this hazard will
|
|
automatically appear in the product as long as the same hazardKey
|
|
appears in the allowedHazards list as in the example above.<br>
|
|
<br>
|
|
VTEC hazard keys are slightly more complicated. The presence of
|
|
the key in allowedHazards list is not the only piece of information
|
|
necessary for the hazard to appear in the product. You must also
|
|
defined the list of VTEC "action codes" as well. This action code
|
|
list defines which type of VTEC code can appear in your product.
|
|
For convenience, we include a list including all possible VTEC codes,
|
|
as well as a list of codes that apply to the Marine-type
|
|
products. In general, you will want to include all of the VTEC
|
|
action codes for every VTEC hazard. In some cases, however, you
|
|
may want to limit the set of actions codes in each product.<br>
|
|
<br>
|
|
<hr style="width: 100%; height: 2px;">
|
|
<h2><a name="WFOSITE"></a>WFO Site Information</h2>
|
|
WFO site information is stored in a TextUtility named SiteCFG.
|
|
This module is loaded using<br>
|
|
the familiar BASE, SITE paradigm. Note that a user other than
|
|
BASE or SITE should not override<br>
|
|
this file. The file contains a dictionary which holds information
|
|
used to configure text products<br>
|
|
from the BASE template files. It also is used by the formatter
|
|
launcher to find the name of<br>
|
|
the backup site.<br>
|
|
<br>
|
|
A sample of this dictionary look like the following:<br>
|
|
<br>
|
|
SiteInfo= {<br>
|
|
'ABQ': {<br>
|
|
'region': 'SR',<br>
|
|
'fullStationID':
|
|
'KABQ',<br>
|
|
'wfoCityState':
|
|
'ALBUQUERQUE NM',<br>
|
|
'wfoCity':
|
|
'ALBUQUERQUE',<br>
|
|
'state': 'NEW MEXICO',<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
The key is a WFO site id. This file can be overridden by
|
|
the SITE user to modify any desired
|
|
entries. Again, it is undefined bahavior (anything can happen)
|
|
for any other user other than
|
|
SITE to modify this file.<br>
|
|
</body>
|
|
</html>
|