awips2/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatement.vm
dmsys 8c3625cfec Merge branch 'master_14.2.4' into master_14.3.1 CM-MERGE:14.2.4-13-14 into 14.3.1
Conflicts:
	cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackDisplay.java
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/core/internal/IFPClient.java
	edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.vm

Former-commit-id: 0bf7ecb27d41f81f1d6727674fc1475eeaa8512c
2014-09-30 13:45:54 -04:00

405 lines
18 KiB
Text
Executable file

#####################################################
## MARINE WEATHER STATEMENT STANDALONE ##
## CREATED BY PHIL KURIMSKI - WFO DTX ##
## 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 -- SEP 17 2013 OB13.5.2-4 ##
## Evan Bookbinder -- SEP 18 2013 Implemented config.vm
## Mike Rega 5/23/14 DR 17380 svr wx watch logic OB14.3.1
#####################################################
#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
#####################################################
#set($visibility = "1 MILE")
#####################################################
## Set null variables used in the template
#####################################################
#set($capable = "")
#set($hailType = "")
#if(${productClass}=="O")
#set($productClass = "X")
#end
${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
######################################################################
## Deleted VTEC and Marine Zone Name lines to come in line with NWS Directive 10-314
######################################################################
${ugcline}
${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 line selections and determined line based on Track Type in GUI.
#######################################################################
## Assume head1 is selected.
#set($headerType = "STRONG THUNDERSTORM")
#set($eventType = "THUNDERSTORM")
#set($reportLocation = "THIS THUNDERSTORM WAS LOCATED")
## Do not add any spaces or tabs to the next line
## Otherwise the headline in the product will have extra spaces
#if(${stormType} == "line")
#set($reportLocation = "THESE THUNDERSTORMS WERE LOCATED")
#end
#if(${list.contains(${bullets}, "shower")})
#set($headerType = "SHOWER")
#set($eventType = "SHOWER")
#set($reportLocation = "THIS SHOWER WAS LOCATED")
## Do not add any spaces or tabs to the next line
## Otherwise the headline in the product will have extra spaces
#if(${stormType} == "line")
#set($reportLocation = "THESE SHOWERS WERE LOCATED")
#end
#end
#if(${list.contains(${bullets}, "cloud")})
#set($headerType = "CLOUD")
#set($eventType = "CLOUD")
#set($reportLocation = "THIS CLOUD FEATURE WAS LOCATED")
#end
#if(${list.contains(${bullets}, "front")})
#set($headerType = "FRONT")
#set($eventType = "FRONT")
#set($reportLocation = "THIS FRONT WAS LOCATED")
#end
#if(${list.contains(${bullets}, "fog")})
#set($headerType = "DENSE FOG")
#set($eventType = "DENSE FOG")
#set($reportLocation = "THE DENSE FOG WAS LOCATED")
#end
#######################################################################
## Section to create line wording based on track type.
#######################################################################
#set($stormline = "${headerType}")
#set($pathheader = "THE ${headerType}")
#set($specialEvent = "THIS ${eventType}")
#set($reportType2 = "THE ${eventType} WAS")
#if(${stormType} == "line")
#set($stormline = "LINE OF ${headerType}S")
#set($pathheader = "${headerType}S")
#set($specialEvent = "THESE ${eventType}S")
#set($headerType = "A ${headerType}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 = "${eventType}")
#set($pathheader = "THE ${eventType}")
#set($specialEvent = "THIS ${eventType}")
#set($reportType2 = "THE ${eventType} WAS")
#end
#######################################################################
## Corrective coding to prevent the use of "Line of Dense Fog" in the Product
#######################################################################
#if(${eventType} == "DENSE FOG")
#set($stormline = "${eventType}")
#set($pathheader = "THE ${eventType}")
#set($specialEvent = "THIS ${eventType}")
#set($reportType2 = "THE ${eventType} WAS")
#end
#if(${eventType} == "CLOUD")
#set($pathheader = "THE STRONG WINDS")
#end
#set($threatType = "WINDS UP TO 33 KNOTS")
#set($headerType1 = "...STRONG WINDS EXPECTED...")
#if(${list.contains(${bullets}, "approachHead")})
#set($headerType1 = "...${stormline} APPROACHING THE WATERS...")
#*
#if(${eventType} == "THUNDERSTORM")
#set($headerType1 = "...${stormline} APPROACHING THE WATERS...")
#else
#set($headerType1 = "...STRONG WINDS EXPECTED...")
#end
*#
#end
#if(${list.contains(${bullets}, "overHead")})
#set($headerType1 = "...${stormline} OVER THE WATERS...")
#*
#if(${eventType} == "THUNDERSTORM")
#set($headerType1 = "...${stormline} OVER THE WATERS...")
#else
#set($headerType1 = "...STRONG WINDS EXPECTED...")
#end
*#
#end
#######################################################################
## Added Hail Section
#######################################################################
#if(${list.contains(${bullets}, "smallHail")})
#set($hailType = " AND SMALL HAIL")
#end
#######################################################################
## Section to produce areas affected by statement
#######################################################################
#if(${list.contains(${bullets}, "noHead")})
A MARINE WEATHER STATEMENT HAS BEEN ISSUED FOR THE FOLLOWING AREAS...
#else
${headerType1}
THE AREAS AFFECTED INCLUDE...
#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})
#wrapText("${area.name}..." 2 2)
#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
#######################################################################
#*
###################################################################################################
## The following code is an example of how to combine marine zones for 3 continuous marine zones
## Note you start out with the largest combination first then whittle it down until you only have
## one zone left. You can do this as many times as you wish for as many combinations as you have.
## Make sure you comment out the ${area.name}... line above to use the marine zone combination
## If you have any questions contact: Phil Kurimski - WFO DTX
###################################################################################################
#set($zonecombo = "")
#if(($fipsstring.contains("AMZ154")) && ($fipsstring.contains("AMZ156")) && ($fipsstring.contains("AMZ152")))
#set($zonecombo = "COASTAL WATERS FROM OREGON INLET TO CAPE LOOKOUT NC OUT 20 NM...")
#elseif(($fipsstring.contains("AMZ154")) && ($fipsstring.contains("AMZ156")))
#set($zonecombo = "COASTAL WATERS FROM CAPE HATTERAS TO CAPE LOOKOUT NC OUT 20 NM...")
#elseif(($fipsstring.contains("AMZ152")) && ($fipsstring.contains("AMZ154")))
#set($zonecombo = "COASTAL WATERS FROM OREGON INLET TO OCRACOKE INLET NC OUT 20 NM...")
#elseif($fipsstring.contains("AMZ154"))
#set($zonecombo = "COASTAL WATERS FROM CAPE HATTERAS TO OCRACOKE INLET NC OUT 20 NM...")
#elseif($fipsstring.contains("AMZ156"))
#set($zonecombo = "COASTAL WATERS FROM OCRACOKE INLET TO CAPE LOOKOUT NC OUT 20 NM...")
#elseif($fipsstring.contains("AMZ152"))
#set($zonecombo = "COASTAL WATERS FROM OREGON INLET TO CAPE HATTERAS NC OUT 20 NM...")
#end
$zonecombo
*#
#######################################################################
## 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 **! ${threatType}")
#if(${list.contains(${bullets}, "doppler")})
#set($capable = "CAPABLE OF ")
#set($report = "DOPPLER RADAR INDICATED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($capable = "CAPABLE OF ")
#set($report = "DOPPLER RADAR INDICATED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
#if(${list.contains(${bullets}, "marineSpotter")})
#set($report = "MARINE WEATHER SPOTTERS REPORTED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($report = "MARINE WEATHER SPOTTERS REPORTED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
#if(${list.contains(${bullets}, "mariner")})
#set($report = "A MARINER REPORTED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($report = "A MARINER REPORTED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
#if(${list.contains(${bullets}, "public")})
#set($report = "THE PUBLIC REPORTED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($report = "THE PUBLIC REPORTED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
#if(${list.contains(${bullets}, "satellite")})
#set($capable = "CAPABLE OF ")
#set($report = "SATELLITE IMAGERY INDICATED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($capable = "CAPABLE OF ")
#set($report = "SATELLITE IMAGERY INDICATED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
#if(${list.contains(${bullets}, "pilot")})
#set($report = "A PILOT REPORTED A ${stormline}...${capable}PRODUCING ${threatType}${hailType}.")
#if(${list.contains(${bullets}, "fog")})
#set($report = "A PILOT REPORTED AN AREA OF ${stormline}...${capable}REDUCING VISIBILITIES TO BELOW ${visibility}.")
#end
#end
## Storm current location description
#if(${productClass}=="T")
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}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine})
#else
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceCell})
#end
#if(${movementSpeed} < ${marineStationary} || ${stationary})
. ${reportType2} NEARLY STATIONARY.
#else
...MOVING #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} KNOTS.
#end
#set($warningType = "STATEMENT")
#if(${list.contains(${bullets}, "pathcast")})
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
#pathCast("${pathheader} WILL BE NEAR..." ${pathheader} ${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("LOCATIONS IMPACTED INCLUDE..." ${pathheader} 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'
## Added CTA statements for the possibility of future SMW.
#######################################################################
#foreach (${bullet} in ${bullets})
#if(${bullet.endsWith("CTA")})
#set($ctaSelected = "YES")
#end
#end
#if(${ctaSelected} == "YES")
PRECAUTIONARY/PREPAREDNESS ACTIONS...
#end
##
#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.
#end
#if(${list.contains(${bullets}, "fogCTA")})
DENSE FOG WAS REDUCING VISIBILITIES TO BELOW ${visibility}. REDUCE YOUR SPEED...AND KEEP A LOOKOUT FOR OTHER VESSELS...BUOYS...AND BREAKWATERS. KEEP YOUR NAVIGATION LIGHTS ON. IF NOT EQUIPPED WITH RADAR...YOU SHOULD CONSIDER SEEKING SAFE HARBOR.
#end
#if(${ctaSelected} == "YES")
&&
#end
#############
## WATCHES ##
#############
#if(${list.contains($includedWatches, "TO.A")} && ${list.contains(${bullets}, "includeTorWatches")})
#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
#if(${list.contains(${includedWatches}, "SV.A")} && ${list.contains(${bullets}, "includeSvrWatches")})
#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})
$$
#parse("forecasterName.vm")