From c5274e45c9cb104afee46c64b416bb3b413a2505 Mon Sep 17 00:00:00 2001 From: Steve Harris Date: Mon, 30 Sep 2013 13:05:31 -0400 Subject: [PATCH] 13.5.2-7 baseline Former-commit-id: 0d721c12c2a4d30ec55318fc43a4a52e045cb4cb [formerly cbda847929c2e5a1b56a31d00e05919700b9cfe5] [formerly b5cb693619995dd02367c739773449a7406adeae] [formerly b5cb693619995dd02367c739773449a7406adeae [formerly 0f8fc513bf9f5560d0080c5f500e79688ed5f7e4]] [formerly 0d721c12c2a4d30ec55318fc43a4a52e045cb4cb [formerly cbda847929c2e5a1b56a31d00e05919700b9cfe5] [formerly b5cb693619995dd02367c739773449a7406adeae] [formerly b5cb693619995dd02367c739773449a7406adeae [formerly 0f8fc513bf9f5560d0080c5f500e79688ed5f7e4]] [formerly a212c30bd795d25823e68f3e7b4c85476f87bd12 [formerly b5cb693619995dd02367c739773449a7406adeae [formerly 0f8fc513bf9f5560d0080c5f500e79688ed5f7e4] [formerly a212c30bd795d25823e68f3e7b4c85476f87bd12 [formerly dace09a228fa4bef6bddc1388f12d35adcbd7543]]]]] Former-commit-id: a212c30bd795d25823e68f3e7b4c85476f87bd12 Former-commit-id: 494cd75a22b6185a7433b8080ec1de1a9b2351b5 [formerly 430d088faeb427f4847df9f06fbabbda46d8a377] [formerly 06ba0dbf6cede4aac0cc99b27d33a76052813a27] [formerly d812631d09b5fa6e08b429aad34d9b996d0fe215 [formerly 8a4b80da2796beb7c54f486f50af54a82a51b808] [formerly 06ba0dbf6cede4aac0cc99b27d33a76052813a27 [formerly 02d614578201dcdcfd6d57e1a361454741a0c896]]] Former-commit-id: 6d227a560e1f965b0fce69b1417292515514877d [formerly 2b43017e06d19d174d794056f4c10668bd2a1f3c] [formerly 79d71e33d0b89c1200f581164ea7b37e4fde911f [formerly 5e4023b974f4b517e233503b18bb7a81be4ebda9]] Former-commit-id: 79d71e33d0b89c1200f581164ea7b37e4fde911f Former-commit-id: 08f26c03de862ab9b050a33bb2e259c9df2095c8 --- .../styleRules/gridReprojectionRules.xml | 41 + .../viz/grid/rsc/general/D2DGridResource.java | 40 +- .../viz/grid/util/ConformalityUtil.java | 9 +- .../viz/grid/util/ReprojectionUtil.java | 159 +++ .../viz/grid/xml/GridReprojectionRules.java | 85 ++ .../viz/warngen/gis/CoverageConstants.java | 3 +- .../viz/warngen/gis/PortionsUtil.java | 738 +++++----- .../base/python/MasterInterface.py | 30 +- .../base/warngen/VM_global_library.vm | 81 +- .../base/warngen/airportWeatherWarning.vm | 17 +- .../base/warngen/airportWeatherWarning.xml | 184 +-- .../base/warngen/arealFloodAdvisory.vm | 147 +- .../base/warngen/arealFloodAdvisory.xml | 149 +- .../warngen/arealFloodAdvisoryFollowup.vm | 95 +- .../warngen/arealFloodAdvisoryFollowup.xml | 143 +- .../base/warngen/arealFloodWarning.vm | 70 +- .../base/warngen/arealFloodWarning.xml | 168 +-- .../base/warngen/arealFloodWarningFollowup.vm | 105 +- .../warngen/arealFloodWarningFollowup.xml | 158 +-- .../base/warngen/burnScarFlashFloodWarning.vm | 27 +- .../warngen/burnScarFlashFloodWarning.xml | 139 +- .../burnScarFlashFloodWarningFollowup.vm | 67 +- .../burnScarFlashFloodWarningFollowup.xml | 134 +- .../base/warngen/burnScarInfo.vm | 1 + .../base/warngen/burnScarInfoBullet.xml | 6 +- .../common_static/base/warngen/config.vm | 59 + .../base/warngen/countyTypes.txt | 2 +- .../common_static/base/warngen/damInfo.vm | 11 +- .../common_static/base/warngen/dssEvents.vm | 28 + .../common_static/base/warngen/dssEvents.xml | 32 + .../common_static/base/warngen/dupCounties.vm | 9 +- .../base/warngen/extremeWindWarning.vm | 17 +- .../base/warngen/extremeWindWarning.xml | 174 +-- .../warngen/extremeWindWarningFollowup.vm | 48 +- .../warngen/extremeWindWarningFollowup.xml | 175 +-- .../common_static/base/warngen/fireWarning.vm | 2 + .../base/warngen/fireWarning.xml | 167 +-- .../base/warngen/flashFloodWarning.vm | 316 ++++- .../base/warngen/flashFloodWarning.xml | 210 +-- .../base/warngen/flashFloodWarningFollowup.vm | 148 +- .../warngen/flashFloodWarningFollowup.xml | 180 +-- .../base/warngen/forecasterName.vm | 6 +- .../base/warngen/geospatialConfig_COUNTY.xml | 202 +++ .../base/warngen/geospatialConfig_MARINE.xml | 171 +++ .../base/warngen/geospatialConfig_ZONE.xml | 207 +++ .../impactSevereThunderstormWarning.vm | 29 +- .../impactSevereThunderstormWarning.xml | 176 +-- .../warngen/impactSevereWeatherStatement.vm | 76 +- .../warngen/impactSevereWeatherStatement.xml | 196 +-- .../warngen/impactSpecialMarineWarning.vm | 499 +++++++ .../warngen/impactSpecialMarineWarning.xml | 207 +++ .../impactSpecialMarineWarningFollowup.vm | 1256 +++++++++++++++++ .../impactSpecialMarineWarningFollowup.xml | 254 ++++ .../base/warngen/impactStatements.vm | 6 + .../base/warngen/impactTornadoWarning.vm | 39 +- .../base/warngen/impactTornadoWarning.xml | 178 +-- .../base/warngen/marineWeatherStatement.vm | 45 +- .../base/warngen/marineWeatherStatement.xml | 163 +-- .../warngen/marineWeatherStatementAshfall.vm | 15 +- .../warngen/marineWeatherStatementAshfall.xml | 160 +-- .../common_static/base/warngen/mileMarkers.vm | 107 +- .../base/warngen/mileMarkers.xml | 28 +- .../warngen/nonConvectiveFlashFloodWarning.vm | 93 +- .../nonConvectiveFlashFloodWarning.xml | 137 +- .../nonConvectiveFlashFloodWarningFollowup.vm | 176 +-- ...nonConvectiveFlashFloodWarningFollowup.xml | 144 +- .../base/warngen/severeThunderstormWarning.vm | 26 +- .../warngen/severeThunderstormWarning.xml | 192 +-- .../base/warngen/severeWeatherStatement.vm | 82 +- .../base/warngen/severeWeatherStatement.xml | 200 +-- .../base/warngen/shortTermForecast.vm | 21 +- .../base/warngen/shortTermForecast.xml | 217 +-- .../warngen/significantWeatherAdvisory.vm | 88 +- .../warngen/significantWeatherAdvisory.xml | 217 +-- .../base/warngen/specialMarineWarning.vm | 60 +- .../base/warngen/specialMarineWarning.xml | 174 +-- .../warngen/specialMarineWarningFollowup.vm | 796 ++++------- .../warngen/specialMarineWarningFollowup.xml | 175 +-- .../base/warngen/specialWeatherStatement.vm | 65 +- .../base/warngen/specialWeatherStatement.xml | 205 +-- .../base/warngen/stormReports.vm | 2 +- .../base/warngen/stormReports.xml | 2 - .../base/warngen/tornadoWarning.vm | 44 +- .../base/warngen/tornadoWarning.xml | 175 +-- pythonPackages/qpid/bin/monitor_qpid_host.sh | 62 +- 85 files changed, 6027 insertions(+), 5720 deletions(-) create mode 100644 cave/com.raytheon.viz.grid/localization/styleRules/gridReprojectionRules.xml create mode 100644 cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ReprojectionUtil.java create mode 100644 cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/xml/GridReprojectionRules.java create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/config.vm create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.vm create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.xml create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_MARINE.xml create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_ZONE.xml create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.vm create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.xml create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm create mode 100644 edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml diff --git a/cave/com.raytheon.viz.grid/localization/styleRules/gridReprojectionRules.xml b/cave/com.raytheon.viz.grid/localization/styleRules/gridReprojectionRules.xml new file mode 100644 index 0000000000..b996a043eb --- /dev/null +++ b/cave/com.raytheon.viz.grid/localization/styleRules/gridReprojectionRules.xml @@ -0,0 +1,41 @@ + + + + + + \ No newline at end of file diff --git a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/rsc/general/D2DGridResource.java b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/rsc/general/D2DGridResource.java index 53b2979421..53d6333731 100644 --- a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/rsc/general/D2DGridResource.java +++ b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/rsc/general/D2DGridResource.java @@ -53,6 +53,7 @@ import com.raytheon.uf.viz.core.datastructure.DataCubeContainer; import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.rsc.AbstractNameGenerator; import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType; import com.raytheon.uf.viz.core.rsc.LoadProperties; import com.raytheon.uf.viz.core.rsc.capabilities.DisplayTypeCapability; import com.raytheon.uf.viz.core.rsc.capabilities.ImagingCapability; @@ -60,7 +61,7 @@ import com.raytheon.viz.grid.rsc.GridNameGenerator; import com.raytheon.viz.grid.rsc.GridNameGenerator.IGridNameResource; import com.raytheon.viz.grid.rsc.GridNameGenerator.LegendParameters; import com.raytheon.viz.grid.rsc.GridResourceData; -import com.raytheon.viz.grid.util.ConformalityUtil; +import com.raytheon.viz.grid.util.ReprojectionUtil; import com.raytheon.viz.grid.xml.FieldDisplayTypesFactory; import com.vividsolutions.jts.geom.Coordinate; @@ -81,6 +82,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Jul 15, 2013 2107 bsteffen Fix sampling of grid vector arrows. * Aug 27, 2013 2287 randerso Removed 180 degree adjustment required by error * in Maputil.rotation + * Sep 24, 2013 DR 15972 D. Friedman Make reprojection of grids configurable. * * * @@ -94,6 +96,8 @@ public class D2DGridResource extends GridResource implements private boolean reprojectedData = false; + private Boolean lastInterpolationState = null; + public D2DGridResource(GridResourceData resourceData, LoadProperties loadProperties) { super(resourceData, loadProperties); @@ -103,7 +107,10 @@ public class D2DGridResource extends GridResource implements for (GridRecord record : resourceData.getRecords()) { addDataObject(record); } - + if (this.hasCapability(ImagingCapability.class)) { + lastInterpolationState = this.getCapability(ImagingCapability.class) + .isInterpolationState(); + } } @Override @@ -143,17 +150,15 @@ public class D2DGridResource extends GridResource implements return null; } } - // For world wide lat lon grids we reproject, this is done to match A1, - // but it also makes the wind barbs look more evenly spaced near the - // pole. + // For some grids, we may reproject (e.g., world-wide lat/lon grids), + // this is done to match A1, but it also makes the wind barbs look + // more evenly spaced near the pole. GridCoverage location = gridRecord.getLocation(); GeneralGridData data = getData(dataRecs, location.getGridGeometry(), dataUnit); - if (location != null && location.getSpacingUnit().equals("degree")) { - if (!ConformalityUtil.testConformality(location.getGridGeometry(), - descriptor.getGridGeometry())) { - data = reprojectData(data); - } + if (ReprojectionUtil.shouldReproject(gridRecord, + getDisplayType(), descriptor.getGridGeometry())) { + data = reprojectData(data); } // Wind Direction(and possibly others) can be set so that we rotate the // direction to be relative to the north pole instead of grid relative. @@ -318,4 +323,19 @@ public class D2DGridResource extends GridResource implements super.project(crs); } + @Override + protected void resourceDataChanged(ChangeType type, Object updateObject) { + super.resourceDataChanged(type, updateObject); + if (type == ChangeType.CAPABILITY) { + if (updateObject instanceof ImagingCapability && reprojectedData) { + ImagingCapability capability = (ImagingCapability) updateObject; + if (lastInterpolationState == null + || capability.isInterpolationState() != lastInterpolationState) { + lastInterpolationState = capability.isInterpolationState(); + clearRequestedData(); + } + } + } + } + } diff --git a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ConformalityUtil.java b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ConformalityUtil.java index 04bb98c6e4..f81809bb7e 100644 --- a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ConformalityUtil.java +++ b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ConformalityUtil.java @@ -35,7 +35,8 @@ import org.opengis.referencing.operation.TransformException; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * 06/19/2012 14988 D. Friedman Initial revision - * + * 09/24/2013 DR 15972 D. Friedman Do not require contiguous mapping. + * * */ public class ConformalityUtil { @@ -96,11 +97,17 @@ public class ConformalityUtil { if (! evaluateNonContig(evaluatedDomain)) { System.out.format("%s -> %s : not contiguous?\n", sourceGG, destGG); return false; + /* + * This test is not necessary for AWIPS II because it can cope + * with non-contiguous mappings. + */ + /* } else if (maxRatio/minRatio > maxRatioRatio || (minRatio > 0 && maxRatio/minRatio > maxRatioRatio) || // ? (minRatio < 0 && minRatio/maxRatio > maxRatioRatio)) { System.out.format("%s -> %s : not conformal enough somehow\n", sourceGG, destGG); return false; + */ } else { System.out.format("%s -> %s : conformal enough (%f, %f)\n", sourceGG, destGG, rr, maxRatio/minRatio); diff --git a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ReprojectionUtil.java b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ReprojectionUtil.java new file mode 100644 index 0000000000..6830ec8725 --- /dev/null +++ b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/util/ReprojectionUtil.java @@ -0,0 +1,159 @@ +package com.raytheon.viz.grid.util; + +import java.util.regex.Pattern; + +import org.geotools.coverage.grid.GeneralGridGeometry; +import org.geotools.referencing.CRS; +import org.geotools.referencing.operation.projection.MapProjection; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.raytheon.uf.common.dataplugin.grid.GridRecord; +import com.raytheon.uf.common.gridcoverage.GridCoverage; +import com.raytheon.uf.common.localization.AutoUpdatingLocalizationFile; +import com.raytheon.uf.common.localization.AutoUpdatingLocalizationFile.AutoUpdatingFileChangedListener; +import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType; +import com.raytheon.uf.common.localization.exception.LocalizationException; +import com.raytheon.uf.common.serialization.JAXBManager; +import com.raytheon.uf.common.status.IUFStatusHandler; +import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.viz.grid.xml.GridReprojectionRules; +import com.raytheon.viz.grid.xml.GridReprojectionRules.Reproject; +import com.raytheon.viz.grid.xml.GridReprojectionRules.Rule; + +/** + * Determines if a grid should be reprojected based display properties and + * a configuration file. + * + *
+ *
+ * SOFTWARE HISTORY
+ * Date         Ticket#    Engineer         Description
+ * ------------ ---------- ---------------- --------------------------
+ * Sep 23, 2013 DR 15972   D. Friedman      Initial creation
+ *
+ * 
+ * + */ +public class ReprojectionUtil { + private static final String RULES_PATH = "styleRules/gridReprojectionRules.xml"; + + private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(ReprojectionUtil.class); + + private static ReprojectionUtil instance; + + static ReprojectionUtil getInstance() { + if (instance == null) { + synchronized (ReprojectionUtil.class) { + if (instance == null) + instance = new ReprojectionUtil(); + } + } + return instance; + } + + GridReprojectionRules rules; + AutoUpdatingLocalizationFile file; + boolean fileChanged = false; + + public static boolean shouldReproject(GridRecord record, DisplayType displayType, GeneralGridGeometry dstGridGeometry) { + GridReprojectionRules rules = getInstance().getRules(); + if (rules != null) { + for (Rule rule : rules.getRules()) { + if (matches(rule, record, displayType, dstGridGeometry)) { + Reproject reproject = rule.getReproject(); + if (reproject == Reproject.ALWAYS) { + return true; + } else if (reproject == Reproject.NEVER) { + return false; + } else if (reproject == Reproject.TEST || reproject == null) { + return !ConformalityUtil.testConformality(record + .getLocation().getGridGeometry(), + dstGridGeometry); + } else { + throw new RuntimeException( + String.format("Unknown reprojection behavior " + + reproject)); + } + } + } + } + return false; + } + + private static boolean matches(Rule rule, GridRecord record, DisplayType displayType, + GeneralGridGeometry dstGridGeometry) { + return matches(rule.getModelName(), record.getDatasetId()) && + matches(rule.getSrcProjection(), getProjectionName(record.getLocation())) && + matches(rule.getDstProjection(), getProjectionName(dstGridGeometry)) && + matches(rule.getDisplayType(), displayType.toString()); + } + + private static boolean matches(String pattern, String value) { + if (pattern == null) + return true; + return Pattern.matches(pattern, value != null ? value : ""); + } + + private static String getProjectionName(GridCoverage coverage) { + return coverage != null ? getProjectionName(coverage.getCrs()) : null; + } + + private static String getProjectionName(GeneralGridGeometry gridGeometry) { + return gridGeometry != null ? getProjectionName(gridGeometry.getCoordinateReferenceSystem()) : null; + } + + private static String getProjectionName(CoordinateReferenceSystem crs) { + MapProjection projection = CRS.getMapProjection(crs); + return projection != null ? projection.getName() : null; + } + + public GridReprojectionRules getRules() { + try { + synchronized(this) { + if (checkFileChanged()) { + GridReprojectionRules newRules = file.loadObject( + new JAXBManager(GridReprojectionRules.class), + GridReprojectionRules.class); + if (newRules == null) + throw new LocalizationException("No " + RULES_PATH + "found"); + rules = newRules; + } + } + } catch (Exception e) { + statusHandler.handle( + Priority.PROBLEM, + "Error occurred loading grid reproject rules", + e); + } + return rules; + } + + private synchronized boolean checkFileChanged() throws LocalizationException { + if (file == null) { + file = new AutoUpdatingLocalizationFile(RULES_PATH, LocalizationType.CAVE_STATIC); + file.addListener(new AutoUpdatingFileChangedListener() { + @Override + public void fileChanged(AutoUpdatingLocalizationFile file) { + synchronized (ReprojectionUtil.this) { + fileChanged = true; + }; + } + }); + return true; + } else { + /* + * Only return true once per noticed file changed (and not after the + * file has been read.) This is done to prevent a flood of AlertViz + * errors if there is something wrong with the file. + */ + if (fileChanged) { + fileChanged = false; + return true; + } else { + return false; + } + } + } +} diff --git a/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/xml/GridReprojectionRules.java b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/xml/GridReprojectionRules.java new file mode 100644 index 0000000000..575397e7d7 --- /dev/null +++ b/cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/xml/GridReprojectionRules.java @@ -0,0 +1,85 @@ +package com.raytheon.viz.grid.xml; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Container for a list of rules that describe how gridded data should be + * re-projected on various map projections. + * + *
+ *
+ * SOFTWARE HISTORY
+ * Date         Ticket#    Engineer         Description
+ * ------------ ---------- ---------------- --------------------------
+ * Sep 23, 2013 DR 15972   D. Friedman      Initial creation
+ *
+ * 
+ * + */ +@XmlRootElement() +@XmlAccessorType(XmlAccessType.NONE) +public class GridReprojectionRules { + public static enum Reproject { + ALWAYS, NEVER, TEST + } + + @XmlAccessorType(XmlAccessType.NONE) + public static class Rule { + @XmlAttribute + private String modelName; + @XmlAttribute + private String displayType; + @XmlAttribute + private String srcProjection; + @XmlAttribute + private String dstProjection; + @XmlAttribute + private Reproject reproject; + + public String getModelName() { + return modelName; + } + public void setModelName(String modelName) { + this.modelName = modelName; + } + public String getDisplayType() { + return displayType; + } + public void setDisplayType(String displayType) { + this.displayType = displayType; + } + public String getSrcProjection() { + return srcProjection; + } + public void setSrcProjection(String srcProjection) { + this.srcProjection = srcProjection; + } + public String getDstProjection() { + return dstProjection; + } + public void setDstProjection(String dstProjection) { + this.dstProjection = dstProjection; + } + public Reproject getReproject() { + return reproject; + } + public void setReproject(Reproject reproject) { + this.reproject = reproject; + } + } + + @XmlElement(name = "rule") + private List rules = new ArrayList(0); + + public List getRules() { + return rules; + } + +} diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/CoverageConstants.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/CoverageConstants.java index f4bdae56b1..64789b2751 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/CoverageConstants.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/CoverageConstants.java @@ -29,6 +29,7 @@ package com.raytheon.viz.warngen.gis; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Aug 5, 2013 2177 jsanchez Initial creation + * Sep 22, 2013 2177 jsanchez Updated EW_MASK. * * * @@ -156,7 +157,7 @@ public class CoverageConstants { EW_MASK[i] = XEAST | EAST; } else if (i < 106) { EW_MASK[i] = WEST; - } else if (i > 145) { + } else if (i > 148) { EW_MASK[i] = EAST; } else if (i < 118) { EW_MASK[i] = CENTRAL_EW | WEST; diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PortionsUtil.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PortionsUtil.java index a5188b95d6..c7f294da93 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PortionsUtil.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PortionsUtil.java @@ -38,6 +38,7 @@ import com.vividsolutions.jts.geom.Geometry; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Aug 5, 2013 2177 jsanchez Initial creation + * Sep 22, 2013 2177 jsanchez Updated logic. Used GisUtil for very small portions. * * * @@ -47,425 +48,412 @@ import com.vividsolutions.jts.geom.Geometry; public class PortionsUtil { - private GridUtil gridUtil; + private GridUtil gridUtil; - public PortionsUtil(WarngenLayer layer) throws Exception { - gridUtil = new GridUtil(layer, layer.getLocalGridGeometry(), - layer.getlocalToLatLon()); - } + public PortionsUtil(WarngenLayer layer) throws Exception { + gridUtil = new GridUtil(layer, layer.getLocalGridGeometry(), + layer.getlocalToLatLon()); + } - /** - * Determines the the appropriate portion description for the warnedArea - * intersecting the countyOrZone. - * - * @param entityID - * @param countyOrZone - * @param warnedArea - * @param useExtreme - * @return - * @throws Exception - */ - public EnumSet getPortions(String entityID, - Geometry countyOrZone, Geometry warnedArea, boolean useExtreme) - throws Exception { - countyOrZone.getUserData(); - EntityData entityData = gridUtil.calculateGrids(countyOrZone, - warnedArea); - EnumSet portions = getAreaDesc(entityData.getMeanMask(), - entityData.getCoverageMask(), entityData.getOctants(), - useExtreme); - return suppressPortions(entityID, portions); - } + /** + * Determines the the appropriate portion description for the warnedArea + * intersecting the countyOrZone. + * + * @param entityID + * @param countyOrZone + * @param warnedArea + * @param useExtreme + * @return + * @throws Exception + */ + public EnumSet getPortions(String entityID, + Geometry countyOrZone, Geometry warnedArea, boolean useExtreme) + throws Exception { + countyOrZone.getUserData(); + EntityData entityData = gridUtil.calculateGrids(countyOrZone, + warnedArea); + EnumSet portions = null; + if (entityData.getMeanMask() == 0 || entityData.getCoverageMask() == 0 + || entityData.getMeanMask() == entityData.getCoverageMask()) { + // This takes into account the warned areas that are very small + // the convex hull of the warned area is used for case the + // warnedArea is a geometry collection. + portions = GisUtil.calculateLocationPortion(countyOrZone, + warnedArea.convexHull(), useExtreme); + } else { + portions = getAreaDesc(entityData.getMeanMask(), + entityData.getCoverageMask(), entityData.getOctants(), + useExtreme); + } + return suppressPortions(entityID, portions); + } - /** - * Looks up if the designated entity ID has an suppressed directions. For - * example, a county or zone may not need to include the north and sound - * direction description if it was included in the area.suppress file. - * - * @param entityID - * @param portions - * @return - */ - private EnumSet suppressPortions(String entityID, - EnumSet portions) { - Map> suppressedCounties = SuppressMap - .getInstance().getAreas(); - if (entityID != null && suppressedCounties != null - && !suppressedCounties.isEmpty()) { - List suppressedDirections = suppressedCounties - .get(entityID.toUpperCase()); - if (suppressedDirections != null && !suppressedDirections.isEmpty()) { - portions.removeAll(suppressedDirections); - } - } + /** + * Looks up if the designated entity ID has an suppressed directions. For + * example, a county or zone may not need to include the north and sound + * direction description if it was included in the area.suppress file. + * + * @param entityID + * @param portions + * @return + */ + private EnumSet suppressPortions(String entityID, + EnumSet portions) { + Map> suppressedCounties = SuppressMap + .getInstance().getAreas(); + if (entityID != null && suppressedCounties != null + && !suppressedCounties.isEmpty()) { + List suppressedDirections = suppressedCounties + .get(entityID.toUpperCase()); + if (suppressedDirections != null && !suppressedDirections.isEmpty()) { + portions.removeAll(suppressedDirections); + } + } - return portions; - } + return portions; + } - /** - * Port from A1 code of GeoEntityLookupTable::getAreaDesc. - * - * @param meanMask - * @param areaMask - * @param octants - * @param exYes - */ - private static EnumSet getAreaDesc(int meanMask, int areaMask, - int octants, boolean exYes) { - EnumSet portions = EnumSet.noneOf(Direction.class); + /** + * Port from A1 code of GeoEntityLookupTable::getAreaDesc. + * + * @param meanMask + * @param areaMask + * @param octants + * @param exYes + */ + private static EnumSet getAreaDesc(int meanMask, int areaMask, + int octants, boolean exYes) { + EnumSet portions = EnumSet.noneOf(Direction.class); - // Test for case where we cannot do portions - if (meanMask == 0 || areaMask == 0) { - return portions; - } + // Test for case where we cannot do portions + if (meanMask == 0 || areaMask == 0) { + return portions; + } - // The next block of code is the original port of A1 code but prevented - // producing the correct result: - // Test for case where area is completely within one subsection. - // if (meanMask == areaMask) { - // return getPointDesc(meanMask, exYes); - // } + // The next block of code is the original port of A1 code but prevented + // producing the correct result: + // Test for case where area is completely within one subsection. + // if (meanMask == areaMask) { + // return getPointDesc(meanMask, exYes); + // } - // Test for central by not being near adjacent borders. - if (octants == 0 - || ((octants & CoverageConstants.EXTREME_YES) == 0) - && (meanMask & CoverageConstants.CENTER) == CoverageConstants.CENTER) { - portions.add(Direction.CENTRAL); - return portions; - } + // Test for central by not being near adjacent borders. + // Another possible case of a stripe across the middle. + if (octants == 0 + || ((octants & CoverageConstants.EXTREME_YES) == 0) + && (meanMask & CoverageConstants.CENTER) == CoverageConstants.CENTER) { + portions.add(Direction.CENTRAL); + return portions; + } - if ((octants & 0xFFFF) == 0xFFFF) { - return portions; - } + if ((octants & 0xFFFF) == 0xFFFF) { + return portions; + } - // Identify quadrants in use, q is typical, qq is diagonal. - int xoctant = octants >> 8; - int xxoctant = octants >> 16; - int nn, ss, ee, ww, ne, nw, se, sw; - nn = ss = ee = ww = ne = nw = se = sw = 0; - int omerge = xxoctant | xoctant | octants; - if ((omerge & (CoverageConstants.NNE | CoverageConstants.ENE)) > 0) { - ne = 1; - } - if ((omerge & (CoverageConstants.SSE | CoverageConstants.ESE)) > 0) { - se = 1; - } - if ((omerge & (CoverageConstants.NNW | CoverageConstants.WNW)) > 0) { - nw = 1; - } - if ((omerge & (CoverageConstants.SSW | CoverageConstants.WSW)) > 0) { - sw = 1; - } - if ((omerge & (CoverageConstants.NNE | CoverageConstants.NNW)) > 0) { - nn = 1; - } - if ((omerge & (CoverageConstants.SSE | CoverageConstants.SSW)) > 0) { - ss = 1; - } - if ((omerge & (CoverageConstants.WNW | CoverageConstants.WSW)) > 0) { - ww = 1; - } - if ((omerge & (CoverageConstants.ENE | CoverageConstants.ESE)) > 0) { - ee = 1; - } - if ((areaMask & CoverageConstants.NORTH_SOUTH) == 0) { - nn = ss = ne = nw = se = sw = 0; - } - if ((areaMask & CoverageConstants.EAST_WEST) == 0) { - ee = ww = ne = nw = se = sw = 0; - } - int q = ne + nw + se + sw; - int qq = nn + ss + ee + ww; + // Identify quadrants in use, q is typical, qq is diagonal. + int xoctant = octants >> 8; + int xxoctant = octants >> 16; + int nn, ss, ee, ww, ne, nw, se, sw; + nn = ss = ee = ww = ne = nw = se = sw = 0; + int omerge = xxoctant | xoctant | octants; + if ((omerge & (CoverageConstants.NNE | CoverageConstants.ENE)) != 0) { + ne = 1; + } + if ((omerge & (CoverageConstants.SSE | CoverageConstants.ESE)) != 0) { + se = 1; + } + if ((omerge & (CoverageConstants.NNW | CoverageConstants.WNW)) != 0) { + nw = 1; + } + if ((omerge & (CoverageConstants.SSW | CoverageConstants.WSW)) != 0) { + sw = 1; + } + if ((omerge & (CoverageConstants.NNE | CoverageConstants.NNW)) != 0) { + nn = 1; + } + if ((omerge & (CoverageConstants.SSE | CoverageConstants.SSW)) != 0) { + ss = 1; + } + if ((omerge & (CoverageConstants.WNW | CoverageConstants.WSW)) != 0) { + ww = 1; + } + if ((omerge & (CoverageConstants.ENE | CoverageConstants.ESE)) != 0) { + ee = 1; + } + if ((areaMask & CoverageConstants.NORTH_SOUTH) == 0) { + nn = ss = ne = nw = se = sw = 0; + } + if ((areaMask & CoverageConstants.EAST_WEST) == 0) { + ee = ww = ne = nw = se = sw = 0; + } + int q = ne + nw + se + sw; + int qq = nn + ss + ee + ww; - // Identify extremes in use. - int nnx, ssx, eex, wwx; - nnx = ssx = eex = wwx = 0; - if ((areaMask & CoverageConstants.XNORTH) > 0) { - nnx = 1; - } - if ((areaMask & CoverageConstants.XSOUTH) > 0) { - ssx = 1; - } - if ((areaMask & CoverageConstants.XWEST) > 0) { - wwx = 1; - } - if ((areaMask & CoverageConstants.XEAST) > 0) { - eex = 1; - } - int xxx = nnx + ssx + eex + wwx; + // Identify extremes in use. + int nnx, ssx, eex, wwx; + nnx = ssx = eex = wwx = 0; + if ((areaMask & CoverageConstants.XNORTH) != 0) { + nnx = 1; + } + if ((areaMask & CoverageConstants.XSOUTH) != 0) { + ssx = 1; + } + if ((areaMask & CoverageConstants.XWEST) != 0) { + wwx = 1; + } + if ((areaMask & CoverageConstants.XEAST) != 0) { + eex = 1; + } + int xxx = nnx + ssx + eex + wwx; - // Modify masks based on whether we can use extreme. - if ((octants & CoverageConstants.EXTREME_NO) > 0 - && (areaMask & CoverageConstants.EXTREME) > 0) { - areaMask &= CoverageConstants.NOT_EXTREME; - meanMask &= CoverageConstants.NOT_EXTREME; - } + // Modify masks based on whether we can use extreme. + if ((octants & CoverageConstants.EXTREME_NO) != 0 + && (areaMask & CoverageConstants.EXTREME) != 0) { + areaMask &= CoverageConstants.NOT_EXTREME; + meanMask &= CoverageConstants.NOT_EXTREME; + } - // Possible case of a stripe across the middle - if (q == 0) { - ;// Only one direction encoded - } else if (q == 2 && nw == se || q == 2 && ne == sw || qq == 2 - && nn == ss || qq == 2 && ee == ww) { - if ((meanMask & CoverageConstants.CENTRAL) == CoverageConstants.CENTRAL - || nnx == ssx && wwx == eex) { - portions.add(Direction.CENTRAL); - return portions; - } - return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); - } + // Possible case of a stripe across the middle + if (q == 0) { + ;// Only one direction encoded + } else if (q == 2 && nw == se || q == 2 && ne == sw || qq == 2 + && nn == ss || qq == 2 && ee == ww) { + if ((meanMask & CoverageConstants.CENTRAL) == CoverageConstants.CENTRAL + || nnx == ssx && wwx == eex) { + portions.add(Direction.CENTRAL); + return portions; + } + return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); + } - // Modify masks based on whether we can use central. - if (xxx > 2 || nnx != ssx && wwx != eex) { - areaMask &= CoverageConstants.NOT_CENTRAL; - meanMask &= CoverageConstants.NOT_CENTRAL; - } + // Modify masks based on whether we can use central. + if (xxx > 2 || nnx != ssx && wwx != eex) { + areaMask &= CoverageConstants.NOT_CENTRAL; + meanMask &= CoverageConstants.NOT_CENTRAL; + } - // Another possible case of a stripe across the middle. - if (q == 4 && (meanMask & CoverageConstants.CENTER) > 0) { - portions.add(Direction.CENTRAL); - return portions; - } + // All quadrants in use. + if (q == 4 && qq == 4) { + return EnumSet.noneOf(Direction.class); + } - // All quadrants in use. - if (q == 4 && qq == 4) { - return EnumSet.noneOf(Direction.class); - } + // Only one typical quadrant in use. + if (q == 1) { + return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); + } - // Only one typical quadrant in use. - if (q == 1) { - // if (ne == 1) { - // portions.add(Direction.NORTH); - // portions.add(Direction.EAST); - // } else if (nw == 1) { - // portions.add(Direction.NORTH); - // portions.add(Direction.WEST); - // } else if (se == 1) { - // portions.add(Direction.SOUTH); - // portions.add(Direction.EAST); - // } else if (sw == 1) { - // portions.add(Direction.SOUTH); - // portions.add(Direction.WEST); - // } - // return portions; - return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); - } + // Further modify masks based on whether we can use central. + if (xxx >= 2) { + areaMask &= CoverageConstants.NOT_CENTRAL; + meanMask &= CoverageConstants.NOT_CENTRAL; + } - // Further modify masks based on whether we can use central. - if (xxx >= 2) { - areaMask &= CoverageConstants.NOT_CENTRAL; - meanMask &= CoverageConstants.NOT_CENTRAL; - } + // No more than two quadrants of any kind in use, or all quadrants. + if (q < 3 && qq < 3) { + if (nnx != ssx && wwx != eex + || (meanMask & CoverageConstants.CENTRAL) != 0) { + return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); - // No more than two quadrants of any kind in use, or all quadrants. - if (q < 3 && qq < 3) { - if (nnx != ssx && wwx != eex - || (meanMask & CoverageConstants.CENTRAL) > 0) { - return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); + } else { + return getPointDesc2(areaMask, exYes, nn, ss, ee, ww); + } + } - } else { - return getPointDesc2(areaMask, exYes, nn, ss, ee, ww); - } - } + // Three typical quadrants in use. + if (q == 3 && qq != 3) { - // Three typical quadrants in use. - if (q == 3 && qq != 3) { + if (ne == 0) { + // The next line is the original port of A1 code but prevented + // producing the correct result: + // if (ne == 0 && (xxoctant & (SSW | WSW)) != 0) { + portions.add(Direction.SOUTH); + portions.add(Direction.WEST); - if (ne == 0) { - // The next line is the original port of A1 code but prevented - // producing the correct result: - // if (ne == 0 && (xxoctant & (SSW | WSW)) > 0) { - portions.add(Direction.SOUTH); - portions.add(Direction.WEST); + } else if (se == 0) { + // The next line is the original port of A1 code but prevented + // producing the correct result: + // } else if (se == 0 && (xxoctant & (NNW | WNW)) != 0) { + portions.add(Direction.NORTH); + portions.add(Direction.WEST); - } else if (se == 0) { - // The next line is the original port of A1 code but prevented - // producing the correct result: - // } else if (se == 0 && (xxoctant & (NNW | WNW)) > 0) { - portions.add(Direction.NORTH); - portions.add(Direction.WEST); + } else if (nw == 0) { + // The next line is the original port of A1 code but prevented + // producing the correct result: + // } else if (nw == 0 && (xxoctant & (SSE | ESE)) != 0) { + portions.add(Direction.SOUTH); + portions.add(Direction.EAST); - } else if (nw == 0) { - // The next line is the original port of A1 code but prevented - // producing the correct result: - // } else if (nw == 0 && (xxoctant & (SSE | ESE)) > 0) { - portions.add(Direction.SOUTH); - portions.add(Direction.EAST); + } else if (sw == 0) { + // The next line is the original port of A1 code but prevented + // producing the correct result: + // } else if (sw == 0 && (xxoctant & (NNE | ENE)) != 0) { + portions.add(Direction.NORTH); + portions.add(Direction.EAST); + } + // The next line is the original port of A1 code but prevented + // producing the correct result: + // return getPointDesc(meanMask, exYes); + } - } else if (sw == 0) { - // The next line is the original port of A1 code but prevented - // producing the correct result: - // } else if (sw == 0 && (xxoctant & (NNE | ENE)) > 0) { - portions.add(Direction.NORTH); - portions.add(Direction.EAST); - } - // The next line is the original port of A1 code but prevented - // producing the correct result: - // return getPointDesc(meanMask, exYes); - } + // Three diagonal quadrants in use. + if (qq == 3 && portions.isEmpty()) { + if (nn == 0) { + portions.add(Direction.SOUTH); + } else if (ss == 0) { + portions.add(Direction.NORTH); + } else if (ww == 0) { + portions.add(Direction.EAST); + } else if (ee == 0) { + portions.add(Direction.WEST); + } + } - // Three diagonal quadrants in use. - if (qq == 3 && portions.isEmpty()) { - if (nn == 0) { - portions.add(Direction.SOUTH); - } else if (ss == 0) { - portions.add(Direction.NORTH); - } else if (ww == 0) { - portions.add(Direction.EAST); - } else if (ee == 0) { - portions.add(Direction.WEST); - } - } + // add extreme for three quadrant case. + if (!portions.isEmpty()) { + if (exYes && ((areaMask & CoverageConstants.EXTREME)) != 0) { + portions.add(Direction.EXTREME); + } + return portions; + } - // add extreme for three quadrant case. - if (!portions.isEmpty()) { - if (exYes && ((areaMask & CoverageConstants.EXTREME)) > 0) { - portions.add(Direction.EXTREME); - } - return portions; - } + // All of either type of quadrant in use. + if (q == 4 || qq == 4) { + return EnumSet.noneOf(Direction.class); + } - // All of either type of quadrant in use. - if (q == 4 || qq == 4) { - return EnumSet.noneOf(Direction.class); - } + // Case of a pure simple direction. + nn = areaMask & CoverageConstants.NORTHERN; + ss = areaMask & CoverageConstants.SOUTHERN; + ee = areaMask & CoverageConstants.EASTERN; + ww = areaMask & CoverageConstants.WESTERN; + if (ss != 0 && nn != 0 || q == 0) { + if (ee == 0 && ww != 0) { + portions.add(Direction.WEST); + } + if (ww == 0 && ee != 0) { + portions.add(Direction.EAST); + } + } else if (ee != 0 && ww != 0 || q == 0) { + if (nn == 0 && ss != 0) { + portions.add(Direction.SOUTH); + } + if (ss == 0 && nn != 0) { + portions.add(Direction.NORTH); + } + } - // Case of a pure simple direction. - nn = areaMask & CoverageConstants.NORTHERN; - ss = areaMask & CoverageConstants.SOUTHERN; - ee = areaMask & CoverageConstants.EASTERN; - ww = areaMask & CoverageConstants.WESTERN; - if (ss > 0 && nn > 0 || q == 0) { - if (ee == 0 && ww > 0) { - portions.add(Direction.WEST); - } - if (ww == 0 && ee > 0) { - portions.add(Direction.EAST); - } - } else if (ee > 0 && ww > 0 || q == 0) { - if (nn == 0 && ss > 0) { - portions.add(Direction.SOUTH); - } - if (ss == 0 && nn > 0) { - portions.add(Direction.NORTH); - } - } + // add extreme for simple direction case. + if (!portions.isEmpty()) { + if (exYes && ((areaMask & CoverageConstants.EXTREME)) != 0) { + portions.add(Direction.EXTREME); + } + return portions; + } - // add extreme for simple direction case. - if (!portions.isEmpty()) { - if (exYes && ((areaMask & CoverageConstants.EXTREME)) > 0) { - portions.add(Direction.EXTREME); - } - return portions; - } + // Catch with the point descriptor one last time + return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); + } - // Catch with the point descriptor one last time - return getPointDesc2(meanMask, exYes, nn, ss, ee, ww); - } + /** + * Port from A1 code of GeoEntityLookupTable::getPointDesc. + * + * @param mask + * @param exYes + * @return + */ + private static EnumSet getPointDesc(int mask, boolean exYes) { + EnumSet portions = EnumSet.noneOf(Direction.class); - /** - * Port from A1 code of GeoEntityLookupTable::getPointDesc. - * - * @param mask - * @param exYes - * @return - */ - private static EnumSet getPointDesc(int mask, boolean exYes) { - EnumSet portions = EnumSet.noneOf(Direction.class); + int cc = mask & CoverageConstants.CENTRAL; + if (cc == CoverageConstants.CENTRAL) { + portions.add(Direction.CENTRAL); + return portions; + } - if (mask == 0) { - return portions; - } + if ((mask & CoverageConstants.NORTH_SOUTH) == 0) { + ; + } else if ((mask & CoverageConstants.SOUTHERN) == (mask & CoverageConstants.NORTH_SOUTH)) { + portions.add(Direction.SOUTH); + } else if ((mask & CoverageConstants.NORTHERN) == (mask & CoverageConstants.NORTH_SOUTH)) { + portions.add(Direction.NORTH); + } - int cc = mask & CoverageConstants.CENTRAL; - if (cc == CoverageConstants.CENTRAL) { - portions.add(Direction.CENTRAL); - return portions; - } + if ((mask & CoverageConstants.EAST_WEST) == 0) { + ; + } else if ((mask & CoverageConstants.WESTERN) == (mask & CoverageConstants.EAST_WEST)) { + portions.add(Direction.WEST); + } else if ((mask & CoverageConstants.EASTERN) == (mask & CoverageConstants.EAST_WEST)) { + portions.add(Direction.EAST); + } - if ((mask & CoverageConstants.NORTH_SOUTH) == 0) { - ; - } else if ((mask & CoverageConstants.SOUTHERN) == (mask & CoverageConstants.NORTH_SOUTH)) { - portions.add(Direction.SOUTH); - } else if ((mask & CoverageConstants.NORTHERN) == (mask & CoverageConstants.NORTH_SOUTH)) { - portions.add(Direction.NORTH); - } + if (portions.isEmpty()) { + return portions; + } - if ((mask & CoverageConstants.EAST_WEST) == 0) { - ; - } else if ((mask & CoverageConstants.WESTERN) == (mask & CoverageConstants.EAST_WEST)) { - portions.add(Direction.WEST); - } else if ((mask & CoverageConstants.EASTERN) == (mask & CoverageConstants.EAST_WEST)) { - portions.add(Direction.EAST); - } + if (cc != 0) { + portions.add(Direction.CENTRAL); + } - if (portions.isEmpty()) { - return portions; - } + if (exYes && ((int) (mask & CoverageConstants.EXTREME) != 0)) { + portions.add(Direction.EXTREME); + } - if (cc != 0) { - portions.add(Direction.CENTRAL); - } + return portions; + } - if (exYes && ((int) (mask & CoverageConstants.EXTREME) > 0)) { - portions.add(Direction.EXTREME); - } + /** + * This method is not a direct port from A1. The original getPointDesc did + * not produce the expected results. This method is a modified version of + * getPointDesct that uses the calculated qq values instead of just the + * meanMask. + * + * @param mask + * @param exYes + * @return + */ + private static EnumSet getPointDesc2(int mask, boolean exYes, + int nn, int ss, int ee, int ww) { + EnumSet portions = EnumSet.noneOf(Direction.class); - return portions; - } + if (mask == 0) { + return portions; + } - /** - * This method is not a direct port from A1. The original getPointDesc did - * not produce the expected results. This method is a modified version of - * getPointDesct that uses the calculated qq values instead of just the - * meanMask. - * - * @param mask - * @param exYes - * @return - */ - private static EnumSet getPointDesc2(int mask, boolean exYes, - int nn, int ss, int ee, int ww) { - EnumSet portions = EnumSet.noneOf(Direction.class); + int counter = 0; + if (nn != 0 && ss != 0) { + ; + } else if (ss != 0) { + portions.add(Direction.SOUTH); + counter++; + } else if (nn != 0) { + portions.add(Direction.NORTH); + counter++; + } - if (mask == 0) { - return portions; - } + if (ee != 0 && ww != 0) { + ; + } else if (ww != 0) { + portions.add(Direction.WEST); + counter++; + } else if (ee != 0) { + portions.add(Direction.EAST); + counter++; + } - int counter = 0; - if (nn > 0 && ss > 0) { - ; - } else if (ss > 0) { - portions.add(Direction.SOUTH); - counter++; - } else if (nn > 0) { - portions.add(Direction.NORTH); - counter++; - } + if (portions.isEmpty()) { + return portions; + } - if (ee > 0 && ww > 0) { - ; - } else if (ww > 0) { - portions.add(Direction.WEST); - counter++; - } else if (ee > 0) { - portions.add(Direction.EAST); - counter++; - } + int cc = mask & CoverageConstants.CENTRAL; + boolean useCentral = counter < 2; + if (useCentral && cc != 0) { + portions.add(Direction.CENTRAL); + } - if (portions.isEmpty()) { - return portions; - } + if (exYes && ((int) (mask & CoverageConstants.EXTREME) != 0)) { + portions.add(Direction.EXTREME); + } - int cc = mask & CoverageConstants.CENTRAL; - boolean useCentral = counter < 2; - if (useCentral && cc != 0) { - portions.add(Direction.CENTRAL); - } - - if (exYes && ((int) (mask & CoverageConstants.EXTREME) > 0)) { - portions.add(Direction.EXTREME); - } - - return portions; - } + return portions; + } } diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/python/MasterInterface.py b/edexOsgi/build.edex/esb/data/utility/common_static/base/python/MasterInterface.py index 86062f44ff..c9799229a9 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/python/MasterInterface.py +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/python/MasterInterface.py @@ -33,6 +33,7 @@ # ------------ ---------- ----------- -------------------------- # 10/20/08 njensen Initial Creation. # 01/17/13 1486 dgilling Make a new-style class. +# 09/23/13 16614 njensen Fixed reload method # # # @@ -120,7 +121,8 @@ class MasterInterface(object): if self.isInstantiated(moduleName): self.__instanceMap.__delitem__(moduleName) if sys.modules.has_key(moduleName): - sys.modules.__delitem__(moduleName) + self.self.clearModuleAttributes(moduleName) + sys.modules.pop(moduleName) if moduleName in self.scripts: self.scripts.remove(moduleName) @@ -128,7 +130,8 @@ class MasterInterface(object): # we may be overriding something in self.scripts, so let's # force an import here if moduleName in self.scripts: - sys.modules.__delitem__(moduleName) + self.clearModuleAttributes(moduleName) + sys.modules.pop(moduleName) __import__(moduleName) if not moduleName in self.scripts: self.scripts.append(moduleName) @@ -140,14 +143,27 @@ class MasterInterface(object): def reloadModule(self, moduleName): if sys.modules.has_key(moduleName): - # Because the user might have removed items + # From the python documentation: + # "When a module is reloaded, its dictionary (containing the module's + # global variables) is retained. Redefinitions of names will override the + # old definitions, so this is generally not a problem. If the new version + # of a module does not define a name that was defined by the old + # version, the old definition remains." + # + # + # Because the user might have removed items # from the module's dictionary, we cannot trust reload() to - # remove old items. We will manually remove everything + # remove old items. We will manually remove everything # but built-ins to ensure everything gets re-initialized when # reload() is called. + self.clearModuleAttributes(moduleName) + reload(sys.modules[moduleName]) + + def clearModuleAttributes(self, moduleName): + if sys.modules.has_key(moduleName): mod = sys.modules[moduleName] modGlobalsToRemove = [k for k in mod.__dict__ if not k.startswith('_')] - for k in modGlobalsToRemove: + for k in modGlobalsToRemove: mod.__dict__.pop(k) - reload(mod) - + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm index 8386264e1c..ce5032bd03 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm @@ -9,6 +9,7 @@ ##### Evan Bookbinder 02-06-2013 Added WrapText macro to handle customization of indents ##### like the ~ and % characters in A1. ##### Evan Bookbinder 05-05-2013 handleClosesPoints and 3rd bullet changes (OVER & now) +##### Evan Bookbinder 09-20-2013 Fixed rural area otherPoints in pathcast section, added rural phrase #################################################################################################### #* Mile Marker Test Code @@ -31,7 +32,7 @@ $simplify is a boolean value (true or false) ### AUTHORS: EVAN BOOKBINDER & MIKE DANGELO ### PURPOSE: OUTPUT MILE MARKER, ROAD, INTERSECTION INFO -#macro(mmarkers$markers $id $name $type $simplify) +#macro(mmarkers $markers $id $name $type $simplify) #set($size = ${list.size($markers)}) #if(${type.length()} > 0) #set($singType = "${type} ") @@ -415,6 +416,7 @@ ${mathUtil.round(${motspd})}KT ## ########END MACRO #macro(handleClosestPoints $list, $points1, $points2, $stormType, $nearText, $nearThreshold, $overText, $overThreshold, $units, $useSecondRef) +#if(${list.size($points1)} > 0) #if(${stormType} == "line") #set($used = []) #set($used1 = []) @@ -463,6 +465,10 @@ ${location}## ${location}## #end #end +#else +###NO POINTS FOUND +OVER ${noLocPhrase} OF !** ENTER STORM DOT COUNTY/ZONE PORTION **! +#end #end ########END MACRO @@ -517,7 +523,7 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound ### CHECK FOR DUPLICATE COUNTY NAMES WITHIN A CWA #parse("dupCounties.vm") #foreach (${area} in ${areas}) -#if(${list.contains($dupcounties, "${area.fips}")}) +#if(${list.contains($dupcounties, "${area.state_zone}")}) #set($useStates = true) #end #end @@ -584,8 +590,10 @@ THE ## #end ${prevCounty}## #if((${prevCountyType} != ${area.areaNotation} || ${useStates} == true) && ${prevStateAbbrev} != "DC") +#if(${prevCountyType.length()} > 0) ${prevCountyType}## #end +#end #if(${useStates} == true && ${prevStateAbbrev} != "DC") IN ## #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## @@ -603,12 +611,16 @@ ${prevCounty}## #if(${prevCountyType} != ${area.areaNotation} || ${useStates} == true) #if(${countyCount} > 1) #if(${prevCountiesType}) +#if(${prevCountiesType.length()} > 0) ${prevCountiesType}## #end +#end #elseif(${prevCountyType}) +#if(${prevCountyType.length()} > 0) ${prevCountyType}## #end #end +#end #if(${useStates} == true && ${prevStateAbbrev} != "DC") IN ## #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## @@ -632,12 +644,16 @@ ${prevCounty}## #if(${prevStateAbbrev} != "DC" && (${prevCountyType} != ${area.areaNotation} || (${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)))) #if(${countyCount} > 1) #if(${prevCountiesType}) +#if(${prevCountiesType.length()} > 0) ${prevCountiesType}## #end +#end #elseif(${prevCountyType}) +#if(${prevCountyType.length()} > 0) ${prevCountyType}## #end #end +#end #if((${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)) && ${prevStateAbbrev} != "DC") IN ## #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## @@ -652,9 +668,9 @@ THE ## #end ${area.name}## #if(${area.areasNotation}) -#if(${countyCount} >= 1) +#if(${countyCount} >= 1 && ${area.areasNotation.length()} > 0) ${area.areasNotation}## -#else +#elseif(${area.areasNotation.length()} > 0) ${area.areaNotation}## #end #end @@ -677,7 +693,10 @@ THE ## #if(${area.partOfArea}) #areaFormat(${area.partOfArea} ${useCentralCounty} ${useExtremeCounty} true)## #end -${area.name} ${area.areaNotation}## +${area.name}## +#if(${area.areasNotation.length()} > 0) + ${area.areaNotation}## +#end #if(${useStates} == true && ${area.stateabbr} != "DC") IN ## #areaFormat(${partOfState} ${useCentralState} ${useExtremeState} true)## @@ -858,7 +877,11 @@ THE ## #end ${prevZone}## #if(${useStates} == true && ${prevStateAbbrev} != "DC") +#if(${prevStateAbbrev.length()} > 0) IN ## +#else +IN ## +#end #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## ${prevState}## #end @@ -872,7 +895,11 @@ THE ## #end ${prevZone}## #if(${useStates} == true && ${prevStateAbbrev} != "DC") +#if(${prevStateAbbrev.length()} > 0) IN ## +#else +IN ## +#end #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## ${prevState}## #end @@ -892,7 +919,11 @@ THE ## #end ${prevZone}## #if(((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)) && ${prevStateAbbrev} != "DC") +#if(${prevStateAbbrev.length()} > 0) IN ## +#else +IN ## +#end #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState} true)## ${prevState}## #end @@ -905,7 +936,11 @@ THE ## #end ${area.name}## #if(${useStates} == true && ${prevStateAbbrev} != "DC") +#if(${prevStateAbbrev.length()} > 0) IN ## +#else +IN ## +#end #areaFormat(${partOfState} ${useCentralState} ${useExtremeState} true)## ${area.parentRegion}## #end @@ -921,7 +956,11 @@ THE ## #end ${area.name} ## #if(${useStates} == true && ${area.stateabbr} != "DC") +#if(${area.stateabbr.length()} > 0) IN ## +#else +IN ## +#end #areaFormat(${partOfState} ${useCentralState} ${useExtremeState} true)## ${area.parentRegion}## #end @@ -968,7 +1007,11 @@ ${prevZone}## #if(${area.partOfArea}) #areaFormat(${area.partOfArea} true true true)## #end +#if(${area.areaNotation.length()} > 0) ${area.name} ${area.areaNotation} IN ## +#else +${area.name} IN ## +#end #areaFormat(${area.partOfParentRegion} true false true)## ${area.parentRegion}... ##OUTPUT FOR D.C. @@ -1009,6 +1052,14 @@ ${area.parentRegion}... #elseif(${list.size($areas)} == 1 && ${list.get(${areas},0).stateabbr} == "LA") THE FOLLOWING PARISH... +##ONE LOCATION AND ONLY Alaska +#elseif(${list.size($areas)} == 1 && ${list.get(${areas},0).stateabbr} == "AK") +THE FOLLOWING AREA... + +##ONE LOCATION AND ONLY PR +#elseif(${list.size($areas)} == 1 && ${list.get(${areas},0).stateabbr} == "PR") +THE FOLLOWING MUNICIPALITY... + ##ONE LOCATION OTHERWISE #elseif(${list.size($areas)} == 1) THE FOLLOWING COUNTY... @@ -1020,8 +1071,16 @@ THE FOLLOWING COUNTY... #end #end #if(${parishFlag} == 0) +#if(${area.stateabbr} == "AK") +THE FOLLOWING MUNICIPALITIES... + +#elseif(${area.stateabbr} == "PR") +THE FOLLOWING AREAS... + +#else THE FOLLOWING COUNTIES... +#end #elseif(${list.size($areas)} == ${parishFlag}) THE FOLLOWING PARISHES... @@ -1191,15 +1250,15 @@ ${location}## #if($marineFlag == 1) ${otherLead} WILL REMAIN OVER MAINLY OPEN WATERS. #else -${otherLead} WILL REMAIN OVER MAINLY RURAL AREAS OF ## +${otherLead} WILL REMAIN OVER ${noLocPhrase} OF ## #headlineLocList(${areas} true true true false).## ###NOW SEARCH FOR OTHER POINTS (PRESUMABLY 3s) AND LIST THEM HERE ### NEED TO CODE THIS ONCE SECTION IS ADDED -#set($numOtherPoints = ${list.size($thirdTier)}) +#set($numOtherPoints = ${list.size($otherPoints)}) #if($numOtherPoints > 0) -..INCLUDING THE FOLLOWING LOCATIONS ## +..INCLUDING THE FOLLOWING LOCATIONS...## #set($count = 0) -#foreach(${loc} in ${thirdTier}) +#foreach(${loc} in ${otherPoints}) #set($count = $count + 1) #if(${loc.partOfArea}) #set($location = "#areaFormat(${loc.partOfArea} true false false) ${loc.name}") @@ -1207,7 +1266,7 @@ ${otherLead} WILL REMAIN OVER MAINLY RURAL AREAS OF ## #else #set($location = "${loc.name}") #end -${location.name}## +${location}## #if($count == $numOtherPoints - 1) AND ## #elseif($count < $numOtherPoints) @@ -1376,7 +1435,7 @@ AND ${strOutput} ${ruralPhrase} WILL REMAIN OVER MAINLY OPEN WATERS. #else ## NO MAJOR POINTS FOUND. LIST RURAL AREAS -${ruralPhrase} WILL REMAIN OVER MAINLY RURAL AREAS OF #headlineLocList(${areas} true true true false).## +${ruralPhrase} WILL REMAIN OVER ${noLocPhrase} OF #headlineLocList(${areas} true true true false).## #set($numMinorPoints = ${list.size($otherLocList)}) #if(${numMinorPoints} == 1) ..WHICH INCLUDES ## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.vm index 6e81ff75e1..925363999f 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.vm @@ -2,10 +2,10 @@ ## AIRPORT WEATHER WARNING TEMPLATE ## ## EXAMPLE TEMPLATE USING HUNTSVILLE PRODUCT ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- APR 12 2012 ## -## VERSION AWIPS II 1.1 -- SEP 12 2012 OB12.9.1-12 ## -###################################################### +## UPDATED EVAN BOOKBINDER 9-18-2013 Implemented config.vm +################################################################## ## +#parse("config.vm") ${WMOId} ${vtecOffice} 000000 ${BBBId} AWW${siteId} #if(${productClass}=="T") @@ -23,11 +23,14 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #end ${ugcline} -#set($zoneList = "") #foreach (${area} in ${areas}) -#set($zoneList = "${zoneList}${area.name}-") +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end -${zoneList} +-## +#end + ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -108,8 +111,6 @@ FOR THE FOLLOWING THREATS... #end -## parse file command here is to pull in mile marker info -## #parse("mileMarkers.vm") #end ############# ## WATCHES ## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.xml index bcfb659b62..515b9be7ff 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/airportWeatherWarning.xml @@ -2,9 +2,24 @@ + Updated Evan Bookbinder 5-5-13 to change units per Directive + Phil Kurimski 09-19-2013 added geospatialConfig.xml +--> + + + + + + + + + nmi kn @@ -16,9 +31,10 @@ ACARS Airport Locations Forecast Zones - + + COR @@ -96,168 +112,4 @@ - - - - - - - - - Zone - 0 - AND - 0 - - NAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - STATE_ZONE - - NAME - - parent - - - - - - - 25 - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - warngenlev - - - - - AREA - true - 8.0 - 5 - 5 - 10 - 8 - Name - - NAME --> - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - - - - - - WarnGenLoc - - Zone - States - TIMEZONES - TIME_ZONE - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.vm index ecc8003cf1..d24a1e0afd 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.vm @@ -1,18 +1,21 @@ #################### ## FLOOD ADVISORY ## #################### -################################################################################## -## Edited by Phil Kurimski 8-17-2011 for OB11.8.0-4 ## -## Evan Bookbinder 9-16-2011 for OB11.8.0-8 ## -## Mike Dangelo 9-19-2011 at Alaska TIM ## -## Mike Dangelo 1-25-2012 at CRH TIM ## -## Evan Bookbinder 2-24-2012 ## -## Phil Kurimski 2-28-2012 for OB 12.2.1-3 ## -## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND) ## -## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## -## Phil Kurimski 9-13-2012 for OB 12.9.1-12 ## -## Phil Kurimski 2-05-2013 for OB13.2.1-3 Added rain so far section ## -################################################################################## +################################################################################### +## Edited by Phil Kurimski 08-17-2011 for OB11.8.0-4 ## +## Evan Bookbinder 09-16-2011 for OB11.8.0-8 ## +## Mike Dangelo 09-19-2011 at Alaska TIM ## +## Mike Dangelo 01-25-2012 at CRH TIM ## +## Evan Bookbinder 02-24-2012 ## +## Phil Kurimski 02-28-2012 for OB 12.2.1-3 ## +## Evan Bookbinder 04-25-2012 for OB 12.3.1 (MND) ## +## Mike Dangelo 09-13-2012 minor tweaks to ${variables} ## +## Phil Kurimski 09-13-2012 for OB 12.9.1-12 ## +## Phil Kurimski 02-05-2013 for OB13.2.1-3 Added rain so far section ## +## Mike Dangelo 09-18-2013 added code for init pos & pathcasting ## +## Evan Bookbinder 09-18-2013 implemented config.vm +################################################################################### +#parse("config.vm") #if(${action} == "EXT") #set($starttime = "000000T0000Z") #set($extend = true) @@ -90,7 +93,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.FA.Y.${etn}.${starttime}-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -149,76 +156,76 @@ ${advType} FOR... #set($rainAmount = "!** RAINFALL AMOUNTS **! INCHES OF RAIN HAVE FALLEN.") #end #if(${list.contains(${bullets}, "doppler")}) - #set($report = "DOPPLER RADAR INDICATED ${cause} THAT WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR INDICATED ${cause} THAT WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "doppler")} && ${list.contains(${bullets}, "actual")}) - #set($report = "DOPPLER RADAR INDICATED ${cause} CAUSING ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR INDICATED ${cause} CAUSING ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "doppler")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "DOPPLER RADAR INDICATED ${cause} DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR INDICATED ${cause} DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "dopplerGauge")}) - #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED ${cause} WHICH WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED ${cause} WHICH WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "dopplerGauge")} && ${list.contains(${bullets}, "actual")}) - #set($report = "DOPPLER RADAR INDICATED ${cause} CAUSING ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR INDICATED ${cause} CAUSING ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "dopplerGauge")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED ${cause} DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA") + #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED ${cause} DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2} IN THE ADVISORY AREA.") #end #if(${list.contains(${bullets}, "trainedSpotters")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}") + #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "actual")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "lawEnforcement")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}") + #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "actual")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "LOCAL LAW ENFORCEMENT REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "emergencyManagement")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}") + #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "actual")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "EMERGENCY MANAGEMENT REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "public")}) - #set($report = "THE PUBLIC REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "THE PUBLIC REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "THE PUBLIC REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}") + #set($report = "THE PUBLIC REPORTED ${cause} IN !** LOCATION **! DUE TO THUNDERSTORMS. THIS WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "actual")}) - #set($report = "THE PUBLIC REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}") + #set($report = "THE PUBLIC REPORTED ${cause} CAUSING ${advTypeShort} IN !** LOCATION **!${report2}.") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "THE PUBLIC REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "THE PUBLIC REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "satelliteEstimates")}) - #set($report = "SATELLITE ESTIMATES INDICATE ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "SATELLITE ESTIMATES INDICATE ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end #if(${list.contains(${bullets}, "satelliteEstimates")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "SATELLITE ESTIMATES INDICATE ${cause} FROM THUNDERSTORMS OVER !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}") + #set($report = "SATELLITE ESTIMATES INDICATE ${cause} FROM THUNDERSTORMS OVER !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.") #end * ## #if(${productClass}=="T") @@ -228,21 +235,76 @@ THIS IS A TEST MESSAGE. ## ###Leave two blank lines here######### +################################# +######## THIRD BULLET ########### +################################# * ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end +############# IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) -...${report}. ${rainAmount} +#if(${stormType} == "line") +...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) +#else +...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${movementSpeed} < ${landStationary} || ${stationary}) +...AND IS STATIONARY. ## +#else +#if(${stormType} == "line") +...AND MOVING ## +#else +...MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +${rainAmount} +#else +###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED ####################################### +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +...${report} ${rainAmount} +#end -#set($phenomena = "FLOOD") -#set($warningType = "ADVISORY") +############################################################# +######## FOURTH BULLET (OPTIONAL IN FLOOD PRODUCTS) ######### +############################################################# +############# IF TRACK IS ENABLED AND pathcast AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")}) * ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end -#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE MINOR FLOODING INCLUDE" "MINOR FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end +#end +################ +#if(${list.contains(${bullets}, "listofcities")}) +#set($floodType = "FLOODING") +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." ${floodType} 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end + +########################################## END OF FOURTH BULLET ############################## +###################################### +###### WHERE ADD INFO GOES ########### +###################################### #if(${list.contains(${bullets}, "addRainfall")}) ADDITIONAL RAINFALL OF !** Edit Amount **! INCHES IS EXPECTED OVER THE AREA. THIS ADDITIONAL RAIN WILL MAKE MINOR FLOODING. @@ -255,8 +317,9 @@ ADDITIONAL RAINFALL OF !** Edit Amount **! INCHES IS EXPECTED OVER THE AREA. THI #drainages(${riverdrainages}) #end -## parse file command here is to pull in mile marker info +## parse file commands here pull in mile marker and/or point marker info ## #parse("mileMarkers.vm") +## #parse("pointMarkers.vm") ##################### ## CALL TO ACTIONS ## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.xml index d773113741..dd7fa2792f 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisory.xml @@ -9,10 +9,25 @@ Evan Bookbinder 09-12-2012 Added settings for locations shapefile Added new areaSource object Phil Kurimski 02-05-2013 Added rain so far section + Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include' + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -47,6 +62,11 @@ true + + false + 180 @@ -102,6 +122,7 @@ + @@ -109,6 +130,7 @@ + @@ -150,16 +172,17 @@ + - - - - + + + + @@ -200,16 +223,16 @@ + - - - + + @@ -226,118 +249,6 @@ -false - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 10 - 200 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm index 3f53c37c24..e495c4981c 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm @@ -2,15 +2,14 @@ ## FLOOD ADVISORY FOLLOW-UP ## ############################## ################################################################################## -## EDITED BY PHIL KURIMSKI 8-18-2011 FOR OB11.8.0-4 ## -## EVAN BOOKBINDER 9-16-2011 FOR OB11.0.8-8 ## -## Mike Dangelo 9-19-2011 at Alaska TIM ## -## Mike and Phil 1-25-2012 at CRH TIM ## -## Evan Bookbinder 2-24-2012 ## +## RECENT VERSION HISTORY: ## Phil Kurimski 2-28-2012 for OB 12.2.1-3 ## ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## ## Phil Kurimski 2-05-2013 for OB13.2.1-3 Added rain so far section ## +## Mike Dangelo 9-18-2013 added initial position and pathcasting options +## Evan Bookbinder 9-18-2013 implemented config.vm ################################################################################## +#parse("config.vm") #if(${action} == "EXT") #set($starttime = "000000T0000Z") #set($extend = true) @@ -175,7 +174,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -238,27 +241,67 @@ THIS IS A TEST MESSAGE.## #end ...THE ${advType} ${hycType}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false)... -########### END NEW HEADLINE CODE #################### +########### END HEADLINE CODE #################### #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## +#end +############# IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) -...!** warning basis **! +#if(${stormType} == "line") +...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else +...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${movementSpeed} < ${landStationary} || ${stationary}) +...AND IS STATIONARY. ## +#else +#if(${stormType} == "line") +...AND MOVING ## +#else +...MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +${rainAmount} +#else +###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED ####################################### #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report}. ${rainAmount} -#end -#set ($phenomena = "FLASH FLOOD") -#set ($warningType = "ADVISORY") +#end +############################################ +######## (CITY LIST) ######### +############################################ +############# IF TRACK IS ENABLED AND pathcast AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")}) #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end -#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE MINOR FLOODING INCLUDE" "THIS FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#end +#end +#if(${list.contains(${bullets}, "listofcities")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." "THIS FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end #if(${list.contains(${bullets}, "addRainfall")}) ADDITIONAL RAINFALL OF !** Edit Amount **! INCHES IS EXPECTED OVER THE AREA. THIS ADDITIONAL RAIN WILL MAKE MINOR FLOODING. @@ -349,7 +392,11 @@ ${ugclinecan} /${productClass}.CAN.${vtecOffice}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -363,6 +410,8 @@ THIS IS A TEST MESSAGE.## #end ...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ## #headlineLocList(${cancelareas} true true true false)... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false)... ########### END NEW HEADLINE CODE #################### !** THE HEAVY RAIN HAS ENDED (AND/OR) FLOOD WATER IS RECEDING. THEREFORE...THE FLOODING THREAT HAS ENDED. **! @@ -380,7 +429,11 @@ ${ugcline} /${productClass}.CON.${vtecOffice}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -430,6 +483,8 @@ MINOR FLOODING IS OCCURRING NEAR !** Enter Location **!. ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") ##################### ## CALL TO ACTIONS ## @@ -502,7 +557,11 @@ ${ugclinecan} /${productClass}.COR.${vtecOffice}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -533,7 +592,11 @@ ${ugcline} /${productClass}.COR.${vtecOffice}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml index 5c6a5e58a5..baf4575499 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml @@ -9,9 +9,24 @@ Evan Bookbinder 09-12-2012 Added settings for locations shapefile Added new areaSource object Phil Kurimski 02-05-2013 Added rain so far section + Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include' + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -45,6 +60,11 @@ true + + false + 30 @@ -110,16 +130,16 @@ + - - - + + @@ -155,16 +175,16 @@ + - - - + + @@ -181,117 +201,6 @@ -false - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 10 - 200 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.vm index 47bb0364c8..1f501cbff6 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.vm @@ -1,17 +1,14 @@ ############################## ### AREAL FLOOD WARNING ###### ############################## -############################################################################ -## EDITED BY MIKE DANGELO 7-13-2011 ## -## Edited by Phil Kurimski 8-16-2011 R11.8 ## -## EDITED BY MIKE DANGELO 9-19-2011 at Alaska TIM ## -## EDITED BY Evan Bookbinder 2-24-2012 -## EDITED BY Phil Kurimski 2-28-2012 -## Mike Dangelo 9-13-2012 minor tweaks to ${variables}## -## Phil Kurimski 2-05-2013 +## RECENT VERSION HISTORY: ## Mike Dangelo 2-6-2013 added satellite estimate logic -## Mike Dangelo 5-2-2013 removed redundant entry/logic for particular/specific stream +## Mike Dangelo 5-2-2013 removed redundant entry/logic for specific stream +## Mike Dangelo 9-16-2013 fixed name of bullet for specific stream and removed redundant CTA +## Mike Dangelo 09-18-2013 added code for init pos & pathcasting +## Evan Bookbinder 9-18-2013 implemented config.vm #################################### SET SOME VARIABLES ################################### +#parse("config.vm") ## #if(${action} == "EXT") #set($starttime = "000000T0000Z") @@ -80,7 +77,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.FA.W.${etn}.${starttime}-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -113,7 +114,7 @@ THIS IS A TEST MESSAGE. ## #end #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) -#set($report = "!**YOU DID NOT SELECT AN /EVENT/ BULLET. PLEASE CLOSE THIS WINDOW AND REGENERATE YOUR WARNING**!") +#set($report = "!**YOU DID NOT SELECT EITHER A /REPORT/ BULLET OR AN /EVENT/ BULLET. PLEASE CLOSE THIS WINDOW AND REGENERATE YOUR WARNING**!") #set($rainAmount = "") #if(${list.contains(${bullets}, "doppler")}) #set($report = "DOPPLER RADAR INDICATED HEAVY RAIN THAT WILL CAUSE FLOODING.") @@ -192,15 +193,53 @@ THIS IS A TEST MESSAGE. ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end +############# IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +#if(${stormType} == "line") +...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) +#else +...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${movementSpeed} < ${landStationary} || ${stationary}) +...AND IS STATIONARY. ## +#else +#if(${stormType} == "line") +...AND MOVING ## +#else +...MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +${rainAmount} +#else +###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED ####################################### #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report} ${rainAmount} +#end ############################################################# ######## FOURTH BULLET (OPTIONAL IN FLOOD PRODUCTS) ######### ############################################################# -#set($phenomena = "FLOOD") -#set($warningType = "WARNING") +############# IF TRACK IS ENABLED AND pathcast AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")}) +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end +#end +################ #if(${list.contains(${bullets}, "listofcities")}) +#set($floodType = "FLOODING") * ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## @@ -209,7 +248,7 @@ THIS IS A TEST MESSAGE. ## #### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT #### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE #### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! -#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." "THIS FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) +#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." ${floodType} 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) #end @@ -230,8 +269,9 @@ ADDITIONAL RAINFALL AMOUNTS OF !** EDIT AMOUNT **! ARE POSSIBLE IN THE WARNED AR FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**location**!. THE FLOOD CREST IS EXPECTED TO REACH !**location(s)**! BY !**time(s)**!. #end -## parse file command here is to pull in mile marker info +## parse file commands here pull in mile marker and/or point marker info ## #parse("mileMarkers.vm") +## #parse("pointMarkers.vm") #################################### END OF ADDITIONAL STUFF ################################### ###################################### diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.xml index b359d03bf6..8c47809de2 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarning.xml @@ -8,11 +8,27 @@ Evan Bookbinder 09-11-2012 Added settings for locations shapefile Phil Kurimski 02-05-2013 Added additional valid duration times Mike Dangelo 02-06-2013 added default bullet for ic - 05-02-2013 removed redundant specific CTA + Mike Dangelo 05-02-2013 removed redundant specific CTA + Mike Dangelo 09-16-2013 fixed specific stream error, and added 6 days to durations + Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include' + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -47,6 +63,11 @@ true + + false + 180 @@ -64,6 +85,7 @@ 4320 5760 7200 + 8640 10080 @@ -100,6 +122,7 @@ + @@ -107,13 +130,14 @@ + - + - + @@ -153,23 +177,23 @@ + - - - - + + + - + - + @@ -210,23 +234,23 @@ + - - - - + + + - + - + @@ -239,118 +263,6 @@ -false - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 30 - 200 - - - - - - - - - - distance - - - - - - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 @@ -361,6 +273,6 @@ and place into this template true - + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.vm index 99ee662ab0..faa00785c2 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.vm @@ -1,16 +1,16 @@ ########################################################### -## EDITED BY MIKE DANGELO 7-12-2011 FOR OB11.7 ## -## Edited by Phil Kurimski 8-18-2011 FOR OB11.8.0-4 ## -## Edited by Evan Bookbinder 9-16-2011 FOR OB11.8.0-8 ## -## EDITED BY MIKE DANGELO 9-19-2011 at Alaska TIM ## -## EDITED BY MIKE DANGELO 1-25-2012 at CRH TIM ## -## EDITED BY EVAN BOOKBINDER 2-24-2012 ## -## EDITED BY PHIL KURIMSKI 2-28-2012 ## +## AREAL FLOOD WARNING FOLLOWUP TEMPLATE +############################################################# +## RECENT VERSION HISTORY ## EDITED BY MIKE REGA 5-02-2012 DR 14885 MND blank line ## ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## Phil Kurimski 2-05-2013 FOR OB13.2.1-5 ## Evan Bookbinder 3-1-2013 segment ending $$ issues +## Mike Dangelo 9-16-2013 slight modifications to urbanCTA output +## Mike Dangelo 9-18-2013 added initial position and pathcasting options +## Evan Bookbinder 9-18-2013 implemented config.vm #################################### SET SOME VARs ################################### +#parse("config.vm") #set($hycType = "") #set($floodReason = "") #set($floodType = "FLOODING") @@ -64,24 +64,39 @@ ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #elseif(${CORCAN}=="true") ${ugclinecan} ################### VTEC/COUNTY LINE ################## /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #else ${ugcline} ################### VTEC/COUNTY LINE ################## /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -108,7 +123,6 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ################################ #### CREATE HEADLINES ########## ################################ -## County #if(${action}=="EXP" || ${action}=="CAN") ...THE FLOOD WARNING FOR ## @@ -123,6 +137,8 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${hycType} IN ## #end #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... #end ############################ ## END CAN/EXP HEADLINE #### @@ -160,7 +176,11 @@ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -176,7 +196,11 @@ ${ugcline} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -238,6 +262,30 @@ REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimez #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end +############# IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +#if(${stormType} == "line") +...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) +#else +...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${movementSpeed} < ${landStationary} || ${stationary}) +...AND IS STATIONARY. ## +#else +#if(${stormType} == "line") +...AND MOVING ## +#else +...MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +${rainAmount} + +#else +###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED ####################################### #set($cityListLead = "RUNOFF FROM THIS EXCESSIVE RAINFALL WILL CAUSE ${floodType} TO OCCUR. ") #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...## #if(${list.contains(${bullets}, "thunder")}) @@ -252,9 +300,24 @@ ${reportBy} ${floodType} ACROSS THE WARNED AREA.${rainAmount}${floodReason} !** !**YOU DID NOT SELECT AN /EVENT/ BULLET. PLEASE CLOSE THIS WINDOW AND REGENERATE YOUR WARNING**! #end +#end + ############################################ ######## (CITY LIST) ######### ############################################ +############# IF TRACK IS ENABLED AND trackStorm AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end +#end #if(${list.contains(${bullets}, "listofcities")}) #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## @@ -267,16 +330,16 @@ THIS IS A TEST MESSAGE. ## #end ########################################## END OF OPTIONAL FOURTH BULLET ############################## -###################################### -###### WHERE ADDITIONAL INFO GOES #### -###################################### +############################### +###### WHERE ADD INFO GOES #### +############################### #if(${list.contains(${bullets}, "addRainfall")}) ADDITIONAL RAINFALL AMOUNTS OF !** EDIT AMOUNT **! ARE POSSIBLE IN THE WARNED AREA. #end -#if(${list.contains(${bullets}, "particularStream")}) -FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**location**!. THE FLOOD CREST IS EXPECTED TO REACH !**location(s)**! BY !**time(s)**!. +#if(${list.contains(${bullets}, "specificStream")}) +FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**location**!. THE FLOOD CREST IS EXPECTED TO REACH !**location(s)**! BY !**time(s)**!. #end #if(${list.contains(${bullets}, "drainages")}) @@ -286,6 +349,8 @@ FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**loc ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") #################################### END OF ADDITIONAL STUFF ################################### ###################################### @@ -321,10 +386,6 @@ EXCESSIVE RUNOFF FROM HEAVY RAINFALL WILL CAUSE FLOODING OF SMALL CREEKS AND STR #if(${list.contains(${bullets}, "USS_CTA")}) EXCESSIVE RUNOFF FROM HEAVY RAINFALL WILL CAUSE FLOODING OF SMALL CREEKS AND STREAMS...HIGHWAYS AND UNDERPASSES IN URBAN AREAS. ADDITIONALLY...COUNTRY ROADS AND FARMLANDS ALONG THE BANKS OF CREEKS...STREAMS AND OTHER LOW LYING AREAS ARE SUBJECT TO FLOODING. -#end -#if(${list.contains(${bullets}, "specificCTA")}) -FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**location**!. THE FLOOD CREST IS EXPECTED TO REACH !**location(s)**! BY !**time(s)**!. - #end #if(${list.contains(${bullets}, "nightCTA")}) BE ESPECIALLY CAUTIOUS AT NIGHT WHEN IT IS HARDER TO RECOGNIZE THE DANGERS OF FLOODING. IF FLOODING IS OBSERVED ACT QUICKLY. MOVE UP TO HIGHER GROUND TO ESCAPE FLOOD WATERS. DO NOT STAY IN AREAS SUBJECT TO FLOODING WHEN WATER BEGINS RISING. diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.xml index 97413db074..e5f20972d0 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/arealFloodWarningFollowup.xml @@ -6,10 +6,26 @@ Qinglu Lin 04-04-2012 DR 14691. Added tag. Evan Bookbinder 09-11-2012 Added settings for locations shapefile Phil Kurimski 02-05-2013 + Mike Dangelo 09-16-2013 changed name bullets to 'specific' stream, slight urbanCTA modification + Mike Dangelo 09-18-2013 added initial position and pathcasting options + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -45,6 +61,11 @@ true + + false + 30 @@ -98,27 +119,26 @@ + - - - - + + + - + - + - @@ -143,27 +163,26 @@ + - - - + + - + - + - @@ -174,119 +193,6 @@ - false - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 30 - 200 - - - - - - - - - - distance - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm index 0b7f4a7511..aa0d01e273 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm @@ -2,14 +2,25 @@ ## BURN SCAR FLASH FLOOD WARNING TEMPLATE FOR COUNTY-BASED PRODUCTS ## ###################################################################### ## CREATED BY Phil Kurimski 2-08-2013 OB13.2.1-5 +## Modified by Phil Kurimski 9-18-2013 OB13.5.2-5 for FFW Emergency +## Evan Bookbinder 9-18-2013 Implemented config.vm ###################################################################### ## This template can be used for any pre-defined polygon that a site ## needs to issue a FFW for outside of a dam break. #################################### SET SOME VARIABLES ################################### +#parse("config.vm") #set($hycType = "") #set($burnDrainage = "") #set($burnScar = "") #set($burnCTA = "") +#set($emergencyHeadline = "!** ENTER LOCATION **!") +######################################################################### +## Parse command to include a burnScarInfo.vm file with site specific +## burn scar information. Sites can include this information in a +## separate file or include in the template per the coding below. +######################################################################### +#parse ("burnScarInfo.vm") + ## #if(${action} == "EXT") #set($starttime = "000000T0000Z") @@ -53,10 +64,10 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ############################################################################# ## Flash Flood Emergency Headline -- Coming soon to a warning near you! # ############################################################################# -###if(${list.contains(${bullets}, "ffwEmergency")} ) -##...FLASH FLOOD EMERGENCY FOR !** LOCATION **!... -## -###end +#if(${list.contains(${bullets}, "ffwEmergency")} ) +...FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... + +#end #headlineext(${officeLoc}, ${backupSite}, ${extend}) ################################# @@ -189,12 +200,6 @@ THIS IS A TEST MESSAGE. ## #if(${list.contains(${bullets}, "satelliteGauge")} && ${list.contains(${bullets}, "thunder")}) #set($report = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED THUNDERSTORMS WERE PRODUCING HEAVY RAIN OVER THE WARNED AREA.") #end -######################################################################### -## Parse command to include a burnScarInfo.vm file with site specific dam -## information. Sites can include this information in a separate file or -## include in the template per the coding below. -######################################################################### -#parse ("burnScarInfo.vm") * ## #if(${productClass}=="T") @@ -208,7 +213,7 @@ THIS IS A TEST MESSAGE. ## ## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # ########################################################################## #if(${list.contains(${bullets}, "ffwEmergency")} ) -#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR !** LOCATION **!. SEEK HIGHER GROUND NOW! THIS IS A POTENTIALLY LIFE THREATENING SITUATION!" 2 2) +#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW!" 2 2) #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml index f9d06b5a71..873ce06e9e 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml @@ -1,11 +1,25 @@ - + + + + + + + + + mi mph @@ -152,9 +166,7 @@ - - - + @@ -212,9 +224,7 @@ --> - - - + @@ -252,121 +262,6 @@ template or listing the dams in a separate file and using the include command --> - - - - County - 0 - AND - 0 - COUNTYNAME - - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 50 - 10 - - distance - - - - - - - - - - - - - - - false - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.vm index b84926cd1c..0a4929cd2f 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.vm @@ -2,10 +2,13 @@ ## BURN SCAR FLASH FLOOD STATEMENT ## #################################################### ## CREATED BY Phil Kurimski 2-07-2013 OB13.2.1-5 +## Modified by Phil Kurimski 9-18-2013 OB13.5.2-5 for FFW Emergency +## Evan Bookbinder 9-18-2013 Implemented config.v, #################################################### ## This template can be used for any pre-defined polygon that a site ## needs to issue a FFW for outside of a dam break. #################################### SET SOME VARs ################################### +#parse("config.vm") #set($hycType = "") #set($snowMelt = "") #set($floodReason = "") @@ -14,6 +17,7 @@ #set($burnScar = "") #set($burnCTA = "") #set($burnScarEnd = "") +#set($emergencyHeadline = "!** ENTER LOCATION **!") ###OVERRIDE DEFAULT EXECESSIVE RAINFALL IF NECESSARY #if(${ic} == "RS") #set($hycType = "RAIN AND SNOW MELT") @@ -21,9 +25,9 @@ #end ## ######################################################################### -## Parse command to include a burnScarInfo.vm file with site specific dam -## information. Sites can include this information in a separate file or -## include in the template per the coding below. +## Parse command to include a burnScarInfo.vm file with site specific +## burn scar information. Sites can include this information in a +## separate file or include in the template per the coding below. ######################################################################### #parse ("burnScarInfo.vm") #set($endwarning = "THE HEAVY RAIN HAS ENDED...AND FLOODING IS NO LONGER EXPECTED TO POSE A THREAT${burnScarEnd}. PLEASE CONTINUE TO HEED ALL ROAD CLOSURES.") @@ -56,7 +60,11 @@ ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #elseif(${CORCAN}=="true") ${ugclinecan} @@ -64,7 +72,11 @@ ${ugclinecan} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #else ${ugcline} @@ -72,7 +84,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${s}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #end @@ -115,6 +131,8 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${hycType} IN ## #end #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... #end ############################ ## END CAN/EXP HEADLINE #### @@ -142,7 +160,11 @@ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -158,7 +180,11 @@ ${ugcline} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -174,6 +200,15 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true") #if(${productClass}=="T") THIS IS A TEST MESSAGE.## +#end +################################### +## Flash Flood Emergency headline # +################################### +#if(${list.contains(${bullets}, "ffwEmergency")}) +#set($ctaSelected = "YES") + +...THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... + #end ...THE FLASH FLOOD WARNING ## #if(${hycType} != "") @@ -181,15 +216,6 @@ FOR ${hycType} ## #end REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false)... -############################################################################### -## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline # -############################################################################### -#if(${list.contains(${bullets}, "ffwEmergency")}) -#set($ctaSelected = "YES") - -...THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!... - -#end ################################################ ################################# @@ -312,6 +338,13 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report} ${rainAmount} ${isExpected} ${snowMelt} +########################################################################## +## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # +########################################################################## +#if(${list.contains(${bullets}, "ffwEmergency")}) +THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW! + +#end ${burnScar} ############################################ diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.xml index 718a4c7dbb..e2794a5994 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarFlashFloodWarningFollowup.xml @@ -1,11 +1,25 @@ - + + + + + + + + + mi mph @@ -115,9 +129,7 @@ - - - + @@ -171,9 +183,7 @@ - - - + @@ -206,116 +216,6 @@ false - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 10 - 200 - - name - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfo.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfo.vm index 059dc71c7c..4184299dbc 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfo.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfo.vm @@ -10,6 +10,7 @@ #if(${list.contains($bullets, "FourMileBurnArea")}) #set($burnScarName = "FOUR MILE BURN AREA") #set($burnScarEnd = " OVER THE FOUR MILE BURN AREA") + #set($emergencyHeadline = "AREAS IN AND AROUND THE ${burnScarName}") #end #if(${list.contains($bullets, "fourmilelowimpact")}) #set($ctaSelected = "YES") diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfoBullet.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfoBullet.xml index 0692cb41c0..814754494e 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfoBullet.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/burnScarInfoBullet.xml @@ -5,9 +5,9 @@ This process can be done for any pre-configured FFW box. --> \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/config.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/config.vm new file mode 100644 index 0000000000..8a4bdd862f --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/config.vm @@ -0,0 +1,59 @@ +############################################################################ +## This file contains global WarnGen tempate (.vm) configuration settings +## If you have any questions please contact Evan Bookbinder - WFO EAX +## CREATED 9/20/2013 +############################################################################ +### SET LAND REFERENCE DISTANCE UNITS +#set($landDistanceUnits = "MILES") +### SET MARINE REFERENCE DISTANCE UNITS +#set($marineDistanceUnits = "NM") + +### SET DISTANCE (LAND) AT OR BELOW WHICH STORM REFERENCE MILEAGE WILL BE SHOWN AS "NEAR" +#set($maxLandNearDistance = 6) +### SET DISTANCE (MARINE) AT OR BELOW WHICH STORM REFERENCE MILEAGE WILL BE SHOWN AS "NEAR" +#set($maxMarineNearDistance = 6) +### SET "NEAR" WORDING +#set($nearPhrase = "NEAR") + +### SET DISTANCE (LAND) AT OR BELOW WHICH STORM REFERENCE MILEAGE WILL BE SHOWN AS"OVER" +#set($maxLandOverDistance = 2) +### SET DISTANCE (LAND) AT OR BELOW WHICH STORM REFERENCE MILEAGE WILL BE SHOWN AS"OVER" +#set($maxMarineOverDistance = 2) +### SET "OVER" WORDING +#set($overPhrase = "OVER") + +### SET STORM SPEED (LAND) BELOW WHICH STORM MOVEMENT WILL BE "STATIONARY" .. e.g. < 5 mph +#set($landStationary = 5) +### SET STORM SPEED (MARINE) BELOW WHICH STORM MOVEMENT WILL BE "STATIONARY" .. e.g < 5 knots +#set($marineStationary = 5) + +### USE SECOND STORM REFERENCE? true or false +### DETERMINES WHETHER OR NOT A SECOND STORM REFERENCE IS USED IN THE 3RD BULLET. +### TRUE: +### "A SEVERE THUNDERSTORM WAS LOCATED NEAR PODUNK...OR 40 MILES EAST OF DENVER" +### FALSE: +### "A SEVERE THUNDERSTORM WAS LOCATED NEAR PODUNK" +### ONE VARIABLE IS SET FOR A SINGLE STORM, THE OTHER FOR A LINE OF STORMS +#set ($useSecondReferenceCell = true) +#set ($useSecondReferenceLine = false) + +### INCLUDE STATE ABBREVIATIONS WITH ZONE LISTING IN MND HEADER? true or false +### +### FOR WESTERN REGION/ALASKA, THIS WILL LIKELY BE FALSE...AS WOULD ANY CWA COVERING +### ONLY A SINGLE STATE +### FALSE OPTION: +### AKZ220>224-226-170400 +### YUKON FLAT AND SURROUNDING UPLANDS-CENTRAL INTERIOR- +### MIDDLE TANANA VALLEY-DELTANA AND TANANA FLATS- +### 556 PM AKDT MON SEP 16 2013 +### +### TRUE OPTION: +### AKZ220>224-226-170400 +### YUKON FLAT AND SURROUNDING UPLANDS AK-CENTRAL INTERIOR AK- +### MIDDLE TANANA VALLEY AK-DELTANA AND TANANA FLATS AK- +### 556 PM AKDT MON SEP 16 2013 +#set($includeStateAbbreviation = true) + +### SET RURAL PHRASING WHEN NO WARNGEN LOCATIONS ARE IN THE PATH OF THE STORM TRACK/POLYGON +### THIS STORM WILL REMAIN OVER ___________ OF XXXX COUNTY/ZONE +#set($noLocPhrase = "MAINLY RURAL AREAS") \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/countyTypes.txt b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/countyTypes.txt index f3aa89ad5e..9e22d41d13 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/countyTypes.txt +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/countyTypes.txt @@ -1,5 +1,5 @@ LA \ PARISH -LOUISIANNA \ PARISH +LOUISIANA \ PARISH LA+ \ PARISHES LOUISIANA+ \ PARISHES DC \ diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/damInfo.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/damInfo.vm index ed4ec6f9b2..1300d431a1 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/damInfo.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/damInfo.vm @@ -61,11 +61,12 @@ #if(${bullet.endsWith("Dam")}) #set($ctaSelected = "YES") #set($sitespecSelected = "YES") -## #set($hycType = "THE ${riverName} BELOW ${damName}") -## #set($headline = "FOR ${reportType2} ${damName} ON THE ${riverName} ") -## #set($reportType1 = "${reportType2} ${damName} ON THE ${riverName}${reportInfo}") -## #set($addInfo = "THE NEAREST DOWNSTREAM TOWN IS ${cityInfo} FROM THE DAM.") -## #set($sitespecCTA = "IF YOU ARE IN LOW LYING AREAS BELOW THE ${damName} YOU SHOULD MOVE TO HIGHER GROUND IMMEDIATELY.") + #set($hycType = "THE ${riverName} BELOW ${damName}") + #set($emergencyHeadline = "TOWNS AND CITIES IMMEDIATELY BELOW ${damName} ON THE ${riverName}") + #set($headline = "FOR ${reportType2} ${damName} ON THE ${riverName} ") + #set($reportType1 = "${reportType2} ${damName} ON THE ${riverName}${reportInfo}") + #set($addInfo = "THE NEAREST DOWNSTREAM TOWN IS ${cityInfo} FROM THE DAM.") + #set($sitespecCTA = "IF YOU ARE IN LOW LYING AREAS BELOW THE ${damName} YOU SHOULD MOVE TO HIGHER GROUND IMMEDIATELY.") #end #end ####################################################################### diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.vm new file mode 100644 index 0000000000..670322f246 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.vm @@ -0,0 +1,28 @@ +#* +CREATED 09-20-2013 BY EVAN BOOKBINDER + +dbTable list should include the pointSource objects created in +dssEvents.xml + +*# + +#if ($dss_events) +#set($size = ${list.size($dss_events)}) +#if ($size > 0) +PEOPLE ATTENDING ## +#set($counter = 1) +#foreach($dss in $dss_events) +#if($counter < $size) +${dss.name}...## +#set($counter = $counter + 1) +#elseif($counter == $size) +#if($size > 1) +AND ## +#end +${dss.name} ## +#end +#end +SHOULD SEEK SAFE SHELTER IMMEDIATELY! + +#end +#end \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.xml new file mode 100644 index 0000000000..c01ba98673 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dssEvents.xml @@ -0,0 +1,32 @@ + + + + warngen_dss + NAME + TRACK + true + 10 + 10 + + distance + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dupCounties.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dupCounties.vm index ffc49c6e8d..29f8f6dfdc 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dupCounties.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/dupCounties.vm @@ -1,7 +1,10 @@ ### IF YOU HAVE DUPLICATE COUNTY NAMES IN YOUR CWA -### (e.g. JOHNSON KANSAS AND JOHNSON MISSOURI) INCLUDE FIPS BELOW -### IN THE XXYYY FORMAT WHERE XX = STATE FIPS AND YYY = COUNTY FIPS -### For example: #set ($dupcounties = ["20091","20107","29101","29115"]) +### (e.g. LINN KANSAS AND LINN MISSOURI) INCLUDE FIPS/ZONE CODES BELOW. +### FIPS CODES ARE IN A XXYYY NUMERIC FORMAT WHERE XX = STATE FIPS AND YYY = COUNTY FIPS +### ZONE CODES ARE IN A XXYYY STRING FORMAT WHERE XX = STATE ABBREVIATION AND YYY = ZONE CODE +### For example: For Linn County Kansas and Linn County Missouri, we would have 4 entires: +### the FIPS/Zone pair for Linn Kansas and the FIPS/Zone pair for Linn Missouri +### #set ($dupcounties = ["29115","MO024","20107","KS060"]) ### IF YOU DO NOT HAVE DUPLICATE COUNTY NAMES USE THE FOLLOWING SYNTAX: ### Null example: #set ($dupcounties = [""]) #set ($dupcounties = [""]) \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.vm index 809df3f0e4..49e03ff80b 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.vm @@ -1,16 +1,16 @@ ################# ############################################################################ ## EXTREME WIND WARNING TEMPLATE ## -## (SLIGHTLY) MODIFIED BY TOM BIRCHARD - WFO HFO ## -## VERSION AWIPS II 1.0 -- 15-APRIL-2011 -## MODIFIED EVAN BOOKBINDER 09-16-2011 OB11.0.8-8 ## -## EVAN BOOKBINDER WFO EAX 11-04-2011 OB11.9-3 (DRs) ## +## RECENT HISTORY ## QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## -## Evan Bookbinder 06-07-2013 Fixed CTAs/&& +## Evan Bookbinder 06-07-2013 Fixed CTAs/&& +## Evan Bookbinder 09-18-2013 Implemented config.vm ############################################################################ +################# ## EWW PRODUCT ## ################# +#parse("config.vm") ## ${WMOId} ${vtecOffice} 000000 ${BBBId} EWW${siteId} @@ -115,12 +115,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${reportType}...${reportType1} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY.## #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH.## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.xml index eeb8f45585..51dda91a61 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarning.xml @@ -4,10 +4,24 @@ Evan Bookbinder 09-12-2012 Added settings for locations shapefile Added new areaSource object Evan Bookbinder 03-1-2013 Fixed group Settings - Evan Bookbinder 06-07-2013 Fixed CTAs + Evan Bookbinder 06-07-2013 Fixed CTAs + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -80,7 +94,8 @@ - + + @@ -106,161 +121,10 @@ - + + - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 50 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - warngenlev - population - - - - - 1 - true - 8.0 - 5 - 5 - 4 - 8 - Name - COUNTYNAME - AREA - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm index 9575f728e9..88b81211e0 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm @@ -4,8 +4,10 @@ ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (corText) ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## Evan Bookbinder 06-07-2013 Fixed CTAs/&& +## Evan Bookbinder 09-18-2013 Implemented config.vm ################################################ ## +#parse("config.vm") ### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT #if(${action}=="COR" && ${cancelareas}) #set($CORCAN = "true") @@ -42,7 +44,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -144,7 +150,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -170,12 +180,13 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${reportType}...${reportType1} ## #end +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY.## #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH.## @@ -308,7 +319,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -322,6 +337,8 @@ THIS IS A TEST MESSAGE.## #end ...THE EXTREME WIND WARNING FOR ## #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... ## One line explanation !**EXPLANATION**! @@ -349,7 +366,11 @@ $$ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -371,12 +392,13 @@ THIS IS A TEST MESSAGE. AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${lo AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${reportType}...${reportType1} ## #end +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY.## #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH.## @@ -468,7 +490,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.xml index fc306ee4e1..201c1800dc 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.xml @@ -6,9 +6,23 @@ Added new areaSource object Evan Bookbinder 03-01-2013 Fixed Group Settings Evan Bookbinder 06-07-2013 Fixed CTAs + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -94,8 +108,7 @@ - - + @@ -120,164 +133,10 @@ - - - - + + - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - warngenlev - population - - - - - 1 - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - 1 - NAME - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.vm index 95cb7569cf..ac579914f4 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.vm @@ -4,6 +4,7 @@ ## CREATED BOOKBINDER/DANGELO - 2-07-12 - Initial OB12 Write ## ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## ############################################################################### +#parse("config.vm") ${WMOId} ${vtecOffice} 000000 ${BBBId} FRW${siteId} ${ugcline} @@ -59,6 +60,7 @@ A FIRE WAS RACING TOWARD !** LOCATIONS **! AND COULD REACH THERE BY !** TIME **! ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## #parse("pointMarkers.vm") ##################### ## CALL TO ACTIONS ## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.xml index e7e3d13354..ebb44f9f77 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/fireWarning.xml @@ -4,9 +4,23 @@ Modified MIKE REGA 5-10-2012 DR 14525 added timeZoneField DR 14691 added feAreaField Evan Bookbinder 09-12-2012 added new areaSource object + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -24,7 +38,7 @@ - + COR @@ -88,155 +102,4 @@ - - - Zone - 0 - AND - 0 - NAME - NAME - FE_AREA - TIME_ZONE - STATE - countyTypes.txt - STATE_ZONE - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - AREA - true - 8.0 - 5 - 5 - 4 - 8 - Name - COUNTYNAME - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - - - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.vm index 6417edfdb1..8c4eb87aa5 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.vm @@ -1,19 +1,15 @@ ############################################################ ## FLASH FLOOD WARNING TEMPLATE FOR COUNTY-BASED PRODUCTS ## ############################################################ -## EDITED BY MIKE DANGELO 7-13-2011 -## Edited by Phil Kurimski 8-15-2011 for OB11.8.0-4 -## EDITED BY EVAN BOOKBINDER 9-15-2011 for OB11.8.0-8 -## EDITED BY MIKE DANGELO 9-21-2011 at Alaska TIM -## EDITED BY PHIL KURIMSKI 9-23-2011 at Alaska TIM for burn scars and mud slides -## EDITED BY EVAN BOOKBINDER 11-04-11 - OB11.9-3 (DRs) -## EDITED BY MIKE DANGELO 1-25-2012 at CRH TIM -## EDITED BY MIKE DANGELO 2-23-2012 -## EDITED BY EVAN BOOKBINDER 2-24-2012 +## RECENT VERSION HISTORY: ## EDITED BY Phil Kurimski 9-13-2012 OB12.9.1-12 to add Flash Flood Emergency Headline ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## Phil Kurimski 2-05-2013 revised CTA statements +## Mike Dangelo 09-17-2013 added code for init pos & pathcasting, and added pointMarkers parse line +## Evan Bookbinder 9-18-2013 Implemented config.vm +## Gene Petrescu 09-19-2013 Added Alaska Modifications (GP comments) #################################### SET SOME VARIABLES ################################### +#parse("config.vm") #set($hycType = "") ## #if(${action} == "EXT") @@ -29,7 +25,7 @@ #if(${list.contains(${bullets}, "icrs")}) #set($ic = "RS") #set($hycType = "RAIN AND SNOW MELT IN...") - #set($snowMelt = "RAPID SNOW MELT IS ALSO OCCURRING AND WILL ADD TO THE FLOODING.") + #set($snowMelt = "RAPID SNOW MELT IS ALSO OCCURRING AND WILL ADD TO THE FLOODING. ") #end ## ${WMOId} ${vtecOffice} 000000 ${BBBId} @@ -58,11 +54,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ############################################################################# ## Flash Flood Emergency Headline -- Coming soon to a warning near you! # ############################################################################# -###if(${list.contains(${bullets}, "ffwEmergency")} ) -###set($ctaSelected = "YES") -##...FLASH FLOOD EMERGENCY FOR !** LOCATION **!... -## -###end +#if(${list.contains(${bullets}, "ffwEmergency")} ) +#set($ctaSelected = "YES") +...FLASH FLOOD EMERGENCY FOR !** LOCATION **!... + +#end #headlineext(${officeLoc}, ${backupSite}, ${extend}) ################################# @@ -76,7 +72,13 @@ FLASH FLOOD WARNING FOR... #if(${hycType} != "") ${hycType} #end +###REMMED OUT FOR ALASKA #firstBullet(${areas}) +###UNCOMMENT NEXT LINE for AK - Temp fix until hydro shapefiles can be created +###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! +###UNCOMMENT BELOW FOR A ZONE BASED PRODUCT USING COUNTY HEADLINES +###firstBullet(${affectedCounties}) +############# GP end ################################# ####### SECOND BULLET ########### @@ -92,11 +94,15 @@ THIS IS A TEST MESSAGE. ## ################################# ######## THIRD BULLET ########### ################################# -#set($report = "HEAVY RAIN IS OCCURRING. !** ADD MORE DETAIL HERE **!") +#set($s1 = "DOPPLER RADAR ") +#set($s2 = "INDICATED ") +#set($s3 = "HEAVY RAIN") +#set($overPhrase = "OVER") +#set($nearPhrase = "NEAR") #if(${list.contains(${bullets}, "flash")} ) - #set($isExpected = "FLASH FLOODING IS ALREADY OCCURRING.") + #set($isExpected = "FLASH FLOODING IS ALREADY OCCURRING. ") #else - #set($isExpected = "FLASH FLOODING IS EXPECTED TO BEGIN SHORTLY.") + #set($isExpected = "FLASH FLOODING IS EXPECTED TO BEGIN SHORTLY. ") #end #if(${list.contains(${bullets}, "burnScar")} ) #set($burnScar = "EXCESSIVE RAINFALL OVER THE BURN SCAR WILL RESULT IN DEBRIS FLOW MOVING THROUGH THE !** DRAINAGE **!. THE DEBRIS FLOW CAN CONSIST OF ROCK...MUD...VEGETATION AND OTHER LOOSE MATERIALS.") @@ -112,97 +118,278 @@ THIS IS A TEST MESSAGE. ## #end #set($rainAmount = "") #if(${list.contains(${bullets}, "rain1")} ) - #set($rainAmount = "UP TO ONE INCH OF RAIN HAS ALREADY FALLEN.") + #set($rainAmount = "UP TO ONE INCH OF RAIN HAS ALREADY FALLEN. ") #end #if(${list.contains(${bullets}, "rain2")} ) - #set($rainAmount = "UP TO TWO INCHES OF RAIN HAVE ALREADY FALLEN.") + #set($rainAmount = "UP TO TWO INCHES OF RAIN HAVE ALREADY FALLEN. ") #end #if(${list.contains(${bullets}, "rain3")} ) - #set($rainAmount = "UP TO THREE INCHES OF RAIN HAVE ALREADY FALLEN.") + #set($rainAmount = "UP TO THREE INCHES OF RAIN HAVE ALREADY FALLEN. ") #end #if(${list.contains(${bullets}, "rainEdit")} ) - #set($rainAmount = "!** RAINFALL AMOUNTS **! INCHES OF RAIN HAVE FALLEN.") + #set($rainAmount = "!** RAINFALL AMOUNTS **! INCHES OF RAIN HAVE FALLEN. ") #end #if(${list.contains(${bullets}, "doppler")}) - #set($report = "DOPPLER RADAR INDICATED HEAVY RAIN ACROSS THE WARNED AREA.") + #set($s1 = "DOPPLER RADAR ") + #set($s2 = "INDICATED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "doppler")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "DOPPLER RADAR INDICATED THUNDERSTORMS PRODUCING HEAVY RAIN ACROSS THE WARNED AREA.") + #set($s1 = "DOPPLER RADAR ") + #set($s2 = "INDICATED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "dopplerGauge")}) - #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED THAT HEAVY RAIN WAS FALLING OVER THE AREA.") + #set($s1 = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES ") + #set($s2 = "INDICATED ") + #set($s3 = "HEAVY RAIN FALLING") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "dopplerGauge")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES INDICATED THUNDERSTORMS PRODUCING HEAVY RAIN OVER THE AREA.") + #set($s1 = "DOPPLER RADAR AND AUTOMATED RAIN GAUGES ") + #set($s2 = "INDICATED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "trainedSpotters")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "TRAINED WEATHER SPOTTERS ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED THUNDERSTORMS PRODUCING HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "TRAINED WEATHER SPOTTERS ") + #set($s2 = "REPORTED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "flash")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED FLASH FLOODING OCCURRING IN !** LOCATION **!.") + #set($s1 = "TRAINED WEATHER SPOTTERS ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "TRAINED WEATHER SPOTTERS REPORTED HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "TRAINED WEATHER SPOTTERS ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "public")}) - #set($report = "THE PUBLIC REPORTED HEAVY RAIN IN !** LOCATION **!") + #set($s1 = "THE PUBLIC ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "THE PUBLIC REPORTED HEAVY RAIN FROM THUNDERSTORMS IN !** LOCATION **!.") + #set($s1 = "THE PUBLIC ") + #set($s2 = "REPORTED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "flash")}) - #set($report = "THE PUBLIC REPORTED FLASH FLOODING OCCURRING IN !** LOCATION **!.") + #set($s1 = "THE PUBLIC ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "THE PUBLIC REPORTED HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "THE PUBLIC ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "lawEnforcement")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED HEAVY RAIN OVER !** LOCATION **!.") + #set($s1 = "LOCAL LAW ENFORCEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED HEAVY RAIN DUE TO THUNDERSTORMS OVER !** LOCATION **!.") + #set($s1 = "LOCAL LAW ENFORCEMENT ") + #set($s2 = "REPORTED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "flash")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED FLASH FLOODING IS OCCURRING IN !** LOCATION **!.") + #set($s1 = "LOCAL LAW ENFORCEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "LOCAL LAW ENFORCEMENT REPORTED HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "LOCAL LAW ENFORCEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "emergencyManagement")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED HEAVY RAIN OVER !** LOCATION **! ") + #set($s1 = "EMERGENCY MANAGEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED HEAVY RAIN DUE TO THUNDERSTORMS OVER !** LOCATION **!.") + #set($s1 = "EMERGENCY MANAGEMENT ") + #set($s2 = "REPORTED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "flash")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED FLASH FLOODING IN !** LOCATION **!.") + #set($s1 = "EMERGENCY MANAGEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "FLASH FLOODING") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "plainRain")}) - #set($report = "EMERGENCY MANAGEMENT REPORTED HEAVY RAIN IN !** LOCATION **!.") + #set($s1 = "EMERGENCY MANAGEMENT ") + #set($s2 = "REPORTED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "IN") + #set($overPhrase = "IN") #end #if(${list.contains(${bullets}, "satellite")}) - #set($report = "SATELLITE ESTIMATES INDICATED HEAVY RAIN.") + #set($s1 = "SATELLITE ESTIMATES ") + #set($s2 = "INDICATED ") + #set($s3 = "HEAVY RAIN") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "satellite")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "SATELLITE ESTIMATES INDICATED THUNDERSTORMS PRODUCING HEAVY RAIN OVER THE WARNED AREA.") + #set($s1 = "SATELLITE ESTIMATES ") + #set($s2 = "INDICATED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "satelliteGauge")}) - #set($report = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED THAT HEAVY RAIN WAS FALLING OVER THE WARNED AREA.") + #set($s1 = "SATELLITE ESTIMATES AND RAIN GAUGES ") + #set($s2 = "INDICATED ") + #set($s3 = "HEAVY RAIN FALLING") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end #if(${list.contains(${bullets}, "satelliteGauge")} && ${list.contains(${bullets}, "thunder")}) - #set($report = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED THUNDERSTORMS WERE PRODUCING HEAVY RAIN OVER THE WARNED AREA.") + #set($s1 = "SATELLITE ESTIMATES AND RAIN GAUGES ") + #set($s2 = "INDICATED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") +#end +#if(${list.contains(${bullets}, "onlyGauge")}) + #set($s1 = "GAUGE REPORTS ") + #set($s2 = "INDICATED ") + #set($s3 = "HEAVY RAIN FALLING") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") +#end +#if(${list.contains(${bullets}, "onlyGauge")} && ${list.contains(${bullets}, "thunder")}) + #set($s1 = "GAUGE REPORTS ") + #set($s2 = "INDICATED ") + #if(${stormType} == "line") + #set($s3 = "THUNDERSTORMS PRODUCING HEAVY RAIN") + #else + #set($s3 = "A THUNDERSTORM PRODUCING HEAVY RAIN") + #end + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") +#end +#if(${list.contains(${bullets}, "onlyGauge")} && ${list.contains(${bullets}, "plain rain")}) + #set($s1 = "GAUGE REPORTS ") + #set($s2 = "INDICATED ") + #set($nearPhrase = "NEAR") + #set($overPhrase = "OVER") #end * ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end -#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...${report} ${rainAmount} ${isExpected} ${snowMelt} - -#wrapText(${burnScar} 2 2) +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +...${s1}${s2}${s3} ## +############# IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase}, 6, ${overPhrase}, 2, "MILES", false) +. ## +#if(${list.contains(${bullets}, "flash")}) +#set($skip = "") +#else +#if(${movementSpeed} < 3 || ${stationary}) +#if(${list.contains(${bullets}, "thunder")}) +THE STORM IS NEARLY STATIONARY. ## +#else +THE RAIN WILL CONTINUE. ## +#end +#else +#if(${stormType} == "line") +#if(${list.contains(${bullets}, "thunder")}) +THE STORMS ARE MOVING ## +#else +THE STORM IS MOVING ## +#end +#else +THE RAIN IS MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +#end +#else +!** LOCATION **! ## +#end +${rainAmount}${isExpected}${snowMelt}${burnScar} ########################################################################## ## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # @@ -216,10 +403,23 @@ THIS IS A TEST MESSAGE. ## ############################################################# ######## FOURTH BULLET (OPTIONAL IN FLOOD PRODUCTS) ######### ############################################################# +############# IF TRACK IS ENABLED AND trackStorm AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")}) +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end +#end +################ #if(${list.contains(${bullets}, "listofcities")}) -#set($phenomena = "FLASH FLOOD") #set($floodType = "FLASH FLOODING") -#set($warningType = "WARNING") * ## #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## @@ -249,8 +449,9 @@ FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**loc #end -## parse file command here is to pull in mile marker info +## parse file command here is to pull in mile marker and/or point marker info ## #parse("mileMarkers.vm") +## #parse("pointMarkers.vm") #################################### END OF ADDITIONAL STUFF ################################### ###################################### @@ -359,13 +560,18 @@ PLEASE REPORT FLOODING TO YOUR LOCAL LAW ENFORCEMENT AGENCY WHEN YOU CAN DO SO S ########################################## ########BOTTOM OF THE PRODUCT############# ########################################## +######################## +## LAT/LON, TML, SIGN ## +######################## #if(${productClass}=="T") THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. #end -#set($COORDS = "#printcoords(${areaPoly}, ${list})") -${COORDS} + +#printcoords(${areaPoly}, ${list}) + $$ -#parse("forecasterName.vm") + +#parse("forecasterName.vm") \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.xml index 037ac9c54e..db363c2f88 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarning.xml @@ -1,18 +1,30 @@ - + + + + + + + + + mi mph @@ -47,6 +59,11 @@ true + + false + @@ -58,13 +75,20 @@ 180 - 30 60 90 120 + 150 180 + 210 240 + 270 + 300 + 330 360 + 390 + 420 + 450 480 @@ -78,17 +102,18 @@ - - + + - - + + + + @@ -98,7 +123,9 @@ - + + @@ -113,7 +140,7 @@ - + @@ -127,14 +154,16 @@ - - + + + + @@ -144,15 +173,14 @@ - - - - + + + - @@ -173,17 +201,19 @@ - - + + - - + + + + @@ -193,10 +223,10 @@ - - - - + + + @@ -216,118 +246,6 @@ - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - 1 - NAME - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 50 - 10 - - distance - - - - - - - - - - - - - - - false - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.vm index 305eac6082..e9c73c7d55 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.vm @@ -11,7 +11,11 @@ ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## Phil Kurimski 2-08-2013 revised CTA statements ## Evan Bookbinder 3-1-2013 missing $$ for Partial Cancellation +## Mike Dangelo 09-18-2013 added code for init pos & pathcasting, and added pointMarkers parse line +## Mike Dangelo 09-19-2013 implemented config.vm +## Gene Petrescu 09-20-2013 added AK modifications (GP comments) #################################### SET SOME VARs ################################### +#parse("config.vm") #set($hycType = "") #set($snowMelt = "") #set($floodReason = "") @@ -53,7 +57,11 @@ ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #elseif(${CORCAN}=="true") ${ugclinecan} @@ -61,7 +69,11 @@ ${ugclinecan} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #else ${ugcline} @@ -69,7 +81,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #end @@ -104,14 +120,24 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${hycType} != "") ${hycType} IN ## #end +###REMMED OUT FOR Alaska. This would output the headline in zone format #headlineLocList(${areas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${affectedCounties} true true true false) ${expcanHLTag}... +###UNCOMMENT LINE BELOW FOR AK - Temp fix until hydro shapefiles can be created +###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}... ## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE #elseif(${action}=="CANCON" || ${CORCAN}=="true") ...THE FLASH FLOOD WARNING FOR ## #if(${hycType} != "") ${hycType} IN ## #end +###REMMED OUT FOR Alaska. This would output the headline in zone format #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... +###UNCOMMENT LINE BELOW FOR AK - Temp fix until hydro shapefiles can be created +###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}... #end ############################ ## END CAN/EXP HEADLINE #### @@ -140,7 +166,11 @@ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -156,7 +186,11 @@ ${ugcline} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ /00000.0.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -173,21 +207,26 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") THIS IS A TEST MESSAGE.## #end -...THE FLASH FLOOD WARNING ## -#if(${hycType} != "") -FOR ${hycType} ## -#end -REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## -#headlineLocList(${areas} true true true false)... -############################################################################### -## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline # -############################################################################### +################################### +## Flash Flood Emergency Headline # +################################### #if(${list.contains(${bullets}, "ffwEmergency")}) #set($ctaSelected = "YES") ...THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!... #end +...THE FLASH FLOOD WARNING ## +#if(${hycType} != "") +FOR ${hycType} ## +#end +REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## +###REMMED OUT FOR Alaska. This would output the headline in zone format +#headlineLocList(${areas} true true true false)... +###REPLACE LINE ABOVE WITH THE FOLLOWING IF YOU USE COUNTY HEADLINE INSTEAD OF ZONES +###headlineLocList(${affectedCounties} true true true false)... +###UNCOMMENT LINE BELOW for AK - Temp fix until hydro shapefiles can be created +###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!... ################################################ ################################# @@ -297,19 +336,76 @@ REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimez #if(${list.contains(${bullets}, "satelliteGauge")} && ${list.contains(${bullets}, "thunder")}) #set($report = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED THAT THUNDERSTORMS WERE PRODUCING HEAVY RAIN OVER THE WARNED AREA.") #end +#if(${list.contains(${bullets}, "onlyGauge")}) + #set($report = "GAUGE REPORTS INDICATED THAT HEAVY RAIN WAS FALLING OVER THE WARNED AREA.") +#end +#if(${list.contains(${bullets}, "onlyGauge")} && ${list.contains(${bullets}, "thunder")}) + #set($report = "GAUGE REPORTS INDICATED THUNDERSTORMS WERE PRODUCING HEAVY RAIN OVER THE WARNED AREA.") +#end +#if(${list.contains(${bullets}, "onlyGauge")} && ${list.contains(${bullets}, "plainRain")}) + #set($report = "GAUGE REPORTS INDICATED HEAVY RAIN WAS FALLING OVER THE WARNED AREA.") +#end #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end +############## IF TRACK IS ENABLED AND stormPosition SELECTED ############################################### +#if(${list.contains(${bullets},"stormPosition")}) #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) -...${report} ${rainAmount} ${isExpected} ${snowMelt} +#if(${stormType} == "line") +...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) +#else +...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ## +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${movementSpeed} < ${landStationary} || ${stationary}) +...AND IS STATIONARY. ## +#else +#if(${stormType} == "line") +...AND MOVING ## +#else +...MOVING ## +#end +#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ## +#end +${rainAmount} ${isExpected} ${snowMelt} +#else +###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED ####################################### +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...${report} ${rainAmount} ${isExpected} ${snowMelt} +#end + +########################## +## Flash Flood Emergency # +########################## +#if(${list.contains(${bullets}, "ffwEmergency")} ) +#set($ctaSelected = "YES") +THIS IS A FLASH FLOOD EMERGENCY FOR !** LOCATION **!. SEEK HIGHER GROUND NOW! +#end ${burnScar} -############################################ -######## (CITY LIST) ######### -############################################ +###################################################### +######## OPTIONAL LOCATIONS/CITY LIST INFO ########## +###################################################### +############# IF TRACK IS ENABLED AND trackStorm AND stormPosition BOTH SELECTED ############################################### +#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#if($movementSpeed < 3 ) +#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#else +#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0) + +#end +#end +################ #if(${list.contains(${bullets}, "listofcities")}) +###set($phenomena = "FLASH FLOOD") +#set($floodType = "FLASH FLOODING") +###set($warningType = "WARNING") #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end @@ -323,7 +419,7 @@ THIS IS A TEST MESSAGE. ## ########### KEEP TWO BLANK LINES BELOW -########################################## END OF OPTIONAL FOURTH BULLET ############################## +########################################## END OF OPTIONAL LOCATIONS LISTS ############################## ###################################### ###### WHERE ADDITIONAL INFO GOES #### ###################################### @@ -342,6 +438,8 @@ FLOOD WATERS ARE MOVING DOWN !**name of channel**! FROM !**location**! TO !**loc ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") #################################### END OF ADDITIONAL STUFF ################################### ###################################### @@ -447,16 +545,16 @@ PLEASE REPORT FLOODING TO YOUR LOCAL LAW ENFORCEMENT AGENCY WHEN YOU CAN DO SO S #end #################################### END OF CTA STUFF ################################### - -########################################## -########BOTTOM OF THE PRODUCT############# -########################################## +######################## +## LAT/LON, TML, SIGN ## +######################## #if(${productClass}=="T") THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. #end -#set($COORDS = "#printcoords(${areaPoly}, ${list})") -${COORDS} + +#printcoords(${areaPoly}, ${list}) + $$ #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.xml index 078b34d0da..9284ac84ea 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/flashFloodWarningFollowup.xml @@ -1,19 +1,30 @@ - + + + + + + + + + mi mph @@ -49,6 +60,11 @@ true + +false + 30 @@ -83,17 +99,19 @@ - - + + - - + + + + @@ -103,10 +121,10 @@ - - - - + + + @@ -136,14 +154,16 @@ - - + + + + @@ -153,10 +173,10 @@ - - - + + @@ -176,118 +196,6 @@ - false - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - distance - - - - - - - - - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - - - - - - - - - warngenlev - population - distance - - - - - - NAME - AREA - POINTS - true - 10 - 200 - - name - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/forecasterName.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/forecasterName.vm index a07eb091ca..87f146d6b3 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/forecasterName.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/forecasterName.vm @@ -1,8 +1,8 @@ ##$user IS A GLOBAL VARIABLE CONTAINING THE WORKSTATION'S LOGIN USERNAME -#if(${user}=="yourawipslogin") -YOURNAME +#if(${user}=="ebookbin") +TEST #elseif(${user}=="hisawipslogin") SOMEONEELSESNAME #else !**NAME/INITIALS**! -#end \ No newline at end of file +#end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml new file mode 100644 index 0000000000..cff158ac8e --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml @@ -0,0 +1,202 @@ + + + + + County + 0 + AND + 0 + COUNTYNAME + NAME + STATE + FE_AREA + TIME_ZONE + countyTypes.txt + FIPS + NAME + + parent + + + + + + + 0 + + + + + Zone + INTERSECT + 0 + AND + 0 + NAME + NAME + STATE + FE_AREA + TIME_ZONE + countyTypes.txt + STATE_ZONE + NAME + + parent + + + + + + + 0 + + + + + + + NAME + AREA + POINTS + 1 + 100 + + + + + + + + + + distance + warngenlev + population + + + + + + NAME + AREA + POINTS + 5 + 100 + + + + + + + + + + distance + warngenlev + + + + + + AREA + 1 + true + 8.0 + 5 + 5 + 10 + 8 + Name + COUNTYNAME + STATE + STATE + countyTypes.txt + + warngenlev + population + distance + + + + + + + + + + + + + + NAME + 1 + AREA + TRACK + true + 10 + 10 + + distance + + + + + + + + + + + + + + TRACK + NAME + 1 + AREA + true + 20 + 10 + + + + + + + + + + warngenlev + population + distance + + + + + + WarnGenLoc + County + States + TIMEZONES + TIME_ZONE + + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_MARINE.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_MARINE.xml new file mode 100644 index 0000000000..652e170cc0 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_MARINE.xml @@ -0,0 +1,171 @@ + + + + + WarnGenLoc + MarineZones + MarineZones + TIMEZONES + TIME_ZONE + + + + + + MarineZones + 0 + AND + 0 + NAME + NAME + NAME + countyTypes.txt + ID + NAME + + parent + + + + + + + 0 + + + + + + + NAME + AREA + POINTS + 1 + 100 + + + + + + + + + + distance + warngenlev + + + + + + NAME + AREA + POINTS + + + + + + + + + 5 + 100 + + distance + warngenlev + + + + + + AREA + + false + 1 + 10.0 + 5 + 5 + 10 + 8 + Name + Name + Name + Name + countyTypes.txt + + warngenlev + distance + + + + + + + + + + + + + + NAME + 1 + AREA + TRACK + false + 10 + 10 + + distance + + + + + + + + + + + + + + NAME + 1 + AREA + TRACK + false + 20 + 10 + + + + + + + + + + distance + + + \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_ZONE.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_ZONE.xml new file mode 100644 index 0000000000..8f531db6bc --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/geospatialConfig_ZONE.xml @@ -0,0 +1,207 @@ + + + + + WarnGenLoc + Zone + States + TIMEZONES + TIME_ZONE + + + + + + Zone + 0 + AND + 0 + NAME + NAME + STATE + FE_AREA + TIME_ZONE + countyTypes.txt + STATE_ZONE + NAME + + parent + + + + + + + 0 + + + + + COUNTY + INTERSECT + 0 + AND + 0 + COUNTYNAME + NAME + STATE + FE_AREA + TIME_ZONE + countyTypes.txt + FIPS + NAME + + parent + + + + + + + 0 + + + + + + + NAME + AREA + POINTS + 1 + 100 + + + + + + + + + + distance + warngenlev + + + + + + NAME + AREA + POINTS + 5 + 100 + + + + + + + + + + distance + warngenlev + + + + + + AREA + 1 + true + 8.0 + 5 + 5 + 10 + 8 + Name + NAME + STATE + STATE + countyTypes.txt + + warngenlev + population + distance + + + + + + + + + + + + + + NAME + 1 + AREA + TRACK + true + 10 + 10 + + distance + + + + + + + + + + + + + + NAME + 1 + AREA + TRACK + true + 20 + 10 + + + + + + + + + + warngenlev + population + distance + + + + + + + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm index 2747fc4bb3..6a74dfd0e5 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm @@ -1,20 +1,16 @@ -################################################################ -## SEVERE THUNDERSTORM WARNING TEMPLATE ## -## FOR CR IMPACT BASED SVR INITIATIVE ## -## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- 2-21-2012 OB12.1.1-1 ## -## VERSION AWIPS II 1.1 -- 2-29-2012 OB12.2.1-4 ## -## VERSION AWIPS II 1.2 -- 4-20-2012 ## -## QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## -## VERSION AWIPS II 1.3 -- 2-04-2012 OB13.2.1-5 impact stmts ## -## VERSION AWIPS II 1.4 -- 5-20-2012 Addl IBW Changes ## -################################################################ +################################################################## +## SEVERE THUNDERSTORM WARNING TEMPLATE ## +## FOR CR IMPACT BASED SVR INITIATIVE ## +## CREATED BY PHIL KURIMSKI - WFO DTX ## +## UPDATED 9-18-2013 Implement global config.vm ## +################################################################## ## Commented out Impact statements Feb 2013 and created file to ## be parsed into the template called impactStatements.vm ## Changes to the impact statements can be made to this file ## instead of the template ################################################################ ## +#parse("config.vm") ##SET SOME INITIAL VARIABLES #set($hazard = "") #set($source = "") @@ -354,12 +350,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${reportType3} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) #if(${stormType} == "line") ...AND ARE NEARLY STATIONARY. #else @@ -424,10 +421,10 @@ THIS IS A TEST MESSAGE. ## ############################################## #if(${list.contains(${bullets}, "specialEvent")}) #if(${stormType} == "line") -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. #else -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. #end #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml index b620ec3999..d0bd8e2468 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml @@ -6,10 +6,24 @@ MIKE REGA 5-10-2012 DR 14525 added timeZoneField DR 14691 added feAreaField Evan Bookbinder 09-11-2012 Added settings for locations shapefile - Added new areaSource object + Added new areaSource object + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -170,10 +184,9 @@ - - - - + + + @@ -203,157 +216,4 @@ - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - POINTS - AREA - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - POINTS - AREA - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.vm index 1896e8cb3f..69093663ea 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.vm @@ -2,20 +2,17 @@ ## SEVERE WEATHER STATEMENT TEMPLATE ## ## FOR CR IMPACT BASED TOR/SVR INITIATIVE ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- 2-21-2012 OB12.1.1-1 ## -## VERSION AWIPS II 1.1 -- 2-29-2012 OB12.2.1-4 ## -## VERSION AWIPS II 1.2 -- 4-20-2012 ## -## VERSION AWIPS II 1.3 -- 9-13-2012 OB12.9.1-12 ## -## VERSION AWIPS II 1.4 -- 2-04-2012 OB13.2.1-5 impact stmts ## -## VERSION AWIPS II 1.5 -- Bookbinder 2-22-13 2013 IBW Changes## -## VERSION AWIPS II 1.6 -- Kurimski 5-20-13 2013 IBW Changes ## +## UPDATED Evan Bookbinder 2-22-13 2013 IBW Changes ## +## UPDATED -- Kurimski 5-20-13 2013 IBW Changes ## +## UPDATED -- Kurimski 9/17/13 Tor Emer Headline ## +## UPDATED -- Bookbinder 9/18/13 Implement config.vm ## ################################################################ ## Commented out Impact statements Feb 2013 and created file to ## be parsed into the template called impactStatements.vm ## Changes to the impact statements can be made to this file ## instead of the template ################################################################ -## +#parse("config.vm") ################################################################### ## Set null variables for wind/hail tags used in the template ## ################################################################### @@ -100,19 +97,33 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #elseif(${CORCAN}=="true") ${ugclinecan} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #else ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #end @@ -154,6 +165,8 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #elseif(${action}=="CANCON" || ${CORCAN}=="true") ...THE ${eventType} WARNING FOR ## #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... #end ############################ ## END CAN/EXP HEADLINE #### @@ -165,12 +178,12 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${action}=="EXP" || ${action}=="CAN" || ${action}=="CANCON" || ${CORCAN}=="true") #### SET A DEFAULT STATEMENT IN CASE NO BULLET WAS SELECTED OR AVAILABLE #if(${stormType} == "line") - #set($expcanPhrase = "THE LINE OF STORMS WHICH PROMPTED THE WARNING HAVE !** WEAKENED/MOVED OUT OF THE WARNED AREA **!. THEREFORE THE WARNING ${expcanBODYTag}.") + #set($expcanPhrase = "THE LINE OF STORMS WHICH PROMPTED THE WARNING HAVE !** WEAKENED. MOVED OUT OF THE WARNED AREA.**! THEREFORE THE WARNING ${expcanBODYTag}.") #else #if(${phenomena}=="SV") - #set($expcanPhrase = "THE SEVERE THUNDERSTORM WHICH PROMPTED THE WARNING HAS !** WEAKENED/MOVED OUT OF THE WARNED AREA **!. THEREFORE THE WARNING ${expcanBODYTag}.") + #set($expcanPhrase = "THE SEVERE THUNDERSTORM WHICH PROMPTED THE WARNING HAS !** WEAKENED. MOVED OUT OF THE WARNED AREA. **! THEREFORE THE WARNING ${expcanBODYTag}.") #else - #set($expcanPhrase = "THE TORNADIC THUNDERSTORM WHICH PROMPTED THE WARNING HAS !** WEAKENED/MOVED OUT OF THE WARNED AREA **!. THEREFORE THE WARNING ${expcanBODYTag}.") + #set($expcanPhrase = "THE TORNADIC THUNDERSTORM WHICH PROMPTED THE WARNING HAS !** WEAKENED. MOVED OUT OF THE WARNED AREA. **! THEREFORE THE WARNING ${expcanBODYTag}.") #end #end #### WEAKENED BELOW SEVERE LIMITS @@ -332,7 +345,11 @@ $$ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -347,7 +364,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugcline} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -356,19 +377,19 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ...THIS MESSAGE IS FOR TEST PURPOSES ONLY... #end +#end +##################################################################### +### TORNADO EMERGENCY HEADLINE # +##################################################################### +#if(${list.contains(${bullets}, "torEmergency")}) + +...TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... + #end #if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true") ...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false)... ########### END NEW HEADLINE CODE #################### -##################################################################### -### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE # -##################################################################### -#if(${list.contains(${bullets}, "torEmergency")}) - -...THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... - -#end #set($reportType = "!** BASIS FOR WARNING **!") #set($reportAuthSVR = "") ############### BASIS SECTION #################### @@ -831,12 +852,13 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...## ${reportType} LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) #if(${stormType} == "line") ...AND ARE NEARLY STATIONARY. #else diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.xml index bcf1832654..97516c2459 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSevereWeatherStatement.xml @@ -12,7 +12,8 @@ Evan Bookbinder 09-11-2012 Added settings for locations shapefile Added new areaSource object Phil Kurimski 02-04-2013 OB13.2.1-5 Changed Sig Tor to Considerable - Phil Kurimski 05-20-2013 Added selection for very weak tornadoes and landspouts + Phil Kurimski 05-20-2013 Added selection for very weak tornadoes and landspouts + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -230,10 +244,9 @@ - - - - + + + @@ -288,10 +301,9 @@ - - - - + + + @@ -369,10 +381,9 @@ - - - - + + + @@ -426,10 +437,9 @@ - - - - + + + @@ -459,156 +469,4 @@ - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - POINTS - AREA - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - POINTS - AREA - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - States - County - - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.vm new file mode 100644 index 0000000000..7efb6291b3 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.vm @@ -0,0 +1,499 @@ +##################################################### +## SPECIAL MARINE WARNING TEMPLATE ## +## FOR CR IMPACT BASED WARNING INITIATIVE ## +## CREATED BY PHIL KURIMSKI - WFO DTX ## +## UPDATED PHIL KURIMSKI -- SEP 17 2013 OB13.5.2-4 ## +## EVAN BOOKBINDER -- SEP 18 2013 Implemented config.vm +###################################################### +#parse("config.vm") +################################################ +## Set null variables used in the template +################################################ +#set($capable = "") +#set($ashfallPath = "") +#set($debrisflowPath = "") +#set($ashfallInfo = "") +#set($debrisflowInfo = "") +#set($ashfallCTA = "") +#set($spoutTag = "") +#set($source = "RADAR INDICATED.") +#set($extraSource = "") +#set($spoutThreat = "") +################################################ +## Set up override for ashfall warning +## This will change Special Marine Warning to +## Ashfall Warning Per the 10-313 Directive +################################################ +#if(${list.contains(${bullets}, "ashfall")}) + #set($ashfallHeadline = "ASHFALL WARNING FOR VOLCANIC ASH AND OTHER HAZARDS FOR...") +#end +################################################ +${WMOId} ${vtecOffice} 000000 ${BBBId} +SMW${siteId} +${ugcline} +/${productClass}.${action}.${vtecOffice}.MA.W.${etn}.${dateUtil.format(${start}, ${timeFormat.ymdthmz})}-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ + +BULLETIN - IMMEDIATE BROADCAST REQUESTED +#if(${productClass}=="T") +TEST...SPECIAL MARINE WARNING...TEST +#else +SPECIAL MARINE WARNING +#end +NATIONAL WEATHER SERVICE ${officeShort} +#backupText(${backupSite}) +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#headline(${officeLoc}, ${backupSite}) + +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +################################################## +## Override for Ashfall Warning +################################################## +#if(${ashfallHeadline}) +${ashfallHeadline} +#else +SPECIAL MARINE WARNING FOR... +#end +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) + ## +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## The following code will create a string of marine zone fips codes +## which will be important in combining marine zones +####################################################################### +####################################################################### +## Set the fipsstring variable to null for marine zone combinations +####################################################################### +#set($fipsstring = "") +#foreach (${area} in ${areas}) +#set($fipsstring = $fipsstring + $area.fips + "-") +#end +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +## Uncomment the parse command if you are combining your marine zones +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) + +####################################################################### +## List of Event Types. Added several events such as Shower...Cloud and Front. +## Removed Strong and Severe Thunderstorm selections and placed logic in the +## wind and hail selections that will change wording for Severe Thunderstorms. +####################################################################### +#set($eventType = "THUNDERSTORM") +#if(${list.contains(${bullets}, "thunderstorm")}) + #set($eventType = "THUNDERSTORM") + #set($severeType = "STRONG") +#end +#if(${list.contains(${bullets}, "shower")}) + #set($eventType = "SHOWER") +#end +#if(${list.contains(${bullets}, "cloud")}) + #set($eventType = "CLOUD") +#end +#if(${list.contains(${bullets}, "front")}) + #set($eventType = "FRONT") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($eventType = "VOLCANO") +#end +####################################################################### +## Added a Threat Section to the template that includes Wind...Hail +## and Waterspout selections. +## Strong Thunderstorm will change to Severe Thunderstorm automatically based on +## selections in Wind...Hail and Waterspout sections. +####################################################################### +#set($windTag = "<34") +#set($windCTA = "GUSTY WINDS") +#if(${list.contains(${bullets}, "34ktWind")}) + #set($windTag = ">34") + #set($windType = "WIND GUSTS 34 KNOTS OR GREATER") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "40ktWind")}) + #set($windTag = "40") + #set($windType = "WIND GUSTS TO 40 KNOTS") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "40ktplusWind")}) + #set($windTag = "49") + #set($windType = "WIND GUSTS TO NEARLY 50 KNOTS") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "50ktWind")}) + #set($windTag = "50") + #set($windType = "WIND GUSTS IN EXCESS OF 50 KNOTS") + #set($severeType = "SEVERE") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "65ktWind")}) + #set($windTag = "65") + #set($windType = "WIND GUSTS IN EXCESS OF 65 KNOTS") + #set($severeType = "SEVERE") + #set($windCTA = "${windType}") +#end +#set($hailTag = "0.00") +#set($hailCTA = "") +#if(${list.contains(${bullets}, "smallHail")}) + #set($hailTag = "<.75") + #set($hailType = "SMALL HAIL") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "largeHail")}) + #set($hailTag = ">.75") + #set($hailType = "LARGE HAIL") + #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "destructiveHail")}) + #set($hailTag = ">2.0") + #set($hailType = "LARGE DESTRUCTIVE HAIL") + #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "sightedSpout")}) + #set($spoutTag = "WATERSPOUT...OBSERVED") + #set($spoutType = "WATERSPOUTS") + #set($severeType = "SEVERE") +#end +#if(${list.contains(${bullets}, "possibleSpout")}) + #set($spoutTag = "WATERSPOUT...POSSIBLE") + #set($spoutType = "WATERSPOUTS") + #set($capable = "CAPABLE OF ") + #set($severeType = "SEVERE") +#end +################################################ +## Threat section for Volcanic Situations +################################################ +#if(${list.contains(${bullets}, "ashfall")}) + #set($ashfallType = "ASHFALL") + #set($ashfallPath = "VOLCANIC ASH") + #set($ctaSelected = "YES") + #set($ashfallCTA = "ASH IS AN EYE AND RESPIRATORY IRRITANT AND IS ABRASIVE. THOSE WITH RESPIRATORY SENSITIVITIES SHOULD TAKE EXTRA PRECAUTIONS TO MINIMIZE EXPOSURE. PROTECT ELECTRONICS AND COVER AIR INTAKES IF ASHFALL IS EXPECTED OR CONFIRMED. REMOVE ASH FROM SURFACES WITH WATER IF POSSIBLE TO PREVENT EXCESSIVE ACCUMULATION.") + #set($ashfallInfo = "AN ASHFALL WARNING MEANS THAT THE VOLCANO IS UNDERGOING A MAJOR ERUPTION. IT IS VERY LIKELY THAT MARINERS WILL BE AFFECTED BY VOLCANIC HAZARDS IN THE WARNING AREAS SUCH AS SIGNIFICANT DEBRIS...ASHFALL ONE QUARTER INCH OR GREATER...LAVA...OR LAHAR AND DEBRIS FLOWS.") +#end +#if(${list.contains(${bullets}, "debrisFlow")}) + #set($debrisflowType = "DEBRIS FLOW") + #set($debrisflowPath = "DEBRIS FLOW") + #set($debrisflowInfo = "THE ERUPTION OF THE VOLCANO CAN CAUSE A SUDDEN MELTING OF SNOW AND ICE ON THE MOUNTAIN. THIS WILL RESULT IN A TORRENT OF MUD...ASH...ROCK...AND HOT WATER TO FLOW DOWN THE MOUNTAIN AND INTO THE NEARBY WATERS.") +#end +################################################################################## +## Logic to put together the threats based on Wind...Hail and Waterspout sections. +################################################################################## +#if(${spoutType} && ${windType} && ${hailType}) + #set($threat = "${spoutType}...${windType} AND ${hailType}") +#elseif(${spoutType} && ${hailType}) + #set($threat = "${spoutType} AND ${hailType}") +#elseif(${spoutType} && ${windType}) + #set($threat = "${spoutType} AND ${windType}") +#elseif(${windType} && ${hailType}) + #set($threat = "${windType} AND ${hailType}") +#elseif(${spoutType}) + #set($threat = "${spoutType}") +#elseif(${windType}) + #set($threat = "${windType}") +#elseif(${hailType}) + #set($threat = "${hailType}") +#else + #set($threat = "!**YOU DID NOT SELECT ANY THREATS. PLEAST RE-GENERATE THIS WARNING!**!") +#end +#set($hazard = "${threat}.") +####################################################################### +## Logic for Volcanic Threats. If selected this will override any +## other selections for wind/hail/spouts. +####################################################################### +#if(${ashfallType} && ${debrisflowType}) + #set($threat = "${ashfallType} AND ${debrisflowType}") + #set($volcanoPath = "${ashfallPath} AND ${debrisflowPath}") +#elseif(${ashfallType}) + #set($threat = "${ashfallType}") + #set($volcanoPath = "${ashfallPath}") +#elseif(${debrisflowType}) + #set($threat = "${debrisflowType}") + #set($volcanoPath = "${debrisflowPath}") +#else +#end +######################################################################### +## Section to determine Thunderstorm Severity based on Threat Selections. +######################################################################### +#if(${eventType} == "THUNDERSTORM") + #set($thunderstormType = "${severeType} ${eventType}") + #set($eventType = "${thunderstormType}") +#end +####################################################################### +## Section to create line wording based on track type. +####################################################################### +#set($stormline = "A ${eventType}") +#set($pathheader = "THE ${eventType}") +#set($specialEvent = "THIS ${eventType}") +#set($reportType2 = "THE ${eventType} WAS") +#if(${stormType} == "line") + #set($stormline = "A LINE OF ${eventType}S") + #set($pathheader = "${eventType}S") + #set($specialEvent = "THESE ${eventType}S") + #set($reportType2 = "THE ${eventType}S WERE") +#end +########################################################################### +## Corrective coding to prevent the use of "Line of Fronts" in the Product. +########################################################################### +#if(${eventType} == "FRONT") + #set($stormline = "A ${eventType}") + #set($pathheader = "THE ${eventType}") + #set($specialEvent = "THIS ${eventType}") + #set($reportType2 = "THE ${eventType} WAS") +## #set($stormType = "") +#end +####################################################################### +## Coding for volcanos...this will override all other selections. +####################################################################### +#set($impacted = "LOCATIONS IMPACTED INCLUDE...") +#if(${eventType} == "VOLCANO") + #set($stormline = "AN ERUPTION OF !** NAME OF VOLCANO**! VOLCANO") + #set($pathheader = "THE ${volcanoPath}") + #set($reportType2 = "THE ${volcanoPath} WAS") + #set($specialEvent = "THE ${volcanoPath}") +## #set($stormType = "") + #set($impacted = "LOCATIONS IMPACTED BY ${volcanoPath} INCLUDE...") +#end +########################################################################## +## Basis section that incorporates line phenomena...capable vs producing +## and threat based on selections above. Added Satellite Imagery to basis. +########################################################################## +#set($report = "!** YOU DIDN'T SELECT A REPORTER **! ${eventType}") +#if(${list.contains(${bullets}, "doppler")}) + #set($source = "RADAR INDICATED.") + #set($capable = "CAPABLE OF ") +## #set($report = "DOPPLER RADAR INDICATED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "doppler")} && ${list.contains(${bullets}, "sightedSpout")}) +## #set($report = "DOPPLER RADAR INDICATED ${stormline}...PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "marineSpotter")}) + #set($source = "MARINE WEATHER SPOTTER.") +## #set($report = "MARINE WEATHER SPOTTERS REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "mariner")}) + #set($source = "MARINER.") +## #set($report = "A MARINER REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "public")}) + #set($source = "PUBLIC.") +## #set($report = "THE PUBLIC REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "pilot")}) + #set($source = "PILOT.") +## #set($report = "A PILOT REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "satellite")}) + #set($source = "SATELLITE IMAGERY INDICATED.") + #set($capable = "CAPABLE OF ") +## #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "satellite")} && ${list.contains(${bullets}, "sightedSpout")}) +## #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...PRODUCING ${threat}...") +#end +## If waterspouts are observed override the capable wording +#if(${list.contains(${bullets}, "sightedSpout")}) +#set($capable = "") +#end +## If waterspouts are selected include them in the AT... section of the product +#if($spoutTag.length() > 0) + #set($spoutThreat = " ${capable}PRODUCING ${spoutType}") +#end +#set($report = "${stormline}${spoutThreat}...") + +## Storm current location description + +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +...${report}LOCATED ## +#if(${stormType} == "line") +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) +#else +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${eventType} == "VOLCANO") +. +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) +. ${reportType2} NEARLY STATIONARY. +#else +...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. +#end + +############################################# +######## GENERATE ADDITIONAL REPORTS ####### +############################################# +#if(${list.contains(${bullets}, "addlRpt")}) +#set($extraSource = " AT !**enter time, phenomena**! WAS REPORTED !**enter location**!.") +#end +########################################################################## +## Command to parse the impact statements into the template +########################################################################## +#parse("impactStatements.vm") +################################### +## Section to include the hazard ## +################################### + +#wrapText("HAZARD...${hazard}" 2 11) + +#wrapText("SOURCE...${source}${extraSource}" 2 11) + +#wrapText("IMPACT...${smwimpact}" 2 11) + +${ashfallInfo} + +${debrisflowInfo} + +#set($eventType = "${pathheader}") +#set($warningType = "WARNING") +#if(${list.contains(${bullets}, "pathcast")}) +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#pathCast("${eventType} WILL BE NEAR..." ${eventType} ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#elseif(${list.contains(${bullets}, "listoflocations")}) +* ## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("${impacted}" "${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#end + +############################################## +###### SPECIAL VENUE/EVENT CASE ############## +############################################## + +#if(${list.contains(${bullets}, "specialEvent")}) +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#end +##################### +## CALL TO ACTIONS ## +##################### +####################################################################### +## Check to see if we've selected any calls to action. In our .xml file +## we ended each CTA bullet ID with "CTA" for this reason as a 'trip' +####################################################################### +#foreach (${bullet} in ${bullets}) +#if(${bullet.endsWith("CTA")}) +#set($ctaSelected = "YES") +#end +#end + +#if(${ctaSelected} == "YES") +PRECAUTIONARY/PREPAREDNESS ACTIONS... +#end +## + +${ashfallCTA} + +#if(${list.contains(${bullets}, "genericCTA")}) +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "gustyWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "nonThunderstormCTA")}) +MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. + +#end +#if(${list.contains(${bullets}, "waterspoutCTA")}) +THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY. + +#end +#if(${list.contains(${bullets}, "lightningCTA")}) +FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. + +#end +#if(${list.contains(${bullets}, "reportCTA")}) +REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE. + +#end +#if(${ctaSelected} == "YES") +&& +#end +############# +## WATCHES ## +############# + +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. +#end + +#printcoords(${areaPoly}, ${list}) + +#tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + +################################################################## +## Waterspout/Hail/Wind Tags used by CR for IBW +################################################################## + +#if($spoutTag.length() > 0) +${spoutTag} +#end +HAIL...${hailTag}IN +WIND...${windTag}KTS + +$$ + +#parse("forecasterName.vm") diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.xml new file mode 100644 index 0000000000..f32d251601 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarning.xml @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + nmi + kn + + + + Coastal Marine Zones + + + + + + NEW + COR + + + + + MA.W + + + + true + + + true + + + + torWatches + svrWatches + + + + 30 + + 10 + 15 + 20 + 25 + 30 + 40 + 45 + 60 + 90 + 120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm new file mode 100644 index 0000000000..312e7cab78 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm @@ -0,0 +1,1256 @@ +##################################################### +## SPECIAL MARINE WARNING FOLLOWUP ## +## FOR CR IMPACT BASED WARNING INITIATIVE ## +## CREATED BY PHIL KURIMSKI - WFO DTX ## +## UPDATED KURIMSKI SEP 17 2013 OB13.5.2-4 ## +## UPDATED BOOKBINDER 9-18-2013 Implemented config.vm +##################################################### +#parse("config.vm") +############################################ +## Set null variables used in the template +############################################ +#set($capable = "") +#set($windhailTag = "") +#set($ashfallPath = "") +#set($debrisflowPath = "") +#set($ashfallInfo = "") +#set($debrisflowInfo = "") +#set($ashfallCTA = "") +#set($ashCON = "") +#set($spoutTag = "") +#set($source = "RADAR INDICATED.") +#set($extraSource = "") +#set($spoutThreat = "") +################################################ +## Set up override for ashfall warning +## This will change Special Marine Warning to +## Ashfall Warning Per the 10-313 Directive +################################################ +#set($warningType = "SPECIAL MARINE WARNING") +#if(${list.contains(${bullets}, "ashfall")}) + #set($warningType = "ASHFALL WARNING FOR VOLCANIC ASH AND OTHER HAZARDS") + #set($ashCON = "N") +#end +################################################ +####################################################################### +## List of Event Types. Added several events such as Shower...Cloud and Front. +## Removed Strong and Severe Thunderstorm selections and placed logic in the +## wind and hail selections that will change wording for Severe Thunderstorms. +####################################################################### +#set($eventType = "THUNDERSTORM") +#if(${list.contains(${bullets}, "thunderstorm")}) + #set($eventType = "THUNDERSTORM") + #set($severeType = "STRONG") +#end +#if(${list.contains(${bullets}, "shower")}) + #set($eventType = "SHOWER") +#end +#if(${list.contains(${bullets}, "cloud")}) + #set($eventType = "CLOUD") +#end +#if(${list.contains(${bullets}, "front")}) + #set($eventType = "FRONT") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($eventType = "VOLCANO") +#end +####################################################################### +## Added a Threat Section to the template that includes Wind...Hail +## and Waterspout selections. +## Strong Thunderstorm will change to Severe Thunderstorm automatically based on +## selections in Wind...Hail and Waterspout sections. +####################################################################### +#set($windTag = "<34") +#set($windCTA = "GUSTY WINDS") +#if(${list.contains(${bullets}, "34ktWind")}) + #set($windTag = ">34") + #set($windType = "WIND GUSTS 34 KNOTS OR GREATER") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "40ktWind")}) + #set($windTag = "40") + #set($windType = "WIND GUSTS TO 40 KNOTS") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "40ktplusWind")}) + #set($windTag = "49") + #set($windType = "WIND GUSTS TO NEARLY 50 KNOTS") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "50ktWind")}) + #set($windTag = "50") + #set($windType = "WIND GUSTS IN EXCESS OF 50 KNOTS") + #set($severeType = "SEVERE") + #set($windCTA = "${windType}") +#end +#if(${list.contains(${bullets}, "65ktWind")}) + #set($windTag = "65") + #set($windType = "WIND GUSTS IN EXCESS OF 65 KNOTS") + #set($severeType = "SEVERE") + #set($windCTA = "${windType}") +#end +#set($hailTag = "0.00") +#set($hailCTA = "") +#if(${list.contains(${bullets}, "smallHail")}) + #set($hailTag = "<.75") + #set($hailType = "SMALL HAIL") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "largeHail")}) + #set($hailTag = ">.75") + #set($hailType = "LARGE HAIL") + #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "destructiveHail")}) + #set($hailTag = ">2.0") + #set($hailType = "LARGE DESTRUCTIVE HAIL") + #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") +#end +#if(${list.contains(${bullets}, "sightedSpout")}) + #set($spoutTag = "WATERSPOUT...OBSERVED") + #set($spoutType = "WATERSPOUTS") + #set($severeType = "SEVERE") +#end +#if(${list.contains(${bullets}, "possibleSpout")}) + #set($spoutTag = "WATERSPOUT...POSSIBLE") + #set($spoutType = "WATERSPOUTS") + #set($capable = "CAPABLE OF ") + #set($severeType = "SEVERE") +#end +################################################ +## Threat section for Volcanic Situations +################################################ +#if(${list.contains(${bullets}, "ashfall")}) + #set($ashfallType = "ASHFALL") + #set($ashfallPath = "VOLCANIC ASH") + #set($ctaSelected = "YES") + #set($ashfallCTA = "ASH IS AN EYE AND RESPIRATORY IRRITANT AND IS ABRASIVE. THOSE WITH RESPIRATORY SENSITIVITIES SHOULD TAKE EXTRA PRECAUTIONS TO MINIMIZE EXPOSURE. PROTECT ELECTRONICS AND COVER AIR INTAKES IF ASHFALL IS EXPECTED OR CONFIRMED. REMOVE ASH FROM SURFACES WITH WATER IF POSSIBLE TO PREVENT EXCESSIVE ACCUMULATION.") + #set($ashfallInfo = "AN ASHFALL WARNING MEANS THAT THE VOLCANO IS UNDERGOING A MAJOR ERUPTION. IT IS VERY LIKELY THAT MARINERS WILL BE AFFECTED BY VOLCANIC HAZARDS IN THE WARNING AREAS SUCH AS SIGNIFICANT DEBRIS...ASHFALL ONE QUARTER INCH OR GREATER...LAVA...OR LAHAR AND DEBRIS FLOWS.") +#end +#if(${list.contains(${bullets}, "debrisFlow")}) + #set($debrisflowType = "DEBRIS FLOW") + #set($debrisflowPath = "DEBRIS FLOW") + #set($debrisflowInfo = "THE ERUPTION OF THE VOLCANO CAN CAUSE A SUDDEN MELTING OF SNOW AND ICE ON THE MOUNTAIN. THIS WILL RESULT IN A TORRENT OF MUD...ASH...ROCK...AND HOT WATER TO FLOW DOWN THE MOUNTAIN AND INTO THE NEARBY WATERS.") +#end +################################################################################## +## Logic to put together the threats based on Wind...Hail and Waterspout sections. +################################################################################## +#if(${spoutType} && ${windType} && ${hailType}) + #set($threat = "${spoutType}...${windType} AND ${hailType}") +#elseif(${spoutType} && ${hailType}) + #set($threat = "${spoutType} AND ${hailType}") +#elseif(${spoutType} && ${windType}) + #set($threat = "${spoutType} AND ${windType}") +#elseif(${windType} && ${hailType}) + #set($threat = "${windType} AND ${hailType}") +#elseif(${spoutType}) + #set($threat = "${spoutType}") +#elseif(${windType}) + #set($threat = "${windType}") +#elseif(${hailType}) + #set($threat = "${hailType}") +#else + #set($threat = "!**YOU DID NOT SELECT ANY THREATS. PLEAST RE-GENERATE THIS WARNING!**!") +#end +#set($hazard = "${threat}.") +####################################################################### +## Logic for Volcanic Threats. If selected this will override any +## other selections for wind/hail/spouts. +####################################################################### +#if(${ashfallType} && ${debrisflowType}) + #set($threat = "${ashfallType} AND ${debrisflowType}") + #set($volcanoPath = "${ashfallPath} AND ${debrisflowPath}") +#elseif(${ashfallType}) + #set($threat = "${ashfallType}") + #set($volcanoPath = "${ashfallPath}") +#elseif(${debrisflowType}) + #set($threat = "${debrisflowType}") + #set($volcanoPath = "${debrisflowPath}") +#else +#end +######################################################################### +## Section to determine Thunderstorm Severity based on Threat Selections. +######################################################################### +#if(${eventType} == "THUNDERSTORM") + #set($thunderstormType = "${severeType} ${eventType}") + #set($eventType = "${thunderstormType}") +#end +####################################################################### +## Section to create line wording based on track type. +####################################################################### +#set($stormline = "A ${eventType}") +#set($pathheader = "THE ${eventType}") +#set($specialEvent = "THIS ${eventType}") +#set($reportType2 = "THE ${eventType} WAS") +#if(${stormType} == "line") + #set($stormline = "A LINE OF ${eventType}S") + #set($pathheader = "${eventType}S") + #set($specialEvent = "THESE ${eventType}S") + #set($reportType2 = "THE ${eventType}S WERE") +#end +########################################################################## +##Corrective coding to prevent the use of "Line of Fronts" in the Product. +########################################################################## +#if(${eventType} == "FRONT") + #set($stormline = "A ${eventType}") + #set($pathheader = "THE ${eventType}") + #set($specialEvent = "THIS ${eventType}") + #set($stormType = "") + #set($reportType2 = "THE ${eventType} WAS") +#end +####################################################################### +## Coding for volcanos...this will override all other selections. +####################################################################### +#set($impacted = "LOCATIONS IMPACTED INCLUDE...") +#if(${eventType} == "VOLCANO") + #set($stormline = "AN ERUPTION OF !** NAME OF VOLCANO**! VOLCANO") + #set($pathheader = "THE ${volcanoPath}") + #set($specialEvent = "THE ${volcanoPath}") + #set($reportType2 = "THE ${volcanoPath} WAS") + #set($stormType = "") + #set($impacted = "LOCATIONS IMPACTED BY ${volcanoPath} INCLUDE...") +#end +########################################################################## +## Basis section that incorporates line phenomena...capable vs producing +## and threat based on selections above. Added Satellite Imagery to basis. +########################################################################## +#set($report = "!** YOU DIDN'T SELECT A REPORTER **! ${eventType}") +#if(${list.contains(${bullets}, "doppler")}) + #set($source = "RADAR INDICATED.") + #set($capable = "CAPABLE OF ") +## #set($report = "DOPPLER RADAR INDICATED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "doppler")} && ${list.contains(${bullets}, "sightedSpout")}) +## #set($report = "DOPPLER RADAR INDICATED ${stormline}...PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "marineSpotter")}) + #set($source = "MARINE WEATHER SPOTTER.") +## #set($report = "MARINE WEATHER SPOTTERS REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "mariner")}) + #set($source = "MARINER.") +## #set($report = "A MARINER REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "public")}) + #set($source = "PUBLIC.") +## #set($report = "THE PUBLIC REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "pilot")}) + #set($source = "PILOT.") +## #set($report = "A PILOT REPORTED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "satellite")}) + #set($source = "SATELLITE IMAGERY INDICATED.") + #set($capable = "CAPABLE OF ") +## #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...${capable}PRODUCING ${threat}...") +#end +#if(${list.contains(${bullets}, "satellite")} && ${list.contains(${bullets}, "sightedSpout")}) +## #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...PRODUCING ${threat}...") +#end +## If waterspouts are observed override the capable wording +#if(${list.contains(${bullets}, "sightedSpout")}) +#set($capable = "") +#end +## If waterspouts are selected include them in the AT... section of the product +#if($spoutTag.length() > 0) + #set($spoutThreat = " ${capable}PRODUCING ${spoutType}") +#end +#set($report = "${stormline}${spoutThreat}...") +############################################# +######## GENERATE ADDITIONAL REPORTS ####### +############################################# +#if(${list.contains(${bullets}, "addlRpt")}) +#set($extraSource = " AT !**enter time, phenomena**! WAS REPORTED !**enter location**!.") +#end +########################################################################## +## Command to parse the impact statements into the template +########################################################################## +#parse("impactStatements.vm") +####################################################################### +## The following code will create a string of marine zone fips codes +## which will be important in combining marine zones +####################################################################### +####################################################################### +## Set the fipsstring variable to null for marine zone combinations +## This will only work for single CON/CAN/EXP products +## Combination CON/CAN will need additional code which will be +## included in the template below. +####################################################################### +#set($fipsstring = "") +#foreach (${area} in ${areas}) +#set($fipsstring = $fipsstring + $area.fips + "-") +#end +####################################################################### +## HEADER FOR NON-CAN/CON PRODUCTS +####################################################################### +## +#if(${action}=="COR" && ${cancelareas}) +#set($CORCAN = "true") +#else +#set($CORCAN = "false") +#end +#if(${action}!="CANCON" && ${CORCAN}!="true") +${WMOId} ${vtecOffice} 000000 ${BBBId} +MWS${siteId} + +#if(${productClass}=="T") +TEST...MARINE WEATHER STATEMENT...TEST +#else +MARINE WEATHER STATEMENT +#end +NATIONAL WEATHER SERVICE ${officeShort} +#backupText(${backupSite}) +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +${ugcline} +/${productClass}.${action}.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#end +## +####################################################################### +## MWS CANCEL PRODUCT +####################################################################### +## Altered cancellation headline for cleaner wording and to match +## NWS Directive 10-314 +####################################################################### +#if(${action}=="CAN") +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +...THE ${warningType} IS CANCELLED... + +THE AFFECTED AREAS WERE... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +## Uncomment the parse command if you are combining your marine zones +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +####################################################################### +## Setup eventType for wording in the End of Warning Statement +####################################################################### +#set($stormline = " HAS") +#set($pose = "POSES") +#if(${stormType} == "line") + #set($stormline = "S HAVE") + #set($pose = "POSE") +#end +#set($eventType = "!**STORMS**! HAVE") +#if(${list.contains(${bullets}, "thunderstorm")}) + #set($eventType = "THUNDERSTORM${stormline}") +#end +#if(${list.contains(${bullets}, "shower")}) + #set($eventType = "SHOWER${stormline}") +#end +#if(${list.contains(${bullets}, "cloud")}) + #set($eventType = "CLOUD${stormline}") +#end +#if(${list.contains(${bullets}, "front")}) + #set($eventType = "FRONT HAS") + #set($pose = "POSES") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($eventType = "VOLCANO HAS") + #set($pose = "POSES") +#end +####################################################################### +## Section for end of warning statements. Replaced default wording with +## a better defined reason for the end to the warning. +####################################################################### +#set($canwarning = "THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#if(${list.contains(${bullets}, "weakenedWarnEnd")}) + #set($canwarning = "THE ${eventType} WEAKENED AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "movedWarnEnd")}) + #set($canwarning = "THE ${eventType} MOVED OUT OF THE AREA AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($canwarning = "THE ${eventType} STOPPED ERUPTING AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end + +${canwarning} + +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#end +## +####################################################################### +## MWS CON PRODUCT +####################################################################### +## +#if(${action}=="CON" || (${action}=="COR" && ${CORCAN}=="false")) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +######################################################################## +## Altered continuation headline for cleaner wording and to match +## NWS Directive 10-314 +######################################################################## +...A${ashCON} ${warningType} REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})... + +FOR THE FOLLOWING AREAS... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +## Uncomment the parse command if you are combining your marine zones +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +## Storm current location description +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) +...${report}LOCATED ## +#if(${stormType} == "line") +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) +#else +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${eventType} == "VOLCANO") +. +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) +. ${reportType2} NEARLY STATIONARY. +#else +...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. +#end + +################################### +## Section to include the hazard ## +################################### +#wrapText("HAZARD...${hazard}" 0 9) + +#wrapText("SOURCE...${source}${extraSource}" 0 9) + +#wrapText("IMPACT...${smwimpact}" 0 9) + +${ashfallInfo} + +${debrisflowInfo} + +################################################### +######## GENERATE PATHCAST OR CITIES LIST ######### +################################################### +#set($eventType = "${pathheader}") +#set($warningType = "WARNING") +#if(${list.contains(${bullets}, "pathcast")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#pathCast("${eventType} WILL BE NEAR..." ${eventType} ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#elseif(${list.contains(${bullets}, "listoflocations")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("${impacted}" "${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#end +############################################## +###### SPECIAL VENUE/EVENT CASE ############## +############################################## + +#if(${list.contains(${bullets}, "specialEvent")}) +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#end +##################### +## CALL TO ACTIONS ## +##################### +####################################################################### +## Check to see if we've selected any calls to action. In our .xml file +## we ended each CTA bullet ID with "CTA" for this reason as a 'trip' +####################################################################### +#foreach (${bullet} in ${bullets}) +#if(${bullet.endsWith("CTA")}) +#set($ctaSelected = "YES") +#end +#end +## +#if(${ctaSelected} == "YES") + +PRECAUTIONARY/PREPAREDNESS ACTIONS... +#end +## + +${ashfallCTA} + +#if(${list.contains(${bullets}, "genericCTA")}) +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "gustyWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "nonThunderstormCTA")}) +MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. + +#end +#if(${list.contains(${bullets}, "waterspoutCTA")}) +THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY. + +#end +#if(${list.contains(${bullets}, "lightningCTA")}) +FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. + +#end +#if(${list.contains(${bullets}, "reportCTA")}) +REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE. + +#end +#if(${ctaSelected} == "YES") +&& +#end +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#end +## +## ##################################################################### +## MWS CAN/CON PRODUCT +## ##################################################################### +## Altered cancellation headline for cleaner wording and to match +## NWS Directive 10-314 +######################################################################## +#if(${action}=="CANCON") +${WMOId} ${vtecOffice} 000000 ${BBBId} +MWS${siteId} + +#if(${productClass}=="T") +TEST...MARINE WEATHER STATEMENT...TEST +#else +MARINE WEATHER STATEMENT +#end +NATIONAL WEATHER SERVICE ${officeShort} +#backupText(${backupSite}) +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +${ugclinecan} +/${productClass}.CAN.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +...THE ${warningType} IS CANCELLED... + +THE AFFECTED AREAS WERE... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${cancelareas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## The following code will create a string of marine zone fips codes +## which will be important in combining marine zones +## This has to be done again since the CAN/CON section uses cancelareas +####################################################################### +####################################################################### +## Set the fipsstring variable to null for marine zone combinations +####################################################################### +#set($fipsstring = "") +#foreach (${area} in ${cancelareas}) +#set($fipsstring = $fipsstring + $area.fips + "-") +#end +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +## Uncomment the parse command if you are combining your marine zones +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +###################################################################### +## Setup eventType for wording in the End of Warning Statement +###################################################################### +#set($stormline = " HAS") +#set($pose = "POSES") +#if(${stormType} == "line") + #set($stormline = "S HAVE") + #set($pose = "POSE") +#end +#set($eventType = "!**STORMS**! HAVE") +#if(${list.contains(${bullets}, "event1")}) + #set($eventType = "THUNDERSTORM${stormline}") +#end +#if(${list.contains(${bullets}, "event3")}) + #set($eventType = "SHOWER${stormline}") +#end +#if(${list.contains(${bullets}, "event4")}) + #set($eventType = "CLOUD${stormline}") +#end +#if(${list.contains(${bullets}, "event5")}) + #set($eventType = "FRONT HAS") + #set($pose = "POSES") +#end +####################################################################### +## Replaced default end of warning wording. +####################################################################### + +THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. + +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. + +#end +#printcoords(${areaPoly}, ${list}) + +#tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + + +$$ + +${ugcline} +/${productClass}.CON.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +######################################################################## +## Altered continuation headline for cleaner wording and to match +## NWS Directive 10-314 +######################################################################## +...A${ashCON} ${warningType} REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})... + +FOR THE FOLLOWING AREAS... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## The following code will create a string of marine zone fips codes +## which will be important in combining marine zones +## This has to be done again since the CAN/CON section uses cancelareas +####################################################################### +####################################################################### +## Set the fipsstring variable to null for marine zone combinations +####################################################################### +#set($fipsstring = "") +#foreach (${area} in ${areas}) +#set($fipsstring = $fipsstring + $area.fips + "-") +#end +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}LOCATED ## +#if(${stormType} == "line") +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) +#else +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${eventType} == "VOLCANO") +. +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) +. ${reportType2} NEARLY STATIONARY. +#else +...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. +#end + +################################### +## Section to include the hazard ## +################################### +#wrapText("HAZARD...${hazard}" 0 9) + +#wrapText("SOURCE...${source}${extraSource}" 0 9) + +#wrapText("IMPACT...${smwimpact}" 0 9) + +${ashfallInfo} + +${debrisflowInfo} + +################################################### +######## GENERATE PATHCAST OR CITIES LIST ######### +################################################### +#set($eventType = "${pathheader}") +#set($warningType = "WARNING") +#if(${list.contains(${bullets}, "pathcast")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#pathCast("${eventType} WILL BE NEAR..." ${eventType} ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#elseif(${list.contains(${bullets}, "listoflocations")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("${impacted}" "${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#end + +############################################## +###### SPECIAL VENUE/EVENT CASE ############## +############################################## + +#if(${list.contains(${bullets}, "specialEvent")}) +#if(${stormType} == "line") +THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#else +THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#end +#end +##################### +## CALL TO ACTIONS ## +##################### +####################################################################### +## Check to see if we've selected any calls to action. In our .xml file +## we ended each CTA bullet ID with "CTA" for this reason as a 'trip' +####################################################################### +#foreach (${bullet} in ${bullets}) +#if(${bullet.endsWith("CTA")}) +#set($ctaSelected = "YES") +#end +#end +## +#if(${ctaSelected} == "YES") + +PRECAUTIONARY/PREPAREDNESS ACTIONS... +#end +## + +${ashfallCTA} + +#if(${list.contains(${bullets}, "genericCTA")}) +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "gustyWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "nonThunderstormCTA")}) +MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. + +#end +#if(${list.contains(${bullets}, "waterspoutCTA")}) +THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY. + +#end +#if(${list.contains(${bullets}, "lightningCTA")}) +FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. + +#end +#if(${list.contains(${bullets}, "reportCTA")}) +REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE. + +#end +#if(${ctaSelected} == "YES") +&& +#end +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#elseif(${CORCAN} == "true") +${WMOId} ${vtecOffice} 000000 ${BBBId} +MWS${siteId} +#if(${productClass}=="T") +TEST...MARINE WEATHER STATEMENT...TEST +#else +MARINE WEATHER STATEMENT +#end +NATIONAL WEATHER SERVICE ${officeShort} +#backupText(${backupSite}) +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +${ugclinecan} +/${productClass}.COR.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +...THE ${warningType} IS CANCELLED... + +THE AFFECTED AREAS WERE... +#foreach (${area} in ${cancelareas}) +${area.name}... +#end + +###################################################################### +## Setup eventType for wording in the End of Warning Statement +###################################################################### +#set($stormline = " HAS") +#set($pose = "POSES") +#if(${stormType} == "line") + #set($stormline = "S HAVE") + #set($pose = "POSE") +#end +#set($eventType = "!**STORMS**! HAVE") +#if(${list.contains(${bullets}, "event1")}) + #set($eventType = "THUNDERSTORM${stormline}") +#end +#if(${list.contains(${bullets}, "event3")}) + #set($eventType = "SHOWER${stormline}") +#end +#if(${list.contains(${bullets}, "event4")}) + #set($eventType = "CLOUD${stormline}") +#end +#if(${list.contains(${bullets}, "event5")}) + #set($eventType = "FRONT HAS") + #set($pose = "POSES") +#end +####################################################################### +## Replaced default end of warning wording. +####################################################################### + +THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. + +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. + +#end +#printcoords(${areaPoly}, ${list}) + +#tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + + +$$ + +${ugcline} +/${productClass}.COR.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end + +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +######################################################################## +## Altered continuation headline for cleaner wording and to match NWS Directive 10-314 +######################################################################## +...A${ashCON} ${warningType} REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})... + +FOR THE FOLLOWING AREAS... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}LOCATED ## +##Many of the variables passed below are controlled by config.vm +#if(${stormType} == "line") +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) +#else +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) +#end +#if(${eventType} == "VOLCANO") +. +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) +. ${reportType2} NEARLY STATIONARY. +#else +...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. +#end + +################################### +## Section to include the hazard ## +################################### +#wrapText("HAZARD...${hazard}" 0 9) + +#wrapText("SOURCE...${source}${extraSource}" 0 9) + +#wrapText("IMPACT...${smwimpact}" 0 9) + +${ashfallInfo} + +${debrisflowInfo} + +################################################### +######## GENERATE PATHCAST OR CITIES LIST ######### +################################################### +#set($eventType = "${pathheader}") +#set($warningType = "WARNING") +#if(${list.contains(${bullets}, "pathcast")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#pathCast("${eventType} WILL BE NEAR..." ${eventType} ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#elseif(${list.contains(${bullets}, "listoflocations")}) +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. ## +#end +#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN +#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT +#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE +#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! +#locationsList("${impacted}" "${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) + +#end + +############################################## +###### SPECIAL VENUE/EVENT CASE ############## +############################################## + +#if(${list.contains(${bullets}, "specialEvent")}) +#if(${stormType} == "line") +THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#else +THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. + +#end +#end +##################### +## CALL TO ACTIONS ## +##################### +####################################################################### +## Check to see if we've selected any calls to action. In our .xml file +## we ended each CTA bullet ID with "CTA" for this reason as a 'trip' +####################################################################### +#foreach (${bullet} in ${bullets}) +#if(${bullet.endsWith("CTA")}) +#set($ctaSelected = "YES") +#end +#end +## +#if(${ctaSelected} == "YES") + +PRECAUTIONARY/PREPAREDNESS ACTIONS... +#end +## + +${ashfallCTA} + +#if(${list.contains(${bullets}, "genericCTA")}) +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "gustyWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "nonThunderstormCTA")}) +MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. + +#end +#if(${list.contains(${bullets}, "waterspoutCTA")}) +THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY. + +#end +#if(${list.contains(${bullets}, "lightningCTA")}) +FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. + +#end +#if(${list.contains(${bullets}, "reportCTA")}) +REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE. + +#end +#if(${ctaSelected} == "YES") +&& +#end +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#end +## +## ##################################################################### +## MWS EXP PRODUCT +## ##################################################################### +## Altered expiration headline for cleaner wording and to match NWS Directive 10-314 +######################################################################## +#if(${action}=="EXP") +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +...THE ${warningType} ## +#if(${now.compareTo(${expire})} > -1) +EXPIRED AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}... +#else +WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}... +#end + +THE AFFECTED AREAS WERE... +#foreach (${area} in ${areas}) +${area.name}... +#end + +###################################################################### +## Setup eventType for wording in the End of Warning Statement +###################################################################### +#set($stormline = " HAS") +#set($pose = "POSES") +#if(${stormType} == "line") + #set($stormline = "S HAVE") + #set($pose = "POSE") +#end +#set($eventType = "!**STORMS**! HAVE") +#if(${list.contains(${bullets}, "thunderstorm")}) + #set($eventType = "THUNDERSTORM${stormline}") +#end +#if(${list.contains(${bullets}, "shower")}) + #set($eventType = "SHOWER${stormline}") +#end +#if(${list.contains(${bullets}, "cloud")}) + #set($eventType = "CLOUD${stormline}") +#end +#if(${list.contains(${bullets}, "front")}) + #set($eventType = "FRONT HAS") + #set($pose = "POSES") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($eventType = "VOLCANO HAS") + #set($pose = "POSES") +#end + +####################################################################### +## Section for end of warning statements. Replaced default wording with +## a better defined reason for the end to the warning. +####################################################################### +#set($expwarning = "THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#if(${list.contains(${bullets}, "weakenedWarnEnd")}) + #set($expwarning = "THE ${eventType} WEAKENED AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "movedWarnEnd")}) + #set($expwarning = "THE ${eventType} MOVED OUT OF THE AREA AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($expwarning = "THE ${eventType} STOPPED ERUPTING AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end + +${expwarning} + +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#end + +## +## ##################################################################### +## END OF MWS PRODUCTS +## ##################################################################### +## +#if(${productClass}=="T") +THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. + +#end + +#printcoords(${areaPoly}, ${list}) + +#tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + +################################################################## +## Waterspout/Hail/Wind Tags used by CR for IBW +################################################################## + +#if($spoutTag.length() > 0) +${spoutTag} +#end +HAIL...${hailTag}IN +WIND...${windTag}KTS + +$$ + +#parse("forecasterName.vm") diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml new file mode 100644 index 0000000000..282c828cb2 --- /dev/null +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + nmi + kn + + + + Coastal Marine Zones + + + + + COR + CON + CAN + EXP + + + + + MA.W + + + + false + + + true + + + + torWatches + svrWatches + + + + + 30 + + 30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactStatements.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactStatements.vm index 47d0c6abcb..da4ff95233 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactStatements.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactStatements.vm @@ -5,6 +5,7 @@ ## VERSION AWIPS II 1.0 -- 2-06-2013 OB13.2.1-5 ## ## EDITED EVAN BOOKBINDER 2-25-13 FOR IBW 2013 ## ## EDITED PHIL KURIMSKI 5-20-13 FOR UPDATED IMPACT STATEMENTS ## +## EDITED PHIL KURIMSKI 9-17-13 FOR SMW IMPACT STATEMENTS ## ################################################################ ## ################################################################ @@ -15,6 +16,7 @@ ##SET SOME INITIAL VARIABLES #set ($svrimpact = "") #set ($torimpact = "") +#set ($smwimpact = "") ################################################################ ## First create the Impact Statements for the SVR template ################################################################ @@ -107,6 +109,10 @@ #elseif(${phenomena}=="TO") #set ($svrimpact = "") #end +################################################################ +## Finally create the Impact Statements for the SMW template +################################################################ +#set($smwimpact = "OVERTURNED AND CAPSIZED BOATS.") ############################################################################ ## End of File ############################################################################ diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.vm index a62a306e89..292b2a12fd 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.vm @@ -1,15 +1,13 @@ -################################################################ -## TORNADO WARNING TEMPLATE ## -## FOR CR IMPACT BASED TOR INITIATIVE ## -## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- 2-21-2012 OB12.1.1-1 ## -## VERSION AWIPS II 1.1 -- 2-29-2012 OB12.2.1-4 ## -## VERSION AWIPS II 1.2 -- 4-20-2012 ## -## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ## -## VERSION AWIPS II 1.3 -- 2-04-2012 OB13.2.1-5 impact stmts ## -## VERSION AWIPS II 1.4 -- Bookbinder 2/22/13 2013 IBW Changes## -## VERSION AWIPS II 1.5 -- Kurimski 5/20/13 Addl IBW Changes ## -################################################################ +########################################################## +## TORNADO WARNING TEMPLATE ## +## FOR CR IMPACT BASED TOR INITIATIVE ## +## CREATED BY PHIL KURIMSKI - WFO DTX ## +## UPDATED -- 2-04-2012 OB13.2.1-5 impact stmts ## +## UPDATED -- Bookbinder 2/22/13 2013 IBW Changes ## +## UPDATED -- Kurimski 5/20/13 Addl IBW Changes ## +## UPDATED -- Kurimski 9/17/13 Tor Emer Headline ## +## UPDATED -- Bookbinder 9/18/2013 implement config.vm ## +########################################################## ## Commented out Impact statements Feb 2013 and created file to ## be parsed into the template called impactStatements.vm ## Changes to the impact statements can be made to this file @@ -17,6 +15,7 @@ ################################################################ ## ESTABLISH SOME INITIAL VARIABLES ############################ ################################################################ +#parse("config.vm") #set($preAmble = "") #set($hailSize = 0) #set($reportType = "A TORNADO WAS REPORTED") @@ -201,14 +200,13 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #end ########################################################################## -### TORNADO EMERGENCY as a Headline...can be implemented at a later date # +### TORNADO EMERGENCY Headline # ########################################################################## -#* #if(${list.contains(${bullets}, "torEmergency")}) ...TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... #end -*# + #headline(${officeLoc}, ${backupSite}) ################## @@ -446,12 +444,13 @@ THIS IS A TEST MESSAGE. ## THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...${reportType} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) #if(${stormType} == "line") ...AND ARE NEARLY STATIONARY. #else @@ -521,10 +520,10 @@ THIS IS A TEST MESSAGE. ## ############################################## #if(${list.contains(${bullets}, "specialEvent")}) #if(${stormType} == "line") -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS AND POTENTIALLY LIFE THREATENING WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS AND POTENTIALLY LIFE THREATENING WEATHER CONDITIONS. SEEK SHELTER NOW. #else -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS AND POTENTIALLY LIFE THREATENING WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS AND POTENTIALLY LIFE THREATENING WEATHER CONDITIONS. SEEK SHELTER NOW. #end #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.xml index b800109806..b586372932 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/impactTornadoWarning.xml @@ -8,11 +8,25 @@ Evan Bookbinder 09-11-2012 Added settings for locations shapefile Added new areaSource objects Phil Kurimski 02-04-2013 OB13.2.1-5 Changed Sig Tor to Considerable - Phil Kurimski 05-20-2013 Added selection for very weak tornadoes and landspouts + Phil Kurimski 05-20-2013 Added selection for very weak tornadoes and landspouts + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -114,7 +128,7 @@ - + @@ -178,15 +192,14 @@ - - - - + + + - + @@ -203,156 +216,5 @@ - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.vm index 8d286c26ba..5cea94e171 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.vm @@ -1,18 +1,15 @@ ##################################################### ## MARINE WEATHER STATEMENT STANDALONE ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- FEB 24 2011 OB11.2 ## -## VERSION AWIPS II 1.1 -- APR 14 2011 OB11.4 ## -## VERSION AWIPS II 1.2 -- JUL 14 2011 OB11.7 ## -## VERSION AWIPS II 1.3 -- SEP 22 2011 OB11.8 ## -## VERSION AWIPS II 1.4 -- JAN 25 2012 OB12.1.1-1 ## -## Added coding for no headline in Version 1.4 ## ## VERSION AWIPS II 1.5 -- MAR 2 2012 OB12.2.1-4 ## ## Added coding for dense fog in Version 1.5 ## ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND) ## ## Phil Kurimski -- SEP 10 2012 OB12.9.1-12 ## -## Phil Kurimski FEB 07 2013 OB13.2.1-5 ## +## Phil Kurimski -- FEB 07 2013 OB13.2.1-5 ## +## Phil Kurimski -- SEP 17 2013 OB13.5.2-4 ## +## Evan Bookbinder -- SEP 18 2013 Implemented config.vm ##################################################### +#parse("config.vm") ## Set the visibility variable to be used for dense fog ## This variable can be changed by the local office and will ## set the visibility in the 3rd bullet and dense fog CTA @@ -269,12 +266,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report} ${reportLocation} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${marineStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. @@ -304,7 +302,7 @@ THIS IS A TEST MESSAGE. ## ############################################## #if(${list.contains(${bullets}, "specialEvent")}) -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. #end ##################### @@ -327,24 +325,49 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS... ## #if(${list.contains(${bullets}, "genericCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS UP TO 33 KNOTS...LOCALLY HIGHER WAVES...AND LIGHTNING STRIKES. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY UNTIL THESE STORMS PASS. + +#else MARINERS CAN EXPECT GUSTY WINDS UP TO 33 KNOTS...LOCALLY HIGHER WAVES...AND LIGHTNING STRIKES. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY UNTIL THIS STORM PASSES. +#end #end #if(${list.contains(${bullets}, "heavyRainCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS UP TO 33 KNOTS...LOCALLY HIGHER WAVES...LIGHTNING STRIKES...AND HEAVY DOWNPOURS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY UNTIL THESE STORMS PASS. + +#else MARINERS CAN EXPECT GUSTY WINDS UP TO 33 KNOTS...LOCALLY HIGHER WAVES...LIGHTNING STRIKES...AND HEAVY DOWNPOURS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY UNTIL THIS STORM PASSES. +#end #end #if(${list.contains(${bullets}, "possibleSmwCTA")}) +#if(${stormType} == "line") +THIS ${stormline} WILL LIKELY PRODUCE WINDS UP TO 33 KNOTS...AND COULD POSE A SERIOUS HAZARD FOR BOATERS. A SPECIAL MARINE WARNING MAY EVENTUALLY BE REQUIRED WHEN THESE STORMS REACH THE NEARSHORE WATERS. BOATERS SHOULD CONSIDER HEADING FOR SHORE BEFORE THESE STORMS ARRIVE. + +#else THIS ${stormline} WILL LIKELY PRODUCE WINDS UP TO 33 KNOTS...AND COULD POSE A SERIOUS HAZARD FOR BOATERS. A SPECIAL MARINE WARNING MAY EVENTUALLY BE REQUIRED WHEN THIS STORM REACHES THE NEARSHORE WATERS. BOATERS SHOULD CONSIDER HEADING FOR SHORE BEFORE THE STORM ARRIVES. +#end #end #if(${list.contains(${bullets}, "likelySmwCTA")}) +#if(${stormType} == "line") +THIS ${stormline} WILL LIKELY PRODUCE WINDS IN EXCESS OF 34 KNOTS...AND IS LIKELY TO POSE A SERIOUS HAZARD FOR BOATERS. A SPECIAL MARINE WARNING WILL LIKELY BE REQUIRED WHEN THESE STORMS REACH THE NEARSHORE WATERS. BOATERS SHOULD CONSIDER HEADING FOR SHORE BEFORE THESE STORMS ARRIVE. + +#else THIS ${stormline} WILL LIKELY PRODUCE WINDS IN EXCESS OF 34 KNOTS...AND IS LIKELY TO POSE A SERIOUS HAZARD FOR BOATERS. A SPECIAL MARINE WARNING WILL LIKELY BE REQUIRED WHEN THIS STORM REACHES THE NEARSHORE WATERS. BOATERS SHOULD CONSIDER HEADING FOR SHORE BEFORE THE STORM ARRIVES. +#end #end #if(${list.contains(${bullets}, "lightningCTA")}) +#if(${stormType} == "line") +INTENSE LIGHTNING IS OCCURRING WITH THESE STORMS. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. + +#else INTENSE LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS. +#end #end #if(${list.contains(${bullets}, "reportCTA")}) REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE FORECAST OFFICE. diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.xml index 672c287c51..94af0ead79 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatement.xml @@ -3,9 +3,22 @@ Phil Kurimski WFO DTX 27 February 2012 Evan Bookbinder 09-11-2012 Added settings for locations shapefile Added new areaSource objects + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + nmi @@ -76,7 +89,7 @@ - + @@ -116,7 +129,7 @@ - + @@ -139,8 +152,7 @@ - - + @@ -156,147 +168,4 @@ - - - MarineZones - 0 - AND - 0 - NAME - NAME - NAME - countyTypes.txt - ID - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - WARNGENLEV - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - WARNGENLEV - - - - - - 1 - false - 10.0 - 5 - 5 - 4 - 8 - Name - AREA - Name - Name - Name - countyTypes.txt - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 20 - 20 - - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 10 - 20 - - distance - - - - - - - - - - - - - - WarnGenLoc - MarineZones - MarineZones - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm index aefb1522dc..74a156b1e8 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm @@ -6,9 +6,13 @@ ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND) ## ## Phil Kurimski SEP 10 2012 OB12.9.1-12 ## ## Phil Kurimski FEB 07 2013 OB13.2.1-5 ## -###################################################### +## Phil Kurimski SEP 16 2013 OB13.5.2-4 ## +## Evan Bookbinder SEP 18 2013 Implemented config.vm ## +######################################################### +#parse("config.vm") +########################################## ## Set null variables used in the template -######################################### +########################################## #set($capable = "") #set($hailType = "") #if(${productClass}=="O") @@ -153,12 +157,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${marineStationary} || ${stationary}) . NEARLY STATIONARY. #else MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml index f40e6cea45..f8d740f5a9 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml @@ -4,8 +4,22 @@ Customized by Tom Birchard WFO DTX 23 September 2011 for Ashfall Evan Bookbinder 09-11-2012 Added settings for locations shapefile Added new areaSource objects + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + nmi kn @@ -124,8 +138,7 @@ - - + @@ -136,147 +149,4 @@ - - - MarineZones - 0 - AND - 0 - NAME - NAME - NAME - countyTypes.txt - ID - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - WARNGENLEV - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - WARNGENLEV - - - - - - false - 1 - 10.0 - 5 - 5 - 4 - 8 - Name - AREA - Name - Name - Name - countyTypes.txt - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 20 - 20 - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 20 - - distance - - - - - - - - - - - - - - WarnGenLoc - MarineZones - MarineZones - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.vm index a4393346bd..96104c8885 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.vm @@ -1,75 +1,76 @@ #* -CREATED 1-25-2012 BY MIKE DANGELO AND EVAN BOOKBINDER +CREATED 9-16-2013 BY EVAN BOOKBINDER +### THIS PLUG-IN VM FILE ALLOWS YOU TO CONSOLIDATE ALL YOUR +### MILEMARKER/EXIT/ROUTE OUTPUT INTO A SINGLE FUNCTION CALL +### A #parse("mileMarkers.vm") entry in your WarnGen .vm templates will thus +### generate any milemarker info intersected by your warning polygon. -Here are some examples of very simple INTERSTATE output - (one line/sentence per interstate): - -#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","MILE MARKER",false) -#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","MILE MARKER",true) -#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","",false) -#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","",true) -#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","",false) -#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","",true) -#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","MILE MARKER",false) -#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","MILE MARKER",true) - -Mile Marker Test Code -macro "mmarkers" use (called out of VM_global_library.vm): -#mmarkers($name, $id, $type, $markers, $simplify) -where the argument: +##GENERAL INFORMATION## +Mile Marker Macro (VM_global_library.vm): +#macro(mmarkers $markers $id $name $type $simplify) +$markers is a string, and is the exact "variable" set in the XML "pointSource" tag for this road + - +$id is the sequential ID database field to determine logical breaks in the mile markers + set in the XML "pointSource" tag for this road + - $name is a string "OUTPUT TEXT" of the road name -$id is the sequential ID database field to determine logical breaks in the mile markers $type is a string which describes the type of "marker" - may be "MILE MARKER" or something similar, or blank "" - "" is for use when town names (CHARLESTON) or exit names (THE SUNSET EXIT) -$markers is a string, and is the exact "variable" set in the XML "pointSource" tag for this road - - $simplify is a boolean value (true or false) - true concatenates (FROM MM 2 to 4), - false is a big list (MM 2...3...AND 4) -From mileMarkers.xml -$databaseName is an array of pointSource objects containing the milemarker names -$databaseId is an array of pointSource objects containing the milemarker IDs -$specificName is an array of plain English names for the Interstates, Routes, etc.. -e.g. -#set ($databaseName = [${i435mm},${i70momm},${i35momm}]) -#set ($databaseId = [${i435mmid},${i70mommid},${i35mommid}]) -#set ($specificName = ['INTERSTATE 435','INTERSTATE 70','INTERSTATE 35']) +########################### +CONFIGURATION: +########################### +#COMMENT OUT LINES 61-64 BELOW AS NEEDED, REPLACING/ADDING TO THE EXAMPLE WITH YOUR +#MILE MARKER/ROUTE ENTRIES +#EACH LINE CONTAINS A VARIABLE MM1,MM2,MM3,etc... REFERENCING AN ARRAY (LIST) OF DATA THAT +#WILL BE PASSED TO THE MMARKERS ROUTINE. -The following code makes upkeep of the mile marker files easier, and is - reccomended for use. -Substitute all your "INTERSTATE NAME(s)" into the array: $specificName -Likewise, -Substitute all your corresponding database table names (${tablename}) for those - interstates into the array: $databaseName -You may also use town names or exit names - in the "name" field of your database tables. +The items in the array are as follows: +1.) java Object - A pointSource object from mileMarkers.xml containing the milemarker names +2.) java Object - A pointSource object from mileMarkers.xml containing the milemarker IDs or index +3.) String - A plain English name for the Interstates, Routes, etc.. +4.) String - A plain English name describing the output (mile marker, exit, etc...) + Can be blank ''. Make sure the singular phrase is used (an "S" will be auto-applied for + plural values. e.g. MILE MARKERS 3 AND 10 +5.) Boolean - A true/false value telling the function whether to group the milemarkers where + possible, or list them individually. For mile markers that are text (such as exits or + intersections, false might be a better option) + +NOTE: PLEASE ENSURE PROPER SYNTAX. Java Objects are ${variable}, Text Strings are 'TEXT', and + Booleans are true/false (no quote)..see examples below + ALSO ENSURE THAT EACH LINE CONTAINS A UNIQUE VARIABLE NAME: MM1, MM2, MM3, etc.. + + +HERE IS AN EXAMPLE: + e.g. + #set ($mm1 = [${i435mm},${i435mmid},'INTERSTATE 435','MILE MARKER',true]) + #set ($mm2 = [${i70momm},${i70mommid},'INTERSTATE 70 IN MISSOURI','MILE MARKER',true]) + #set ($mm3 = [${route22mm},${route22mmid},'ROUTE 22','EXIT',true]) + +After creating these, we must create a match list containing all of our variable names + e.g. + #set ($varList = [$mm1,$mm2,$mm3]) *# + #set($hits = 0) #set($bigList = '') -##set ($databaseName = [${i435mm},${i70momm},${i35momm}]) -##set ($databaseId = [${i435mmid},${i70mommid},${i35mommid}]) -##set ($specificName = ['INTERSTATE 435','INTERSTATE 70','INTERSTATE 35']) -#set ($itemCount = 0) -#foreach($specName in $specificName) -#set ($itemCount = $itemCount + 1) -#set ($itemCount2 = 0) -#foreach($dbName in $databaseName) -#set ($itemCount2 = $itemCount2 + 1) -#set ($itemCount3 = 0) -#foreach($dbId in $databaseId) -#set ($itemCount3 = $itemCount3 + 1) -#if ($itemCount3 == $itemCount2 && $itemCount2 == $itemCount) -#set ($checker = "#mmarkers(${dbName},${dbId},${specName},'MILE MARKER',true)") + +##set ($mm1 = [${i435mm},${i435mmid},'INTERSTATE 435','MILE MARKER',true]) +##set ($mm2 = [${i70momm},${i70mommid},'INTERSTATE 70 IN MISSOURI','MILE MARKER',true]) +##set ($mm3 = [${i35momm},${i35mommid},'INTERSTATE 70 IN KANSAS','MILE MARKER',true]) +##set ($varList = [$mm1,$mm2,$mm3]) + +#foreach ($var in $varList) +#set ($checker = "#mmarkers(${list.get(${var},0)},${list.get(${var},1)},${list.get(${var},2)},${list.get(${var},3)},${list.get(${var},4)})") #if ($checker.length() > 0) #set ($hits = $hits + 1) #set ($bigList = "$bigList $checker") #end #end -#end -#end -#end #if ($hits == 1) THIS INCLUDES$bigList #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.xml index ff97807137..ae1f732c41 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/mileMarkers.xml @@ -1,29 +1,45 @@ \ No newline at end of file + --> + \ No newline at end of file diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm index a850bd864e..7c85ae101a 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm @@ -1,18 +1,18 @@ ###################################################### ## DAM BREAK FFW TEMPLATE ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 - APR 13 2011 OB11.4 ## -## VERSION AWIPS II 1.1 - JUL 14 2011 OB11.7 ## -## VERSION AWIPS II 1.2 - AUG 18 2011 OB11.8 ## -## VERSION AWIPS II 1.3 - SEP 23 2011 OB11.8 ## +## RECENT VERSION HISTORY: ## VERSION AWIPS II 1.4 - SEP 13 2012 OB12.9.1-12 ## ## to add Flash Flood Emergency Headline ## ## VERSION AWIPS II 1.5 - FEB 08 2013 OB13.2.1-5 ## ## to update CTA statements ## ## VERSION AWIPS II 1.6 - JUN 26 2013 OB13.4.1 ## ## to add "U" Unknown servity ## +## VERSION AWIPS II 1.7 - SEP 17 2013 OB13.5.2-4 ## +## Phil Kurimski - Added FFW Emergency Headline ## ###################################################### ## +#parse("config.vm") #if(${action} == "EXT") #set($starttime = "000000T0000Z") #set($extend = true) @@ -42,6 +42,7 @@ #set($ruleofthumb = "") #set($sitespecCTA = "") #set($volcanoCTA = "") +#set($emergencyHeadline = "!** ENTER LOCATION **!") #if(${list.contains(${bullets}, "levee")}) #set($ic = "DM") #set($hycType = "A LEVEE FAILURE") @@ -96,78 +97,9 @@ #end ######################################################################### ## Parse command to include a damInfo.vm file with site specific dam -## information. Sites can include this information in a separate file or -## include in the template per the coding below. +## information. Sites can include their information in this file. ######################################################################### ##parse ("damInfo.vm") -#* -######################################################################### -## The next section is for site specific dams. Each site should take the -## example below and customize it for their dams with the information -## from the LLL-damInfo.txt file in AWIPS 1. If you have any questions -## please contact Phil Kurimski - WFO DTX -######################################################################### -#if(${list.contains(${bullets}, "BigRockDam")}) - #set($riverName = "PHIL RIVER") - #set($damName = "BIG ROCK DAM") - #set($cityInfo = "EVAN...LOCATED ABOUT 3 MILES") -#end -#if(${list.contains(${bullets}, "BigRockhighfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 18 FEET IN 16 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockhighnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 23 FEET IN 31 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockmediumfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 14 FEET IN 19 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockmediumnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 17 FEET IN 32 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockruleofthumb")}) - #set($ruleofthumb = "FLOOD WAVE ESTIMATE BASED ON THE DAM IN IDAHO: FLOOD INITIALLY HALF OF ORIGINAL HEIGHT BEHIND DAM AND 3-4 MPH; 5 MILES IN 1/2 HOURS; 10 MILES IN 1 HOUR; AND 20 MILES IN 9 HOURS.") -#end -#if(${list.contains(${bullets}, "BranchedOakDam")}) - #set($riverName = "KELLS RIVER") - #set($damName = "BRANCHED OAK DAM") - #set($cityInfo = "DANGELO...LOCATED ABOUT 6 MILES") -#end -#if(${list.contains(${bullets}, "BranchedOakhighfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 19 FEET IN 32 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakhighnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 26 FEET IN 56 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakmediumfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 14 FEET IN 33 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakmediumnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 20 FEET IN 60 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakruleofthumb")}) - #set($ruleofthumb = "FLOOD WAVE ESTIMATE BASED ON THE DAM IN IDAHO: FLOOD INITIALLY HALF OF ORIGINAL HEIGHT BEHIND DAM AND 3-4 MPH; 5 MILES IN 1/2 HOURS; 10 MILES IN 1 HOUR; AND 20 MILES IN 9 HOURS.") -#end -####################################################################### -## Look for site specific selections to override the 4th bullet and -## to set up the headlines and additional info used in the product. -## This loop assumes you end each site specific selection with -## the word "Dam". If you end with a different word you will need -## to modify the loop below. -######################################################################## -#foreach (${bullet} in ${bullets}) -#if(${bullet.endsWith("Dam")}) - #set($ctaSelected = "YES") - #set($sitespecSelected = "YES") - #set($hycType = "THE ${riverName} BELOW ${damName}") - #set($reportType1 = "${reportType2} ${damName} ON THE ${riverName}") - #set($addInfo = "THE NEAREST DOWNSTREAM TOWN IS ${cityInfo} FROM THE DAM.") - #set($sitespecCTA = "IF YOU ARE IN LOW LYING AREAS BELOW THE ${damName} YOU SHOULD MOVE TO HIGHER GROUND IMMEDIATELY.") -#end -#end -####################################################################### -## End of Site Specific Dam Information -####################################################################### -*# ## ${WMOId} ${vtecOffice} 000000 ${BBBId} FFW${siteId} @@ -189,15 +121,14 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ...THIS MESSAGE IS FOR TEST PURPOSES ONLY... #end -############################################################################# -## Flash Flood Emergency Headline...can be implemented at a later date # -############################################################################# -#* +#################################### +## Flash Flood Emergency Headline # +#################################### #if(${list.contains(${bullets}, "ffwEmergency")} ) -...FLASH FLOOD EMERGENCY FOR !** LOCATION **!... +...FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... #end -*# + #headlineext(${officeLoc}, ${backupSite}, ${extend}) * ## @@ -248,7 +179,7 @@ THIS IS A TEST MESSAGE. ## ## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # ########################################################################## #if(${list.contains(${bullets}, "ffwEmergency")}) -#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!. SEEK HIGHER GROUND NOW! THIS IS A POTENTIALLY LIFE THREATENING SITUATION!" 2 2) +#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW!" 2 2) #end #set($phenomena = "FLASH FLOOD") diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml index 6edf1e7b75..8040086cc1 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml @@ -13,9 +13,22 @@ Modified Phil Kurimski 02-05-2013 Reordered GUI selections to make more sense Added additional valid duration times Modified Evan Bookbinder 06-26-2013 Added "U" Unknown severity - + Modified Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -178,9 +191,7 @@ - - - + @@ -250,13 +261,12 @@ - - - + - + + @@ -296,117 +306,6 @@ false - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - - - - - - - - - distance - - - - - NAME - 1 - AREA - POINTS - true - 30 - 200 - - warngenlev - population - distance - - - - - - - - - - - - - - NAME - AREA - POINTS - true - 10 - 200 - - distance - - - - - - - - - - - - - - - - - WarnGenLoc - County - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.vm index 0fc9fa4781..3571a5cf6f 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.vm @@ -8,8 +8,10 @@ ## Phil Kurimski -- SEP 23 2011 OB11.0.8-8 ## ## Mike Rega -- MAY 03 2012 DR 14885 MND ## ## Phil Kurimski -- FEB 08 2013 CTA stmnts ## +## Phil Kurimski -- SEP 17 2013 FFW Emerg ## ##################################################### ## +#parse("config.vm") #set($headline = "") ## set reportType2 to a default value in case nothing is selected for site specific #set($reportType2 = "THE FAILURE OF") @@ -22,6 +24,7 @@ #set($sitespecCTA = "") #set($addInfo = "") #set($volcanoCTA = "") +#set($emergencyHeadline = "!** ENTER LOCATION **!") #if(${list.contains(${bullets}, "levee")}) #set($ic = "DM") #set($hycType = "A LEVEE FAILURE") @@ -99,79 +102,9 @@ #end ######################################################################### ## Parse command to include a damInfo.vm file with site specific dam -## information. Sites can include this information in a separate file or -## include in the template per the coding below. +## information. Sites can include their information in this file. ######################################################################### ##parse ("damInfo.vm") -#* -######################################################################### -## The next section is for site specific dams. Each site should take the -## example below and customize it for their dams with the information -## from the LLL-damInfo.txt file in AWIPS 1. If you have any questions -## please contact Phil Kurimski - WFO DTX -######################################################################### -#if(${list.contains(${bullets}, "BigRockDam")}) - #set($riverName = "PHIL RIVER") - #set($damName = "BIG ROCK DAM") - #set($cityInfo = "EVAN...LOCATED ABOUT 3 MILES") -#end -#if(${list.contains(${bullets}, "BigRockhighfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 18 FEET IN 16 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockhighnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 23 FEET IN 31 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockmediumfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 14 FEET IN 19 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockmediumnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT EVAN COULD EXCEED 17 FEET IN 32 MINUTES.") -#end -#if(${list.contains(${bullets}, "BigRockruleofthumb")}) - #set($ruleofthumb = "FLOOD WAVE ESTIMATE BASED ON THE DAM IN IDAHO: FLOOD INITIALLY HALF OF ORIGINAL HEIGHT BEHIND DAM AND 3-4 MPH; 5 MILES IN 1/2 HOURS; 10 MILES IN 1 HOUR; AND 20 MILES IN 9 HOURS.") -#end -#if(${list.contains(${bullets}, "BranchedOakDam")}) - #set($riverName = "KELLS RIVER") - #set($damName = "BRANCHED OAK DAM") - #set($cityInfo = "DANGELO...LOCATED ABOUT 6 MILES") -#end -#if(${list.contains(${bullets}, "BranchedOakhighfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 19 FEET IN 32 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakhighnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 26 FEET IN 56 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakmediumfast")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 14 FEET IN 33 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakmediumnormal")}) - #set($scenario = "IF A COMPLETE FAILURE OF THE DAM OCCURS...THE WATER DEPTH AT DANGELO COULD EXCEED 20 FEET IN 60 MINUTES.") -#end -#if(${list.contains(${bullets}, "BranchedOakruleofthumb")}) - #set($ruleofthumb = "FLOOD WAVE ESTIMATE BASED ON THE DAM IN IDAHO: FLOOD INITIALLY HALF OF ORIGINAL HEIGHT BEHIND DAM AND 3-4 MPH; 5 MILES IN 1/2 HOURS; 10 MILES IN 1 HOUR; AND 20 MILES IN 9 HOURS.") -#end -####################################################################### -## Look for site specific selections to override the 4th bullet and -## to set up the headlines and additional info used in the product. -## This loop assumes you end each site specific selection with -## the word "Dam". If you end with a different word you will need -## to modify the loop below. -######################################################################## -#foreach (${bullet} in ${bullets}) -#if(${bullet.endsWith("Dam")}) - #set($ctaSelected = "YES") - #set($sitespecSelected = "YES") - #set($hycType = "THE ${riverName} BELOW ${damName}") - #set($headline = "FOR ${reportType2} ${damName} ON THE ${riverName} ") - #set($reportType1 = "${reportType2} ${damName} ON THE ${riverName}") - #set($addInfo = "THE NEAREST DOWNSTREAM TOWN IS ${cityInfo} FROM THE DAM.") - #set($sitespecCTA = "IF YOU ARE IN LOW LYING AREAS BELOW THE ${damName} YOU SHOULD MOVE TO HIGHER GROUND IMMEDIATELY.") -#end -#end -####################################################################### -## End of Site Specific Dam Information -####################################################################### -*# #################################### ## DAM BREAK FFW FOLLOW-UP HEADER ## #################################### @@ -197,7 +130,11 @@ ${ugcline} /${productClass}.${action}.${vtecOffice}.FF.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.${floodseverity}.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -226,6 +163,14 @@ ${endwarning} #if(${action}=="CON" || (${action}=="COR" && ${CORCAN}=="false")) #if(${productClass}=="T") THIS IS A TEST MESSAGE.## +#end +##################################### +## Flash Flood Emergency Headline # +##################################### +#if(${list.contains(${bullets}, "ffwEmergency")}) + +...FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... + #end ...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false) @@ -233,15 +178,7 @@ THIS IS A TEST MESSAGE.## ########### END NEW HEADLINE CODE #################### -############################################################################### -## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline # -############################################################################### -#if(${list.contains(${bullets}, "ffwEmergency")}) - -...THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!... - -#end ##################################################### ## Changed report to match selections in template ##################################################### @@ -271,6 +208,13 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ${report}. +########################################################################## +## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # +########################################################################## +#if(${list.contains(${bullets}, "ffwEmergency")}) +THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW! + +#end #set($phenomena = "FLASH FLOOD") #set($warningType = "WARNING") ########################################################################## @@ -412,7 +356,11 @@ ${ugclinecan} /${productClass}.CAN.${vtecOffice}.FF.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.${floodseverity}.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -438,28 +386,31 @@ ${ugcline} /${productClass}.CON.${vtecOffice}.FF.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.${floodseverity}.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") THIS IS A TEST MESSAGE.## +#end +################################### +## Flash Flood Emergency Headline # +################################### +#if(${list.contains(${bullets}, "ffwEmergency")}) + +...FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... + #end ...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false) ...## ########### END NEW HEADLINE CODE #################### - -############################################################################### -## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline # -############################################################################### -#if(${list.contains(${bullets}, "ffwEmergency")}) - -...THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!... - -#end ##################################################### ## Changed report to match selections in template ##################################################### @@ -489,6 +440,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ${report}. +########################################################################## +## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # +########################################################################## +#if(${list.contains(${bullets}, "ffwEmergency")}) +THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW! + +#end #set($phenomena = "FLASH FLOOD") #set($warningType = "WARNING") ########################################################################## @@ -618,7 +576,11 @@ ${ugclinecan} /${productClass}.COR.${vtecOffice}.FF.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.${floodseverity}.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -645,28 +607,31 @@ ${ugcline} /${productClass}.COR.${vtecOffice}.FF.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ /00000.${floodseverity}.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") THIS IS A TEST MESSAGE.## +#end +################################### +## Flash Flood Emergency Headline # +################################### +#if(${list.contains(${bullets}, "ffwEmergency")}) + +...FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}... + #end ...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ## #headlineLocList(${areas} true true true false) ...## ########### END NEW HEADLINE CODE #################### - -############################################################################### -## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline # -############################################################################### -#if(${list.contains(${bullets}, "ffwEmergency")}) - -...THIS IS A FLASH FLOOD EMERGENCY FOR !**ENTER LOCATION**!... - -#end ##################################################### ## Changed report to match selections in template ##################################################### @@ -696,6 +661,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ${report}. +########################################################################## +## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet # +########################################################################## +#if(${list.contains(${bullets}, "ffwEmergency")}) +THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW! + +#end #set($phenomena = "FLASH FLOOD") #set($warningType = "WARNING") ########################################################################## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.xml index c71e43b29c..bed994a85f 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/nonConvectiveFlashFloodWarningFollowup.xml @@ -8,10 +8,24 @@ Evan Bookbinder 09-11-2012 Added settings for locations shapefile Added areaSource object Modified Phil Kurimski 02-05-2013 Reordered GUI selections to make more sense + Modified Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -181,11 +195,9 @@ - - - - - + + + @@ -256,11 +268,9 @@ - - - - - + + + @@ -310,120 +320,6 @@ false - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - - ffmp_basins 0.064 diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.vm index dba2ab4ab9..ddf4eecd29 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.vm @@ -1,18 +1,15 @@ ################################################################ ## SEVERE THUNDERSTORM WARNING TEMPLATE ## ## CREATED BY EVAN BOOKBINDER - WFO EAX ## -## VERSION HISTORY -- 3-24-2011 INITIAL OB11.2 REWRITE ## -## 4-12-2011 OB11.4 MODIFICATIONS ## -## 7-11-2011 OB11.7 MODIFICATIONS ## -## 9-15-2011 OB11.8.0-8 PATHCAST/CITY ## -## 11-04-2011 OB11.9-3 (DRs) ## -## 2-24-2012 OB12.2.1 CLEANUP ## -## BY QINGLU LIN 6-18-2012 DR 15043 use duration ## +## RECENT VERSION HISTORY ## ## BY QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## ## Mike Dangelo 9-13-2012 minor tweaks to some ${variables}## ## Mike Dangelo 2-4-2013 NWS Mets detected a svr ## +## Evan Bookbinder 9-16-2013 Fixed CTA ## +## Evan Bookbinder 9-18-2013 Implemented config.vm ## ################################################################ ## +#parse("config.vm") ##SET SOME INITIAL VARIABLES #if(${stormType} == "line") #set($report = "A LINE OF SEVERE THUNDERSTORMS WAS REPORTED") @@ -247,12 +244,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report}${hailwind}. ${reportType2} LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. ${smallHail} #else ...AND MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ${smallHail} @@ -295,10 +293,9 @@ THE CORRECT LOCATIONS BULLET SELECTED **!. #end ## Uncomment below pull in mile marker info -##parse("mileMarkers.vm") +## #parse("mileMarkers.vm") ## Uncomment below pull in point marker info -##parse("pointMarkers.vm") -## #pmarkers(${locpointsName},${locpointsGid}, "THE FOLLOWING", "VENUE", false) +## #parse("pointMarkers.vm") ## ############################################## @@ -342,7 +339,7 @@ SEVERE THUNDERSTORMS PRODUCE DAMAGING WINDS...DESTRUCTIVE HAIL...DEADLY LIGHTNIN ## #if(${list.contains(${bullets}, "canProduceTornadoesCTA")}) #if(${stormType} == "line") -DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THESE STORMS. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR +DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THESE STORMS. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR ROOM. #else DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THIS STORM. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR ROOM. @@ -486,6 +483,7 @@ THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. #printcoords(${areaPoly}, ${list}) #tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + ## UNCOMMENT 2 LINES BELOW IF PARTICIPATING IN THE WIND/HAIL TAG EXPERIMENT ## ##${windhailTag} diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.xml index d1f760aa59..bf18698b4a 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeThunderstormWarning.xml @@ -10,9 +10,24 @@ Evan Bookbinder 09-11-2012 Added settings for locations shapefile Create new areaSource objects Mike Dangelo 2-4-2013 Added commented bullet for METS DETECTED + Phil Kurimski 09-16-2013 Fixed some spelling errors + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -104,16 +119,16 @@ - - + + - - + + @@ -146,10 +161,8 @@ - @@ -162,18 +175,17 @@ - - - - + + + - - + + @@ -192,160 +204,4 @@ - - - County - 0.00 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.vm index 1130d2d0a1..b27a3611b6 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.vm @@ -1,23 +1,19 @@ ################################################################# ## SEVERE WEATHER STATEMENT TEMPLATE ## ## CREATED BY EVAN BOOKBINDER - WFO EAX ## -## MODIFIED INITIAL OB11.4 REWRITE - 4-13-2011 ## -## HEADLINE MACRO REWRITE 8-17-2011 OB11.8.4 ## -## PATHCAST/CITIES CHANGES 9-15-2011 OB11.8.0-8 ## -## BY PHIL KURIMSKI 9-22-2011 OB11.8.0-8 ## -## BY EVAN BOOKBINDER 11-04-2011 OB11.9-3 ## -## BY EVAN BOOKBINDER 2-24-2012 OB12.2.1 ## -## BY MIKE REGA 5-3-2012 DR 14885 MND blank line ## -## BY QINGLU LIN 6-18-2012 DR 15043 use duration ## -## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad## +## RECENT HISTORY: ## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## ## Mike Dangelo 2-5-2013 NWS Mets Detected options ## ## PHIL KURIMSKI 2-6-2013 Tor emergency preamble ## +## EVAN BOOKBINDER 9-16-2013 CTA WORDING FIX ## +## PHIL KURIMSKI 9-17-2013 Tor emergency headline ## +## EVAN BOOKBINDER 9-18-2013 Implemented config.vm ## ################################################################# ## ################################################################### ## Set null variables for wind/hail tags used in the template ## ################################################################### +#parse("config.vm") #set($windhailTag = "") #set($TORhailTag = "") ############################################################################### @@ -79,19 +75,33 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugclinecan} /${productClass}.CAN.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #elseif(${CORCAN}=="true") ${ugclinecan} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${cancelareas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end +-## +#end + #else ${ugcline} /${productClass}.${action}.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire},${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end #end @@ -133,6 +143,8 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #elseif(${action}=="CANCON" || ${CORCAN}=="true") ...THE ${eventType} WARNING FOR ## #headlineLocList(${cancelareas} true true true false) ${expcanHLTag}... +###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE +###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}... #end ############################ ## END CAN/EXP HEADLINE #### @@ -310,7 +322,11 @@ $$ ${ugcline} /${productClass}.CON.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -325,7 +341,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ${ugcline} /${productClass}.COR.${vtecOffice}.${phenomena}.W.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz})}/ #foreach (${area} in ${areas}) -${area.name} ${area.stateabbr}-## +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## +#end +-## #end ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} @@ -334,18 +354,19 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} ...THIS MESSAGE IS FOR TEST PURPOSES ONLY... #end +#end +##################################################################### +### TORNADO EMERGENCY HEADLINE # +##################################################################### +#if(${list.contains(${bullets}, "torEmergency")}) + +...TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... + #end #if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true") ...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone},${duration}) FOR ## #headlineLocList(${areas} true true true false)... ########### END NEW HEADLINE CODE #################### -##################################################################### -### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE # -##################################################################### -#if(${list.contains(${bullets}, "torEmergency")}) -...THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... - -#end #set($reportType = "!** BASIS FOR WARNING **!") #set($reportAuthSVR = "") ############### BASIS SECTION #################### @@ -614,15 +635,24 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${reportType}${hailwind}. ## ${reportType2} LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. ${smallHail}${TORHailThreat} #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ${smallHail}${TORHailThreat} +#end + +##################################################################### +### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE GOES WITH 3RD BULLET # +##################################################################### +#if(${list.contains($bullets, "torEmergency")}) +THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!. TAKE COVER NOW. + #end ############################################# ######## GENERATE ADDITIONAL REPORTS ####### @@ -690,6 +720,8 @@ THOSE ATTENDING THE !**now/venue name or location**! ARE IN THE PATH OF THIS STO ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") ################################## ######### CALLS TO ACTION ######## @@ -768,7 +800,7 @@ SEVERE THUNDERSTORMS PRODUCE DAMAGING WINDS...DESTRUCTIVE HAIL...DEADLY LIGHTNIN ## #if(${list.contains(${bullets}, "canProduceTornadoesCTA")}) #if(${stormType} == "line") -DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THESE STORMS. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR +DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THESE STORMS. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR ROOM. #else DOPPLER RADAR HAS INDICATED SOME WEAK ROTATION WITHIN THIS STORM. ALTHOUGH A TORNADO IS NOT IMMEDIATELY LIKELY...IF ONE IS SPOTTED...ACT QUICKLY AND MOVE TO A PLACE OF SAFETY IN A STURDY STRUCTURE...SUCH AS A BASEMENT OR SMALL INTERIOR ROOM. diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.xml index e94414c988..e870e42fc2 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/severeWeatherStatement.xml @@ -8,6 +8,7 @@ Qinglu Lin 04-04-2012 DR 14691. Added tag. Evan Bookbinder 09-11-2012 Added settings for locations shapefile Mike Dangelo 2-5-2013 NWS Mets Detected options (commented by default) + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -217,10 +231,9 @@ - - - - + + + @@ -276,16 +289,15 @@ - - - - + + + - + @@ -346,10 +358,9 @@ - - - - + + + @@ -403,17 +414,16 @@ - - - - + + + - + @@ -433,158 +443,4 @@ - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - 1 - NAME - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - - WarnGenLoc - States - County - - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.vm index f954dae9d5..4097824fae 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.vm @@ -2,12 +2,14 @@ ## SHORT TERM FORECAST ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## ## VERSION AWIPS II 1.0 -- AUG 19 2011 OB11.8 ## -## EDITED BY MIKE DANGELO 2-27-2012 ## -## EDITED BY Phil Kurimski 3-01-2012 OB12.2.1-4 ## +## EDITED BY MIKE DANGELO 2-27-2012 +## EDITED BY Phil Kurimski 3-01-2012 OB12.2.1-4 ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND) -## Mike Dangelo 9-13-2012 minor tweaks to ${variables} -################################################## +## Mike Dangelo 9-13-2012 minor tweaks to ${variables} +## Evan Bookbinder 9-18-2013 implemented config.vm +################################################################ ## +#parse("config.vm") ${WMOId} ${vtecOffice} 000000 ${BBBId} NOW${siteId} @@ -142,7 +144,7 @@ THIS IS A TEST MESSAGE. ## ####################################################################### #set($report = "!** YOU DIDN'T SELECT A BASIS **! ${eventType}") #if(${list.contains(${bullets}, "doppler")}) - #set($report = "NATIONAL WEATHER SERVICE DOPPLER RADAR INDICATED ${eventType}...") + #set($report = "DOPPLER RADAR INDICATED ${eventType}...") #end #if(${list.contains(${bullets}, "trainedSpotters")}) #set($report = "TRAINED WEATHER SPOTTERS REPORTED ${eventType}...") @@ -162,12 +164,13 @@ THIS IS A TEST MESSAGE. ## .NOW... #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report}## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. @@ -202,7 +205,7 @@ LOCATIONS IMPACTED INCLUDE... #end -#if(${list.contains(${bullets}, "gustFrontWinds")}) +#if(${list.contains(${bullets}, "gustFrontPassage")}) GUSTY WINDS TO !**WIND SPEED**! MPH WILL ACCOMPANY THE FRONT. #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.xml index 5a6c5bc016..c74eca389d 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/shortTermForecast.xml @@ -8,9 +8,24 @@ Added settings for locations shapefile Added new areaSource object Evan Bookbinder 5-5-2013 fixed variable under areaSource objects + Chad Gimmestad 9-17-2013 made additional info bullet names/labels consistent + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -86,13 +101,13 @@ - - + + - - - + + + @@ -121,8 +136,7 @@ - - + @@ -134,193 +148,4 @@ - - - - - - - - - - Zone - HATCHING - 0 - AND - 0 - NAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - - STATE_ZONE - NAME - - parent - - - - - - - 25 - - - - - County - INTERSECT - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - warngenlev - - - - - 1 - true - 8.0 - 5 - 5 - 10 - 8 - Name - AREA - - NAME --> - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - - Zone - States - TIMEZONES - TIME_ZONE - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm index 0864126461..1befba963d 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm @@ -2,10 +2,13 @@ ## SPS - SIGNIFICANT WEATHER ADVISORY ## ## WRITTEN BY: ## ## TOM BIRCHARD WFO HFO/EVAN BOOKBINDER WFO EAX ## -## VERSION 1.0 8-16-2011 ## -###################################################### +## Modified by: ## +## Phil Kurimski 16 Sep 2013 OB13.5.2-4 ## +## Evan Bookbinder Sep 18 2013 Implemented config.vm ## +################################################################### ## ##SET SOME INITIAL VARIABLES +#parse("config.vm") #if(${stormType} == "line") #set($report = "A LINE OF STRONG THUNDERSTORMS WERE REPORTED") #set($reportType1 = "LINE OF STRONG THUNDERSTORMS") @@ -15,11 +18,14 @@ #set($reportType1 = "STRONG THUNDERSTORM") #set($reportType2 = "THIS STORM WAS") #end +#set($windThreat = "") +#set($hailThreat = "") +#set($hailTrail = "") ############################################################# #### CREATE BASIS WORDING ################################### ############################################################# #if(${list.contains(${bullets}, "doppler")}) - #set($report = "NATIONAL WEATHER SERVICE DOPPLER RADAR WAS TRACKING A ${reportType1}") + #set($report = "DOPPLER RADAR WAS TRACKING A ${reportType1}") #set($reportAuthSVR = "CAPABLE OF PRODUCING") #end #if(${list.contains(${bullets}, "stormSpotters")}) @@ -57,10 +63,15 @@ #set($windTag = "40MPH") #end #if(${list.contains(${bullets}, "wind50")}) - #set($windThreat = "WINDS IN EXCESS OF 50 MPH") + #set($windThreat = "WIND GUSTS UP TO 50 MPH") #set($windSpeed = 50) #set($windTag = "50MPH") #end +#if(${list.contains(${bullets}, "wind55")}) + #set($windThreat = "WIND GUSTS OF 50 TO 55 MPH") + #set($windSpeed = 50) + #set($windTag = "55MPH") +#end ################################################### ## HANDLE HAIL POSSIBILITIES ###################### @@ -68,10 +79,15 @@ #set($hailSize = 0) #set($smallHail = "") #if(${list.contains(${bullets}, "peaHail")}) - #set($hailSize = 0.50) + #set($hailSize = 0.25) #set($hailThreat = "PEA SIZE") #set($hailTrail = " HAIL") #end +#if(${list.contains(${bullets}, "halfHail")}) + #set($hailSize = 0.50) + #set($hailThreat = "HALF INCH") + #set($hailTrail = " HAIL") +#end #if(${list.contains(${bullets}, "dimeHail")}) #set($hailSize = 0.75) #set($hailThreat = "DIME SIZE") @@ -103,11 +119,14 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #end ${ugcline} -#set($zoneList = "") #foreach (${area} in ${areas}) -#set($zoneList = "${zoneList}${area.name}-") +${area.name}## +#if(${includeStateAbbreviation}==true) + ${area.stateabbr}## #end -${zoneList} +-## +#end + ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") @@ -135,12 +154,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. ${smallHail} #else #if(${stormType} == "line") @@ -151,41 +171,21 @@ THIS IS A TEST MESSAGE. ## #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ${smallHail} #end -#if(${list.contains(${bullets}, "peaHail")}) -#set($hail = "Hail up to the size of peas") -#elseif(${list.contains(${bullets}, "dimeHail")}) -#set($hail = "Hail up to the size of dimes") -#elseif(${list.contains(${bullets}, "nickelHail")}) -#set($hail = "Hail up to the size of nickels") -#else -#set($hail="") -#end -#if(${list.contains(${bullets}, "wind30")}) -#set($wind = "Wind gusts up to 30 mph") -#elseif(${list.contains(${bullets}, "wind40")}) -#set($wind = "Wind gusts up to 40 mph") -#elseif(${list.contains(${bullets}, "wind50")}) -#set($wind = "Wind gusts up to 50 mph") -#else -#set($wind="") -#end - - #if(${stormType} == "line") -#if(${hail} != "" && ${wind} != "") -${hail} AND ${wind} WILL BE POSSIBLE WITH THESE STORMS. -#elseif(${hail}=="" && ${wind}!="") -${wind} WILL BE POSSIBLE WITH THESE STORMS. -#elseif(${hail}!="" && ${wind}=="") -${hail} WILL BE POSSIBLE WITH THESE STORMS. +#if(${hailThreat} != "" && ${windThreat} != "") +${hailThreat}${hailTrail} AND ${windThreat} WILL BE POSSIBLE WITH THESE STORMS. +#elseif(${hailThreat}=="" && ${windThreat}!="") +${windThreat} WILL BE POSSIBLE WITH THESE STORMS. +#elseif(${hailThreat}!="" && ${windThreat}=="") +${hailThreat}${hailTrail} WILL BE POSSIBLE WITH THESE STORMS. #end #else -#if(${hail} != "" && ${wind} != "") -${hail} AND ${wind} WILL BE POSSIBLE WITH THIS STORM. -#elseif(${hail}=="" && ${wind}!="") -${wind} WILL BE POSSIBLE WITH THIS STORM. -#elseif(${hail}!="" && ${wind}=="") -${hail} WILL BE POSSIBLE WITH THIS STORM. +#if(${hailThreat} != "" && ${windThreat} != "") +${hailThreat}${hailTrail} AND ${windThreat} WILL BE POSSIBLE WITH THIS STORM. +#elseif(${hailThreat}=="" && ${windThreat}!="") +${windThreat} WILL BE POSSIBLE WITH THIS STORM. +#elseif(${hailThreat}!="" && ${windThreat}=="") +${hailThreat}${hailTrail} WILL BE POSSIBLE WITH THIS STORM. #end #end @@ -240,6 +240,8 @@ THIS IS A TEST MESSAGE. ## ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") ################################## ######### CALLS TO ACTION ######## diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.xml index 6662cdb8ae..37298cbbca 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.xml @@ -5,9 +5,23 @@ 9-15-2011 Merge in OB11.8.0-8 Coding Changes, Zone Codes 9-12-2012 Added in new areaSource object and recode for new locations shapefile + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + mi mph @@ -17,6 +31,7 @@ that can be loaded with each template. --> Forecast Zones + County Names County Warning Areas @@ -69,8 +84,9 @@ - - + + + @@ -102,14 +118,14 @@ - - + + + - - + @@ -128,193 +144,4 @@ - - - - - - - - - - Zone - HATCHING - 0 - AND - 0 - NAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - - STATE_ZONE - NAME - - parent - - - - - - - 25 - - - - - COUNTY - INTERSECT - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - population - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - AREA - true - 8.0 - 5 - 5 - 4 - 8 - Name - - NAME - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - WarnGenLoc - - Zone - States - TIMEZONES - TIME_ZONE - - - - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.vm index 9a20d47fd5..c61278ce4c 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.vm @@ -1,21 +1,12 @@ ##################################################### ## SPECIAL MARINE WARNING TEMPLATE ## ## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- FEB 24 2011 OB11.2 ## -## VERSION AWIPS II 1.1 -- APR 13 2011 OB11.4 ## -## VERSION AWIPS II 1.2 -- JUL 14 2011 OB11.7 ## -## VERSION AWIPS II 1.3 -- SEP 23 2011 OB11.8 ## -## Added Volcano Information for version 1.3 ## -## VERSION AWIPS II 1.4 -- JAN 26 2012 OB12.1.1-1 ## -## Cleaned up wind coding for version 1.4 ## -## VERSION AWIPS II 1.5 -- MAR 2 2012 OB12.2.1-4 ## -## BY QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## -## Phil Kurimski -- SEP 10 2012 OB12.9.1-12 ## +## RECENT HISTORY ## +## BY QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## +## Phil Kurimski -- SEP 10 2012 OB12.9.1-12 ## +## Evan Bookbinder SEP 18 2013 Implemented config.vm ## ################################################################ -## Added Volcano Information in version 1.3 for sites where -## Volcanoes affect their marine zones. If sites wish to hide -## this information comment out the appropriate bullets in the -## xml file. +#parse("config.vm") ################################################ ## Set null variables used in the template ################################################ @@ -127,47 +118,57 @@ THIS IS A TEST MESSAGE. ## #set($eventType = "VOLCANO") #end ####################################################################### -## Added a Threat Section to template that includes Wind...Hail and Waterspout selections. +## Added a Threat Section to the template that includes Wind...Hail +## and Waterspout selections. ## Strong Thunderstorm will change to Severe Thunderstorm automatically based on ## selections in Wind...Hail and Waterspout sections. ####################################################################### #set($windTag = "<34") +#set($windCTA = "GUSTY WINDS") #if(${list.contains(${bullets}, "34ktWind")}) #set($windTag = ">34") #set($windType = "WINDS 34 KNOTS OR GREATER") + #set($windCTA = "WIND GUSTS 34 KNOTS OR GREATER") #end #if(${list.contains(${bullets}, "40ktWind")}) #set($windTag = "40") #set($windType = "WINDS TO 40 KNOTS") + #set($windCTA = "WIND GUSTS TO 40 KNOTS") #end #if(${list.contains(${bullets}, "40ktplusWind")}) #set($windTag = "40") #set($windType = "WINDS TO NEARLY 50 KNOTS") + #set($windCTA = "WIND GUSTS TO NEARLY 50 KNOTS") #end #if(${list.contains(${bullets}, "50ktWind")}) #set($windTag = "50") #set($windType = "DANGEROUS WINDS IN EXCESS OF 50 KNOTS") #set($severeType = "SEVERE") + #set($windCTA = "WIND GUSTS IN EXCESS OF 50 KNOTS") #end #if(${list.contains(${bullets}, "65ktWind")}) #set($windTag = "65") #set($windType = "DANGEROUS CAPSIZING WINDS IN EXCESS OF 65 KNOTS") #set($severeType = "SEVERE") + #set($windCTA = "WIND GUSTS IN EXCESS OF 65 KNOTS") #end #set($hailTag = "0.00") #if(${list.contains(${bullets}, "smallHail")}) #set($hailTag = "<.75") #set($hailType = "SMALL HAIL") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "largeHail")}) #set($hailTag = ">.75") #set($hailType = "LARGE HAIL") #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "destructiveHail")}) #set($hailTag = ">2.0") #set($hailType = "LARGE DESTRUCTIVE HAIL") #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "sightedSpout")}) #set($spoutType = "WATERSPOUTS") @@ -314,13 +315,13 @@ THIS IS A TEST MESSAGE. ## #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report}LOCATED ## #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end #if(${eventType} == "VOLCANO") . -#elseif($movementSpeed < 3 || ${stationary}) +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. @@ -357,7 +358,7 @@ THIS IS A TEST MESSAGE. ## ############################################## #if(${list.contains(${bullets}, "specialEvent")}) -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. #end ##################### @@ -381,12 +382,31 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS... ${ashfallCTA} #if(${list.contains(${bullets}, "genericCTA")}) -AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#end #end #if(${list.contains(${bullets}, "gustyWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end #end #if(${list.contains(${bullets}, "nonThunderstormCTA")}) MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.xml index bf5a1b3926..70f1df6d30 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarning.xml @@ -5,8 +5,23 @@ Added Volcano Information Phil Kurimski 23 Sept 2011 Phil Kurimski 1 Mar 2012 Evan Bookbinder 09-11-2012 Added settings for locations shapefile + Phil Kurimski 09-16-2013 Fixed multiple selections in pathcast + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + nmi kn @@ -110,12 +125,13 @@ Added Volcano Information Phil Kurimski 23 Sept 2011 - - + + - + + @@ -160,14 +176,14 @@ Added Volcano Information Phil Kurimski 23 Sept 2011 - - - - + + + - + + @@ -176,146 +192,4 @@ Added Volcano Information Phil Kurimski 23 Sept 2011 - - - MarineZones - 0 - AND - 0 - NAME - NAME - NAME - countyTypes.txt - ID - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - 1 - 100 - - - - - - - - - - distance - WARNGENLEV - - - - - NAME - AREA - POINTS - 5 - 100 - - - - - - - - - - distance - WARNGENLEV - - - - - - false - 1 - 10.0 - 5 - 5 - 4 - 8 - Name - AREA - Name - Name - Name - countyTypes.txt - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 20 - 20 - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 20 - - distance - - - - - - - - - - - - - WarnGenLoc - MarineZones - MarineZones - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.vm index 01dcd6d485..2d5d85cc88 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.vm @@ -1,22 +1,10 @@ -##################################################### -## SPECIAL MARINE WARNING FOLLOWUP ## -## CREATED BY PHIL KURIMSKI - WFO DTX ## -## VERSION AWIPS II 1.0 -- FEB 24 2011 OB11.2 ## -## VERSION AWIPS II 1.1 -- APR 14 2011 OB11.4 ## -## VERSION AWIPS II 1.2 -- JUL 14 2011 OB11.7 ## -## VERSION AWIPS II 1.3 -- SEP 22 2011 OB11.8 ## -## Added Volcano Information for version 1.3 ## -## VERSION AWIPS II 1.4 -- JAN 26 2012 OB12.1.1-1 ## -## Cleaned up wind coding for version 1.4 ## -## VERSION AWIPS II 1.5 -- MAR 2 2012 OB12.2.1-4 ## -## BY MGAMAZAYCHIKOV -- JUL 20 2012 DR15006 ## -## Phil Kurimski -- SEP 10 2012 OB12.9.1-12 ## -##################################################### -## Added Volcano Information in version 1.3 for sites where -## Volcanoes affect their marine zones. If sites wish to hide -## this information comment out the appropriate bullets in the -## xml file. -############################################ +################################################################### +## SPECIAL MARINE WARNING FOLLOWUP ## +## CREATED BY PHIL KURIMSKI - WFO DTX ## +## UPDATED Phil Kurimski -- SEP 17 2013 OB13.5.2-4 ## +## Evan Bookbinder -- SEP 18 2013 Implemented config.vm ## +################################################################### +#parse("config.vm") ## Set null variables used in the template ############################################ #set($capable = "") @@ -39,151 +27,10 @@ #end ################################################ ####################################################################### -## The following code will create a string of marine zone fips codes -## which will be important in combining marine zones -####################################################################### -####################################################################### -## Set the fipsstring variable to null for marine zone combinations -## This will only work for single CON/CAN/EXP products -## Combination CON/CAN will need additional code which will be -## included in the template below. -####################################################################### -#set($fipsstring = "") -#foreach (${area} in ${areas}) -#set($fipsstring = $fipsstring + $area.fips + "-") -#end -####################################################################### -## HEADER FOR NON-CAN/CON PRODUCTS -####################################################################### -## -#if(${action}=="COR" && ${cancelareas}) -#set($CORCAN = "true") -#else -#set($CORCAN = "false") -#end -#if(${action}!="CANCON" && ${CORCAN}!="true") -${WMOId} ${vtecOffice} 000000 ${BBBId} -MWS${siteId} - -#if(${productClass}=="T") -TEST...MARINE WEATHER STATEMENT...TEST -#else -MARINE WEATHER STATEMENT -#end -NATIONAL WEATHER SERVICE ${officeShort} -#backupText(${backupSite}) -${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} - -#if(${productClass}=="T") -...THIS MESSAGE IS FOR TEST PURPOSES ONLY... - -#end -${ugcline} -/${productClass}.${action}.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ -${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} - -#if(${productClass}=="T") -...THIS MESSAGE IS FOR TEST PURPOSES ONLY... - -#end -#end -## -####################################################################### -## MWS CANCEL PRODUCT -####################################################################### -## Altered cancellation headline for cleaner wording and to match NWS Directive 10-314 -######################################################################## -#if(${action}=="CAN") -#if(${productClass}=="T") -THIS IS A TEST MESSAGE.## -#end -...THE ${warningType} IS CANCELLED... - -THE AFFECTED AREAS WERE... -####################################################################### -## Coding to use the raw marine zone output from the shapefiles -## Comment this section out if you are combining your marine zones -####################################################################### -#foreach (${area} in ${areas}) -${area.name}... -#end -####################################################################### -## End of code for raw marine zone output from the shapefiles -####################################################################### -####################################################################### -## Parse in the marineCombo.vm file which contains marine zone combinations -## Uncomment the parse command if you are combining your marine zones -####################################################################### -##parse("marineCombo.vm") -####################################################################### -## End of the marine zone combination script -####################################################################### - -###################################################################### -## Setup eventType for wording in the End of Warning Statement -###################################################################### -#set($stormline = " HAS") -#set($pose = "POSES") -#if(${stormType} == "line") - #set($stormline = "S HAVE") - #set($pose = "POSE") -#end -#set($eventType = "!**STORMS**! HAVE") -#if(${list.contains(${bullets}, "thunderstorm")}) - #set($eventType = "THUNDERSTORM${stormline}") -#end -#if(${list.contains(${bullets}, "shower")}) - #set($eventType = "SHOWER${stormline}") -#end -#if(${list.contains(${bullets}, "cloud")}) - #set($eventType = "CLOUD${stormline}") -#end -#if(${list.contains(${bullets}, "front")}) - #set($eventType = "FRONT HAS") - #set($pose = "POSES") -#end -#if(${list.contains(${bullets}, "volcano")}) - #set($eventType = "VOLCANO HAS") - #set($pose = "POSES") -#end -####################################################################### -## Section for end of warning statements. Replaced default wording with -## a better defined reason for the end to the warning. -####################################################################### -#set($canwarning = "THE ${eventType} !**WEAKENED/MOVED OUT OF THE AREA**! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") -#if(${list.contains(${bullets}, "weakenedWarnEnd")}) - #set($canwarning = "THE ${eventType} WEAKENED AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") -#end -#if(${list.contains(${bullets}, "movedWarnEnd")}) - #set($canwarning = "THE ${eventType} MOVED OUT OF THE AREA AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") -#end -#if(${list.contains(${bullets}, "volcano")}) - #set($canwarning = "THE ${eventType} STOPPED ERUPTING AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") -#end - -${canwarning} - -############# -## WATCHES ## -############# -#if(${list.contains(${includedWatches}, "torWatches")}) -#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) -#end -#if(${list.contains(${includedWatches}, "svrWatches")}) -#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) -#end -#end -## -####################################################################### -## MWS CON PRODUCT -####################################################################### -## -####################################################################### ## List of Event Types. Added several events such as Shower...Cloud and Front. ## Removed Strong and Severe Thunderstorm selections and placed logic in the ## wind and hail selections that will change wording for Severe Thunderstorms. ####################################################################### -#if(${action}=="CON" || (${action}=="COR" && ${CORCAN}=="false")) #set($eventType = "THUNDERSTORM") #if(${list.contains(${bullets}, "thunderstorm")}) #set($eventType = "THUNDERSTORM") @@ -202,47 +49,57 @@ ${canwarning} #set($eventType = "VOLCANO") #end ####################################################################### -## Added a Threat Section to template that includes Wind...Hail and Waterspout selections. +## Added a Threat Section to the template that includes Wind...Hail +## and Waterspout selections. ## Strong Thunderstorm will change to Severe Thunderstorm automatically based on ## selections in Wind...Hail and Waterspout sections. ####################################################################### #set($windTag = "<34") +#set($windCTA = "GUSTY WINDS") #if(${list.contains(${bullets}, "34ktWind")}) #set($windTag = ">34") #set($windType = "WINDS 34 KNOTS OR GREATER") + #set($windCTA = "WIND GUSTS 34 KNOTS OR GREATER") #end #if(${list.contains(${bullets}, "40ktWind")}) #set($windTag = "40") #set($windType = "WINDS TO 40 KNOTS") + #set($windCTA = "WIND GUSTS TO 40 KNOTS") #end #if(${list.contains(${bullets}, "40ktplusWind")}) #set($windTag = "40") #set($windType = "WINDS TO NEARLY 50 KNOTS") + #set($windCTA = "WIND GUSTS TO NEARLY 50 KNOTS") #end #if(${list.contains(${bullets}, "50ktWind")}) #set($windTag = "50") #set($windType = "DANGEROUS WINDS IN EXCESS OF 50 KNOTS") #set($severeType = "SEVERE") + #set($windCTA = "WIND GUSTS IN EXCESS OF 50 KNOTS") #end #if(${list.contains(${bullets}, "65ktWind")}) #set($windTag = "65") #set($windType = "DANGEROUS CAPSIZING WINDS IN EXCESS OF 65 KNOTS") #set($severeType = "SEVERE") + #set($windCTA = "WIND GUSTS IN EXCESS OF 65 KNOTS") #end #set($hailTag = "0.00") #if(${list.contains(${bullets}, "smallHail")}) #set($hailTag = "<.75") #set($hailType = "SMALL HAIL") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "largeHail")}) #set($hailTag = ">.75") #set($hailType = "LARGE HAIL") #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "destructiveHail")}) #set($hailTag = ">2.0") #set($hailType = "LARGE DESTRUCTIVE HAIL") #set($severeType = "SEVERE") + #set($hailCTA = "...${hailType}") #end #if(${list.contains(${bullets}, "sightedSpout")}) #set($spoutType = "WATERSPOUTS") @@ -380,6 +237,147 @@ ${canwarning} #if(${list.contains(${bullets}, "satellite")} && ${list.contains(${bullets}, "sightedSpout")}) #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...PRODUCING ${threat}...") #end +####################################################################### +## The following code will create a string of marine zone fips codes +## which will be important in combining marine zones +####################################################################### +####################################################################### +## Set the fipsstring variable to null for marine zone combinations +## This will only work for single CON/CAN/EXP products +## Combination CON/CAN will need additional code which will be +## included in the template below. +####################################################################### +#set($fipsstring = "") +#foreach (${area} in ${areas}) +#set($fipsstring = $fipsstring + $area.fips + "-") +#end +####################################################################### +## HEADER FOR NON-CAN/CON PRODUCTS +####################################################################### +## +#if(${action}=="COR" && ${cancelareas}) +#set($CORCAN = "true") +#else +#set($CORCAN = "false") +#end +#if(${action}!="CANCON" && ${CORCAN}!="true") +${WMOId} ${vtecOffice} 000000 ${BBBId} +MWS${siteId} + +#if(${productClass}=="T") +TEST...MARINE WEATHER STATEMENT...TEST +#else +MARINE WEATHER STATEMENT +#end +NATIONAL WEATHER SERVICE ${officeShort} +#backupText(${backupSite}) +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +${ugcline} +/${productClass}.${action}.${vtecOffice}.MA.W.${oldvtec}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/ +${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} + +#if(${productClass}=="T") +...THIS MESSAGE IS FOR TEST PURPOSES ONLY... + +#end +#end +## +####################################################################### +## MWS CANCEL PRODUCT +####################################################################### +## Altered cancellation headline for cleaner wording and to match NWS Directive 10-314 +######################################################################## +#if(${action}=="CAN") +#if(${productClass}=="T") +THIS IS A TEST MESSAGE.## +#end +...THE ${warningType} IS CANCELLED... + +THE AFFECTED AREAS WERE... +####################################################################### +## Coding to use the raw marine zone output from the shapefiles +## Comment this section out if you are combining your marine zones +####################################################################### +#foreach (${area} in ${areas}) +${area.name}... +#end +####################################################################### +## End of code for raw marine zone output from the shapefiles +####################################################################### +####################################################################### +## Parse in the marineCombo.vm file which contains marine zone combinations +## Uncomment the parse command if you are combining your marine zones +####################################################################### +##parse("marineCombo.vm") +####################################################################### +## End of the marine zone combination script +####################################################################### + +###################################################################### +## Setup eventType for wording in the End of Warning Statement +###################################################################### +#set($stormline = " HAS") +#set($pose = "POSES") +#if(${stormType} == "line") + #set($stormline = "S HAVE") + #set($pose = "POSE") +#end +#set($eventType = "!**STORMS**! HAVE") +#if(${list.contains(${bullets}, "thunderstorm")}) + #set($eventType = "THUNDERSTORM${stormline}") +#end +#if(${list.contains(${bullets}, "shower")}) + #set($eventType = "SHOWER${stormline}") +#end +#if(${list.contains(${bullets}, "cloud")}) + #set($eventType = "CLOUD${stormline}") +#end +#if(${list.contains(${bullets}, "front")}) + #set($eventType = "FRONT HAS") + #set($pose = "POSES") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($eventType = "VOLCANO HAS") + #set($pose = "POSES") +#end +####################################################################### +## Section for end of warning statements. Replaced default wording with +## a better defined reason for the end to the warning. +####################################################################### +#set($canwarning = "THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#if(${list.contains(${bullets}, "weakenedWarnEnd")}) + #set($canwarning = "THE ${eventType} WEAKENED AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "movedWarnEnd")}) + #set($canwarning = "THE ${eventType} MOVED OUT OF THE AREA AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end +#if(${list.contains(${bullets}, "volcano")}) + #set($canwarning = "THE ${eventType} STOPPED ERUPTING AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#end + +${canwarning} + +############# +## WATCHES ## +############# +#if(${list.contains(${includedWatches}, "torWatches")}) +#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#if(${list.contains(${includedWatches}, "svrWatches")}) +#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat}) +#end +#end +## +####################################################################### +## MWS CON PRODUCT +####################################################################### +## +#if(${action}=="CON" || (${action}=="COR" && ${CORCAN}=="false")) #if(${productClass}=="T") THIS IS A TEST MESSAGE.## #end @@ -414,14 +412,15 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone}) ...${report}LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end #if(${eventType} == "VOLCANO") . -#elseif($movementSpeed < 3 || ${stationary}) +#elseif(${movementSpeed} < ${marineStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. @@ -457,7 +456,7 @@ THIS IS A TEST MESSAGE. ## #### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT #### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE #### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH! -#locationsList("${impacted}" "THE ${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) +#locationsList("${impacted}" "${eventType}" 0 ${locationList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 1) #end ############################################## @@ -465,7 +464,7 @@ THIS IS A TEST MESSAGE. ## ############################################## #if(${list.contains(${bullets}, "specialEvent")}) -EVERYONE AT !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. +THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialEvent} AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW. #end ##################### @@ -490,12 +489,31 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS... ${ashfallCTA} #if(${list.contains(${bullets}, "genericCTA")}) -AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#end #end #if(${list.contains(${bullets}, "gustyWindsCTA")}) -MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end #end #if(${list.contains(${bullets}, "nonThunderstormCTA")}) MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. @@ -621,7 +639,7 @@ ${area.name}... ## Replaced default end of warning wording. ####################################################################### -THE ${eventType} !**WEAKENED/MOVED OUT OF THE AREA**! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. +THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. ############# ## WATCHES ## @@ -650,192 +668,6 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") ...THIS MESSAGE IS FOR TEST PURPOSES ONLY... -#end -####################################################################### -## List of Event Types. Added several events such as Shower...Cloud and Front. -## Removed Strong and Severe Thunderstorm selections and placed logic in the -## wind and hail selections that will change wording for Severe Thunderstorms. -####################################################################### -#set($eventType = "THUNDERSTORM") -#if(${list.contains(${bullets}, "thunderstorm")}) - #set($eventType = "THUNDERSTORM") - #set($severeType = "STRONG") -#end -#if(${list.contains(${bullets}, "shower")}) - #set($eventType = "SHOWER") -#end -#if(${list.contains(${bullets}, "cloud")}) - #set($eventType = "CLOUD") -#end -#if(${list.contains(${bullets}, "front")}) - #set($eventType = "FRONT") -#end -#if(${list.contains(${bullets}, "volcano")}) - #set($eventType = "VOLCANO") -#end -####################################################################### -## Added a Threat Section to template that includes Wind...Hail and Waterspout selections. -## Strong Thunderstorm will change to Severe Thunderstorm automatically based on -## selections in Wind...Hail and Waterspout sections. -####################################################################### -#set($windTag = "<34") -#if(${list.contains(${bullets}, "34ktWind")}) - #set($windTag = ">34") - #set($windType = "STRONG WINDS 34 KNOTS OR GREATER") -#end -#if(${list.contains(${bullets}, "40ktWind")}) - #set($windTag = "40") - #set($windType = "STRONG WINDS TO 40 KNOTS") -#end -#if(${list.contains(${bullets}, "40ktplusWind")}) - #set($windTag = "40") - #set($windType = "STRONG WINDS TO NEARLY 50 KNOTS") -#end -#if(${list.contains(${bullets}, "50ktWind")}) - #set($windTag = "50") - #set($windType = "DANGEROUS WINDS IN EXCESS OF 50 KNOTS") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "65ktWind")}) - #set($windTag = "65") - #set($windType = "DANGEROUS CAPSIZING WINDS IN EXCESS OF 65 KNOTS") - #set($severeType = "SEVERE") -#end -#set($hailTag = "0.00") -#if(${list.contains(${bullets}, "smallHail")}) - #set($hailTag = "<.75") - #set($hailType = "SMALL HAIL") -#end -#if(${list.contains(${bullets}, "largeHail")}) - #set($hailTag = ">.75") - #set($hailType = "LARGE HAIL") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "destructiveHail")}) - #set($hailTag = ">2.0") - #set($hailType = "LARGE DESTRUCTIVE HAIL") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "sightedSpout")}) - #set($spoutType = "WATERSPOUTS") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "possibleSpout")}) - #set($spoutType = "WATERSPOUTS") - #set($capable = "CAPABLE OF ") -#end -################################################ -## Threat section for Volcanic Situations -################################################ -#if(${list.contains(${bullets}, "ashfall")}) - #set($ashfallType = "ASHFALL") - #set($ashfallPath = "VOLCANIC ASH") - #set($ctaSelected = "YES") - #set($ashfallCTA = "ASH IS AN EYE AND RESPIRATORY IRRITANT AND IS ABRASIVE. THOSE WITH RESPIRATORY SENSITIVITIES SHOULD TAKE EXTRA PRECAUTIONS TO MINIMIZE EXPOSURE. PROTECT ELECTRONICS AND COVER AIR INTAKES IF ASHFALL IS EXPECTED OR CONFIRMED. REMOVE ASH FROM SURFACES WITH WATER IF POSSIBLE TO PREVENT EXCESSIVE ACCUMULATION.") - #set($ashfallInfo = "AN ASHFALL WARNING MEANS THAT THE VOLCANO IS UNDERGOING A MAJOR ERUPTION. IT IS VERY LIKELY THAT MARINERS WILL BE AFFECTED BY VOLCANIC HAZARDS IN THE WARNING AREAS SUCH AS SIGNIFICANT DEBRIS...ASHFALL ONE QUARTER INCH OR GREATER...LAVA...OR LAHAR AND DEBRIS FLOWS.") -#end -#if(${list.contains(${bullets}, "debrisFlow")}) - #set($debrisflowType = "DEBRIS FLOW") - #set($debrisflowPath = "DEBRIS FLOW") - #set($debrisflowInfo = "THE ERUPTION OF THE VOLCANO CAN CAUSE A SUDDEN MELTING OF SNOW AND ICE ON THE MOUNTAIN. THIS WILL RESULT IN A TORRENT OF MUD...ASH...ROCK...AND HOT WATER TO FLOW DOWN THE MOUNTAIN AND INTO THE NEARBY WATERS.") -#end -####################################################################### -## Logic to create the Wind/Hail Tags used by CR. -####################################################################### -#set($windhailTag = "WIND...HAIL ${windTag}KTS ${hailTag}IN") -####################################################################### -## Logic to put together the threats based on Wind...Hail and Waterspout sections. -####################################################################### -#if(${spoutType} && ${windType} && ${hailType}) - #set($threat = "${spoutType}...${windType} AND ${hailType}") -#elseif(${spoutType} && ${hailType}) - #set($threat = "${spoutType} AND ${hailType}") -#elseif(${spoutType} && ${windType}) - #set($threat = "${spoutType} AND ${windType}") -#elseif(${windType} && ${hailType}) - #set($threat = "${windType} AND ${hailType}") -#elseif(${spoutType}) - #set($threat = "${spoutType}") -#elseif(${windType}) - #set($threat = "${windType}") -#elseif(${hailType}) - #set($threat = "${hailType}") -#else - #set($threat = "!**YOU DID NOT SELECT ANY THREATS. PLEAST RE-GENERATE THIS WARNING!**!") -#end -####################################################################### -## Logic for Volcanic Threats. If selected this will override any -## other selections for wind/hail/spouts. -####################################################################### -#if(${ashfallType} && ${debrisflowType}) - #set($threat = "${ashfallType} AND ${debrisflowType}") - #set($volcanoPath = "${ashfallPath} AND ${debrisflowPath}") -#elseif(${ashfallType}) - #set($threat = "${ashfallType}") - #set($volcanoPath = "${ashfallPath}") -#elseif(${debrisflowType}) - #set($threat = "${debrisflowType}") - #set($volcanoPath = "${debrisflowPath}") -#else -#end -####################################################################### -## Section to determine Thunderstorm Severity based on Threat Selections. -####################################################################### -#if(${eventType} == "THUNDERSTORM") - #set($thunderstormType = "${severeType} ${eventType}") - #set($eventType = "${thunderstormType}") -#end -####################################################################### -## Section to create line wording based on track type. -####################################################################### -#set($stormline = "A ${eventType}") -#set($pathheader = "${eventType}") -#if(${stormType} == "line") - #set($stormline = "A LINE OF ${eventType}S") - #set($pathheader = "${eventType}S") -#end -####################################################################### -##Corrective coding to prevent the use of "Line of Fronts" in the Product. -####################################################################### -#if(${eventType} == "FRONT") - #set($stormline = "A ${eventType}") - #set($pathheader = "${eventType}") -## #set($stormType = "") -#end -####################################################################### -## Coding for volcanos...this will override all other selections. -####################################################################### -#set($impacted = "LOCATIONS IMPACTED INCLUDE...") -#if(${eventType} == "VOLCANO") - #set($stormline = "!** NAME OF VOLCANO**! ${eventType}") - #set($pathheader = "THE ${volcanoPath}") -## #set($stormType = "") - #set($impacted = "LOCATIONS IMPACTED BY ${volcanoPath} INCLUDE...") -#end -####################################################################### -## Basis section that incorporates line phenomena...capable vs producing -## and threat based on selections above. Added Satellite Imagery to basis. -####################################################################### -#set($report = "!** YOU DIDN'T SELECT A REPORTER **! ${eventType}") -#if(${list.contains(${bullets}, "doppler")}) - #set($capable = "CAPABLE OF ") - #set($report = "NATIONAL WEATHER SERVICE DOPPLER RADAR INDICATED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "marineSpotter")}) - #set($report = "MARINE WEATHER SPOTTERS REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "mariner")}) - #set($report = "A MARINER REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "public")}) - #set($report = "THE PUBLIC REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "pilot")}) - #set($report = "A PILOT REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "satellite")}) - #set($capable = "CAPABLE OF ") - #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...${capable}PRODUCING ${threat}...") #end #if(${productClass}=="T") THIS IS A TEST MESSAGE.## @@ -879,15 +711,16 @@ ${area.name}... #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end -AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}... ${report} LOCATED ## +AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end #if(${eventType} == "VOLCANO") . -#elseif($movementSpeed < 3 || ${stationary}) +#elseif(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. @@ -962,12 +795,31 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS... ${ashfallCTA} #if(${list.contains(${bullets}, "genericCTA")}) -AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WIND AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#end #end #if(${list.contains(${bullets}, "gustyWindsCTA")}) -MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end #end #if(${list.contains(${bullets}, "nonThunderstormCTA")}) MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. @@ -1058,7 +910,7 @@ ${area.name}... ## Replaced default end of warning wording. ####################################################################### -THE ${eventType} !**WEAKENED/MOVED OUT OF THE AREA**! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. +THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS. ############# ## WATCHES ## @@ -1087,192 +939,6 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") ...THIS MESSAGE IS FOR TEST PURPOSES ONLY... -#end -####################################################################### -## List of Event Types. Added several events such as Shower...Cloud and Front. -## Removed Strong and Severe Thunderstorm selections and placed logic in the -## wind and hail selections that will change wording for Severe Thunderstorms. -####################################################################### -#set($eventType = "THUNDERSTORM") -#if(${list.contains(${bullets}, "thunderstorm")}) - #set($eventType = "THUNDERSTORM") - #set($severeType = "STRONG") -#end -#if(${list.contains(${bullets}, "shower")}) - #set($eventType = "SHOWER") -#end -#if(${list.contains(${bullets}, "cloud")}) - #set($eventType = "CLOUD") -#end -#if(${list.contains(${bullets}, "front")}) - #set($eventType = "FRONT") -#end -#if(${list.contains(${bullets}, "volcano")}) - #set($eventType = "VOLCANO") -#end -####################################################################### -## Added a Threat Section to template that includes Wind...Hail and Waterspout selections. -## Strong Thunderstorm will change to Severe Thunderstorm automatically based on -## selections in Wind...Hail and Waterspout sections. -####################################################################### -#set($windTag = "<34") -#if(${list.contains(${bullets}, "34ktWind")}) - #set($windTag = ">34") - #set($windType = "STRONG WINDS 34 KNOTS OR GREATER") -#end -#if(${list.contains(${bullets}, "40ktWind")}) - #set($windTag = "40") - #set($windType = "STRONG WINDS TO 40 KNOTS") -#end -#if(${list.contains(${bullets}, "40ktplusWind")}) - #set($windTag = "40") - #set($windType = "STRONG WINDS TO NEARLY 50 KNOTS") -#end -#if(${list.contains(${bullets}, "50ktWind")}) - #set($windTag = "50") - #set($windType = "DANGEROUS WINDS IN EXCESS OF 50 KNOTS") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "65ktWind")}) - #set($windTag = "65") - #set($windType = "DANGEROUS CAPSIZING WINDS IN EXCESS OF 65 KNOTS") - #set($severeType = "SEVERE") -#end -#set($hailTag = "0.00") -#if(${list.contains(${bullets}, "smallHail")}) - #set($hailTag = "<.75") - #set($hailType = "SMALL HAIL") -#end -#if(${list.contains(${bullets}, "largeHail")}) - #set($hailTag = ">.75") - #set($hailType = "LARGE HAIL") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "destructiveHail")}) - #set($hailTag = ">2.0") - #set($hailType = "LARGE DESTRUCTIVE HAIL") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "sightedSpout")}) - #set($spoutType = "WATERSPOUTS") - #set($severeType = "SEVERE") -#end -#if(${list.contains(${bullets}, "possibleSpout")}) - #set($spoutType = "WATERSPOUTS") - #set($capable = "CAPABLE OF ") -#end -################################################ -## Threat section for Volcanic Situations -################################################ -#if(${list.contains(${bullets}, "ashfall")}) - #set($ashfallType = "ASHFALL") - #set($ashfallPath = "VOLCANIC ASH") - #set($ctaSelected = "YES") - #set($ashfallCTA = "ASH IS AN EYE AND RESPIRATORY IRRITANT AND IS ABRASIVE. THOSE WITH RESPIRATORY SENSITIVITIES SHOULD TAKE EXTRA PRECAUTIONS TO MINIMIZE EXPOSURE. PROTECT ELECTRONICS AND COVER AIR INTAKES IF ASHFALL IS EXPECTED OR CONFIRMED. REMOVE ASH FROM SURFACES WITH WATER IF POSSIBLE TO PREVENT EXCESSIVE ACCUMULATION.") - #set($ashfallInfo = "AN ASHFALL WARNING MEANS THAT THE VOLCANO IS UNDERGOING A MAJOR ERUPTION. IT IS VERY LIKELY THAT MARINERS WILL BE AFFECTED BY VOLCANIC HAZARDS IN THE WARNING AREAS SUCH AS SIGNIFICANT DEBRIS...ASHFALL ONE QUARTER INCH OR GREATER...LAVA...OR LAHAR AND DEBRIS FLOWS.") -#end -#if(${list.contains(${bullets}, "debrisFlow")}) - #set($debrisflowType = "DEBRIS FLOW") - #set($debrisflowPath = "DEBRIS FLOW") - #set($debrisflowInfo = "THE ERUPTION OF THE VOLCANO CAN CAUSE A SUDDEN MELTING OF SNOW AND ICE ON THE MOUNTAIN. THIS WILL RESULT IN A TORRENT OF MUD...ASH...ROCK...AND HOT WATER TO FLOW DOWN THE MOUNTAIN AND INTO THE NEARBY WATERS.") -#end -####################################################################### -## Logic to create the Wind/Hail Tags used by CR. -####################################################################### -#set($windhailTag = "WIND...HAIL ${windTag}KTS ${hailTag}IN") -####################################################################### -## Logic to put together the threats based on Wind...Hail and Waterspout sections. -####################################################################### -#if(${spoutType} && ${windType} && ${hailType}) - #set($threat = "${spoutType}...${windType} AND ${hailType}") -#elseif(${spoutType} && ${hailType}) - #set($threat = "${spoutType} AND ${hailType}") -#elseif(${spoutType} && ${windType}) - #set($threat = "${spoutType} AND ${windType}") -#elseif(${windType} && ${hailType}) - #set($threat = "${windType} AND ${hailType}") -#elseif(${spoutType}) - #set($threat = "${spoutType}") -#elseif(${windType}) - #set($threat = "${windType}") -#elseif(${hailType}) - #set($threat = "${hailType}") -#else - #set($threat = "!**YOU DID NOT SELECT ANY THREATS. PLEAST RE-GENERATE THIS WARNING!**!") -#end -####################################################################### -## Logic for Volcanic Threats. If selected this will override any -## other selections for wind/hail/spouts. -####################################################################### -#if(${ashfallType} && ${debrisflowType}) - #set($threat = "${ashfallType} AND ${debrisflowType}") - #set($volcanoPath = "${ashfallPath} AND ${debrisflowPath}") -#elseif(${ashfallType}) - #set($threat = "${ashfallType}") - #set($volcanoPath = "${ashfallPath}") -#elseif(${debrisflowType}) - #set($threat = "${debrisflowType}") - #set($volcanoPath = "${debrisflowPath}") -#else -#end -####################################################################### -## Section to determine Thunderstorm Severity based on Threat Selections. -####################################################################### -#if(${eventType} == "THUNDERSTORM") - #set($thunderstormType = "${severeType} ${eventType}") - #set($eventType = "${thunderstormType}") -#end -####################################################################### -## Section to create line wording based on track type. -####################################################################### -#set($stormline = "A ${eventType}") -#set($pathheader = "${eventType}") -#if(${stormType} == "line") - #set($stormline = "A LINE OF ${eventType}S") - #set($pathheader = "${eventType}S") -#end -####################################################################### -##Corrective coding to prevent the use of "Line of Fronts" in the Product. -####################################################################### -#if(${eventType} == "FRONT") - #set($stormline = "A ${eventType}") - #set($pathheader = "${eventType}") -## #set($stormType = "") -#end -####################################################################### -## Coding for volcanos...this will override all other selections. -####################################################################### -#set($impacted = "LOCATIONS IMPACTED INCLUDE...") -#if(${eventType} == "VOLCANO") - #set($stormline = "!** NAME OF VOLCANO**! ${eventType}") - #set($pathheader = "THE ${volcanoPath}") -## #set($stormType = "") - #set($impacted = "LOCATIONS IMPACTED BY ${volcanoPath} INCLUDE...") -#end -####################################################################### -## Basis section that incorporates line phenomena...capable vs producing -## and threat based on selections above. Added Satellite Imagery to basis. -####################################################################### -#set($report = "!** YOU DIDN'T SELECT A REPORTER **! ${eventType}") -#if(${list.contains(${bullets}, "doppler")}) - #set($capable = "CAPABLE OF ") - #set($report = "NATIONAL WEATHER SERVICE DOPPLER RADAR INDICATED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "marineSpotter")}) - #set($report = "MARINE WEATHER SPOTTERS REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "mariner")}) - #set($report = "A MARINER REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "public")}) - #set($report = "THE PUBLIC REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "pilot")}) - #set($report = "A PILOT REPORTED ${stormline}...${capable}PRODUCING ${threat}...") -#end -#if(${list.contains(${bullets}, "satellite")}) - #set($capable = "CAPABLE OF ") - #set($report = "SATELLITE IMAGERY INDICATED ${stormline}...${capable}PRODUCING ${threat}...") #end #if(${productClass}=="T") THIS IS A TEST MESSAGE.## @@ -1304,15 +970,16 @@ ${area.name}... #if(${productClass}=="T") THIS IS A TEST MESSAGE. ## #end -AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}... ${report} LOCATED ## +AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report} LOCATED ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "NM", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell}) #end #if(${eventType} == "VOLCANO") . -#elseif($movementSpeed < 3 || ${stationary}) +#elseif(${movementSpeed} < ${landStationary} || ${stationary}) . ${reportType2} NEARLY STATIONARY. #else ...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS. @@ -1387,12 +1054,31 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS... ${ashfallCTA} #if(${list.contains(${bullets}, "genericCTA")}) -AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WIND AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#if(${stormType} == "line") +AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS. + +#else +AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES. +#end #end #if(${list.contains(${bullets}, "gustyWindsCTA")}) -MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. +#if(${stormType} == "line") +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. +#else +MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end +#end +#if(${list.contains(${bullets}, "hailWindsCTA")}) +#if(${stormType} == "line") +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. + +#else +MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. + +#end #end #if(${list.contains(${bullets}, "nonThunderstormCTA")}) MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE. @@ -1477,7 +1163,7 @@ ${area.name}... ## Section for end of warning statements. Replaced default wording with ## a better defined reason for the end to the warning. ####################################################################### -#set($expwarning = "THE ${eventType} !**WEAKENED/MOVED OUT OF THE AREA**! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") +#set($expwarning = "THE ${eventType} !** WEAKENED / MOVED OUT OF THE WARNED AREA **! AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") #if(${list.contains(${bullets}, "weakenedWarnEnd")}) #set($expwarning = "THE ${eventType} WEAKENED AND NO LONGER ${pose} A SIGNIFICANT THREAT TO BOATERS.") #end diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.xml index 6833a65313..5eac690e76 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialMarineWarningFollowup.xml @@ -5,9 +5,24 @@ Phil Kurimski 23 Sept 2011 Added Volcano Information Phil Kurimski 1 Mar 2012 Evan Bookbinder 09-11-2012 Added settings for locations shapefile - Added new areaSource variable + Added new areaSource variable + Phil Kurimski 09-16-2013 Fixed multiple selections in pathcast + Phil Kurimski 09-19-2013 added geospatialConfig.xml --> + + + + + + + + + nmi kn @@ -150,14 +165,14 @@ - - + - + - + + @@ -203,14 +218,14 @@ - - + - + - + + @@ -219,146 +234,4 @@ - - - MarineZones - 0 - AND - 0 - NAME - NAME - NAME - countyTypes.txt - ID - NAME - - parent - - - - - - - 25 - - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - WARNGENLEV - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - WARNGENLEV - - - - - - false - 1 - 10.0 - 5 - 5 - 4 - 8 - Name - AREA - Name - Name - Name - countyTypes.txt - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 20 - 20 - - - - - - - - - - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 20 - - distance - - - - - - - - - - - - - WarnGenLoc - MarineZones - MarineZones - TIMEZONES - TIME_ZONE - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.vm index b8e0e22155..f5502da633 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.vm @@ -1,11 +1,14 @@ -######################################################### -## SPS - SPECIAL WEATHER STATEMENT for various THREATS ## -## WRITTEN BY: ## -## Mike Dangelo WFO CTP 1.25.2013 (BUILD 12.12.1-12) ## -## Phil Kurimski WFO DTX 2.05.2013 (BUILD 13.2.1-5) ## -######################################################### +############################################################ +## SPS - SPECIAL WEATHER STATEMENT for various THREATS ## +## WRITTEN BY: ## +## Mike Dangelo WFO CTP 1.25.2013 (BUILD 12.12.1-12) ## +## Phil Kurimski WFO DTX 2.05.2013 (BUILD 13.2.1-5) ## +## Phil Kurimski WFO DTX 9.16.2013 (BUILD 13.5.2-4) ## +## Evan Bookbinder 9.18.2013 Implemented config.vm ## +############################################################ ## ## SET SOME INITIAL VARIABLES +#parse("config.vm") #set($SvsR = "RAIN") #foreach ($bullet in $bullets) #if($bullet.startsWith("snow")) @@ -110,43 +113,48 @@ ## HANDLE WIND POSSIBILITIES ###################### ################################################### #set($windSpeed = 0) -#if(${list.contains($bullets, "wind30")}) - #set($windThreat = "WIND GUSTS UP TO 30 MPH") +#if(${list.contains(${bullets}, "wind30")}) + #set($windThreat = "WINDS IN EXCESS OF 30 MPH") #set($windSpeed = 30) #set($windTag = "30MPH") #end -#if(${list.contains($bullets, "wind40")}) - #set($windThreat = "WINDS GUSTS UP TO 40 MPH") +#if(${list.contains(${bullets}, "wind40")}) + #set($windThreat = "WINDS IN EXCESS OF 40 MPH") #set($windSpeed = 40) #set($windTag = "40MPH") #end -#if(${list.contains($bullets, "wind50")}) - #set($windThreat = "WINDS GUSTS UP TO 50 MPH") +#if(${list.contains(${bullets}, "wind50")}) + #set($windThreat = "WIND GUSTS UP TO 50 MPH") #set($windSpeed = 50) #set($windTag = "50MPH") #end +#if(${list.contains(${bullets}, "wind55")}) + #set($windThreat = "WIND GUSTS OF 50 TO 55 MPH") + #set($windSpeed = 50) + #set($windTag = "55MPH") +#end ################################################### ## HANDLE HAIL POSSIBILITIES ###################### ################################################### #set($hailSize = 0) #set($smallHail = "") -#if(${list.contains($bullets, "smallHail")}) +#if(${list.contains(${bullets}, "peaHail")}) #set($hailSize = 0.25) - #set($hailThreat = "SMALL") - #set($hailTrail = " HAIL") -#end -#if(${list.contains($bullets, "peaHail")}) - #set($hailSize = 0.50) #set($hailThreat = "PEA SIZE") #set($hailTrail = " HAIL") #end -#if(${list.contains($bullets, "dimeHail")}) +#if(${list.contains(${bullets}, "halfHail")}) + #set($hailSize = 0.50) + #set($hailThreat = "HALF INCH") + #set($hailTrail = " HAIL") +#end +#if(${list.contains(${bullets}, "dimeHail")}) #set($hailSize = 0.75) #set($hailThreat = "DIME SIZE") #set($hailTrail = " HAIL") #end -#if(${list.contains($bullets, "nickelHail")}) +#if(${list.contains(${bullets}, "nickelHail")}) #set($hailSize = 0.88) #set($hailThreat = "NICKEL SIZE") #set($hailTrail = " HAIL") @@ -172,11 +180,14 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #end ${ugcline} -#set($zoneList = "") #foreach (${area} in ${areas}) -#set($zoneList = "${zoneList}${area.name}-") +${area.name}## +#if(${sAbbreviation}==true) + ${area.stateabbr}## #end -${zoneList} +-## +#end + ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #if(${productClass}=="T") @@ -201,12 +212,13 @@ THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...## ${describeMovement} WAS ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if($movementSpeed < 5 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) . ${eventWas} NEARLY STATIONARY. #else #if(${stormType} == "line") @@ -340,6 +352,7 @@ THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. #tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + $$ diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.xml index a52346b802..7e3165ac1b 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/specialWeatherStatement.xml @@ -1,9 +1,23 @@ + + + + + + + + + mi mph @@ -13,6 +27,7 @@ that can be loaded with each template. --> Forecast Zones + County Names County Warning Areas @@ -73,13 +88,14 @@ - - - - - - - + + + + + + + + @@ -125,13 +141,14 @@ - - - - - - - + + + + + + + + @@ -165,164 +182,4 @@ - - - - - - - - - Zone - 0 - AND - 0 - NAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - - STATE_ZONE - NAME - - parent - - - - - - - 25 - - - - NAME - POINTS - - - - - - - - - 1 - AREA - 100 - - distance - warngenlev - population - - - - - NAME - POINTS - - - - - - - - - AREA - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 4 - 8 - Name - - NAME - AREA - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - 1 - NAME - TRACK - true - AREA - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - TRACK - true - AREA - 10 - 10 - - distance - - - - - - - - - - - - - WarnGenLoc - - Zone - States - TIMEZONES - TIME_ZONE - - - - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.vm index aeb2aa9d93..d7a4ce3f89 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.vm @@ -11,7 +11,7 @@ stormReports.xml #if ($dbTable) #foreach($table in $dbTable) #set($size = ${list.size($table)}) -#if ($size > 1) +#if ($size > 0) !** RECENT LOCAL STORM REPORTS: (COPY AND PASTE VALID REPORTS INTO 3RD BULLET THEN DELETE THIS SECTION) #foreach($report in $table) diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.xml index ea8a86ebcc..daa843081a 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/stormReports.xml @@ -6,8 +6,6 @@ importLSR2DB.sh script and create pointSource objects for WarnGen usage - - lsr_severe NAME diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.vm b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.vm index 09730f84bc..f5b3df0152 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.vm +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.vm @@ -1,23 +1,15 @@ ############################################################################### ## TORNADO WARNING TEMPLATE ## -## VERSION AWIPS II 1.0 ## -## MODIFIED ## -## JAMIE FREDERICK - WFO TSA 2-24-11 ## -## EVAN BOOKBINDER - WFO EAX 3-23-11 - Initial OB11.2 ReWrite ## -## 4-13-11 - OB11.4 Modifications ## -## 7-11-11 - OB11.7 Modifications ## -## 9-16-11 - OB11.8.0-8 Pathcast/City ## -## MIKE DANGELO WFO CTP 9-22-11 - OB11.8.0-9 ## -## EVAN BOOKBINDER WFO EAX 11-04-11 - OB11.9-3 (DRs) ## -## EVAN BOOKBINDER WFO EAX 2-24-12 - OB12.2.1 ## -## MIKE REGA 5-03-12 - DR 14885 MND blank line ## -## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ## -## QINGLU LIN 8-14-2012 DR 14493 use TMLtime ## -## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## -## Mike Dangelo 2-4-2013 NWS Mets detected a svr ## +## VERSION AWIPS II ## +## RECENT CHANGES ## +## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ## +## Mike Dangelo 2-4-2013 NWS Mets detected a svr ## ## PHIL KURIMSKI 2-6-2013 Put tor emergency back in as 3rd bullet ## +## PHIL KURIMSKI 9-17-2013 Put tor emergency as a headline ## +## Evan Bookbinder 9-18-2013 Implemented config.vm ## ############################################################################### ## ESTABLISH SOME INITIAL VARIABLES +#parse("config.vm") #set($hailSize = 0) #set($hailTag = "<.75IN") #set($reportType = "A TORNADO WAS REPORTED") @@ -130,12 +122,12 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})} #end ################################################################# -### TORNADO EMERGENCY HEADLINE...COMING SOON TO A WFO NEAR YOU! # +### TORNADO EMERGENCY HEADLINE # ################################################################# -###if(${list.contains(${bullets}, "torEmergency")}) -##...TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... -## -###end +#if(${list.contains(${bullets}, "torEmergency")}) +...TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!... + +#end #headline(${officeLoc}, ${backupSite}) ################## @@ -295,12 +287,13 @@ THIS IS A TEST MESSAGE. ## THIS IS A TEST MESSAGE. ## #end #thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...${reportType} ## +##Many of the variables passed below are controlled by config.vm #if(${stormType} == "line") -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", false) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine}) #else -#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, "NEAR", 6, "OVER", 2, "MILES", true) +#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell}) #end -#if(${movementSpeed} < 3 || ${stationary}) +#if(${movementSpeed} < ${landStationary} || ${stationary}) #if(${stormType} == "line") . THE LINE OF TORNADIC STORMS WAS NEARLY STATIONARY. #else @@ -314,7 +307,7 @@ THIS IS A TEST MESSAGE. ## ### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE GOES WITH 3RD BULLET # ##################################################################### #if(${list.contains($bullets, "torEmergency")}) -#wrapText("THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!...TAKE IMMEDIATE TORNADO PRECAUTIONS NOW." 2 2) +#wrapText("THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!. TAKE COVER NOW." 2 2) #end ############################ @@ -404,6 +397,8 @@ THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THIS S ## parse file command here is to pull in mile marker info ## #parse("mileMarkers.vm") +## Uncomment below pull in point marker info +## #parse("pointMarkers.vm") ##################### ## CALL TO ACTIONS ## @@ -487,6 +482,7 @@ THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. #printcoords(${areaPoly}, ${list}) #tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation}) + ## UNCOMMENT 2 LINES BELOW IF YOU ARE PARTICIPATING IN THE HAIL TAG TESTBED ## ##HAIL ${hailTag} diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.xml index 414fc9cd7c..2c9a8c5178 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/tornadoWarning.xml @@ -14,6 +14,20 @@ + + + + + + + + + + mi mph @@ -108,7 +122,7 @@ - + @@ -167,14 +181,13 @@ - - + - + - + @@ -190,158 +203,6 @@ - - - - - County - 0 - AND - 0 - COUNTYNAME - NAME - STATE - FE_AREA - TIME_ZONE - countyTypes.txt - FIPS - NAME - - parent - - - - - - - 25 - - - NAME - AREA - POINTS - - - - - - - - - 1 - 100 - - distance - warngenlev - - - - - NAME - AREA - POINTS - - - - - - - - - 5 - 100 - - distance - - - - - 1 - true - 8.0 - 5 - 5 - 4 - 8 - Name - AREA - COUNTYNAME - - STATE - STATE - countyTypes.txt - - warngenlev - population - distance - - - - - - - - - - - - - NAME - 1 - AREA - TRACK - true - 20 - 10 - - - - - - - - - - warngenlev - population - distance - - - - - NAME - 1 - AREA - TRACK - true - 10 - 10 - - distance - - - - - - - - - - - - - - - - WarnGenLoc - County - - States - TIMEZONES - TIME_ZONE - diff --git a/pythonPackages/qpid/bin/monitor_qpid_host.sh b/pythonPackages/qpid/bin/monitor_qpid_host.sh index 186bd64916..2a62718e3b 100644 --- a/pythonPackages/qpid/bin/monitor_qpid_host.sh +++ b/pythonPackages/qpid/bin/monitor_qpid_host.sh @@ -17,7 +17,7 @@ function setupEnv() { if [[ ${logDirectory}/${logName} -ot ${logDirectory}/$( basename $0 .sh ).$(date --date='1 day ago' +%A).log ]] then - for myFile in ${logName} ${nowTimeDate}-lsof_qpid.out ${nowTimeDate}-qpid-stat.out ${nowTimeDate}-netstat.out ${nowTimeDate}-ipvsadm.out + for myFile in ${logName} ${nowTimeDate}-lsof_qpid.out ${nowTimeDate}-qpid-stat.out ${nowTimeDate}-netstat.out ${nowTimeDate}-ipvsadm.out ${nowTimeDate}-captureQpidHeapInfo.out do echo > ${logDirectory}/${myFile} done @@ -199,6 +199,39 @@ function captureIPVS() { return ${returnCode} } +function captureQpidHeapInfo() { + + + local returnCode=0 + local logFile=${logDirectory}/${nowTimeDate}-$FUNCNAME.out + + echo -ne "\n| START " >> ${logFile} 2>&1 + echoDate >> ${logFile} 2>&1 + echo -e "----------------------------------------------------------------|\n" >> ${logFile} 2>&1 + + #qpidPid=$( jps -v | grep QPBRKR | awk '{print $1}' ) + + if ! ps -p ${qpidPid} > /dev/null ; then + echoFail "\tCan not find returned qpidd pid (${qpidPid}): $( jps -v | grep QPBRKR | awk '{print $1}' )" + return 1 + fi + + echo -e "\tFound qpidd on PID ${qpidPid}" >> ${logFile} + + echo -e "\tGetting HEAP usage...........................\n\n" >> ${logFile} + jmap -heap ${qpidPid} | while read line ; do + echo -e "\t\t${line}" >> ${logFile} + done + + echo -e "\n\n\tGetting Garbage Collection Information ..................\n\n" >> ${logFile} + jstat -gcutil ${qpidPid} 1000 30 | while read line ; do + echo -e "\t\t${line}" >> ${logFile} + done + + return 0 + +} + ## main() @@ -238,9 +271,9 @@ else rm ${logDirectory}/testfile fi -if ! qpidPid=$( jps -v | grep qpid | awk '{print $1}' ) +if ! qpidPid=$( jps -v | grep QPBRKR | awk '{print $1}' ) then - echoFail "ERROR:\tCan't find qpidd on this host (run: jps -v | grep qpid failed)." + echoFail "ERROR:\tCan't find qpidd on this host (run: jps -v | grep QPBRKR failed)." exit 1 fi @@ -271,10 +304,10 @@ while ps -p ${functionPID} > /dev/null do sleep 1 _cnt=$(($_cnt+1)) - if [[ ${_cnt} -ge 20 ]] + if [[ ${_cnt} -ge 30 ]] then kill -9 ${functionPID} - echoFail "ERROR: qpid-stat running for more than 20 seconds, killing" + echoFail "ERROR: qpid-stat running for more than 30 seconds, killing" fi done @@ -283,6 +316,25 @@ then echoFail "ERROR: Grabbing of qpid-stat failed" fi +captureQpidHeapInfo & +functionPID=$! +_cnt=0 +while ps -p ${functionPID} > /dev/null +do + sleep 1 + _cnt=$(($_cnt+1)) + if [[ ${_cnt} -ge 60 ]] + then + kill -9 ${functionPID} + echoFail "ERROR: Getting heap infomation running for more than 60 seconds, killing" + fi +done + +if ! wait ${functionPID} +then + echoFail "ERROR: Grabbing of heap utilization failed" +fi + captureNetstat & functionPID=$! _cnt=0