902 lines
36 KiB
Text
902 lines
36 KiB
Text
##############################
|
|
## FLOOD ADVISORY FOLLOW-UP ##
|
|
##############################
|
|
#########################################################################################
|
|
## 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 ##
|
|
## Mike Rega 1-18-2014 added Alaska GP changes for 14.2.1 ##
|
|
## Phil Kurimski 6-24-2014 altered urbanCTA for more succinct words ##
|
|
## Mike Dangelo 3-26-2015 Mixed Case changes ##
|
|
## Evan Bookbinder 9-4-2015 Fixed line of storms grammar ##
|
|
## Mike Dangelo 10-20-2015 Standard CTAs ##
|
|
## Phil Kurimski 10-21-2015 Back to the future day! Insert default end stmt ##
|
|
## Phil/Dave 10-20-2015 Added Canned statement for CAN ##
|
|
## Evan Bookbinder 12-7-2015 Added missing satellite source ##
|
|
## Evan Bookbinder 12-07-16 Fixed grammar error DR 19344 ##
|
|
#########################################################################################
|
|
#parse("config.vm")
|
|
#if(${action} == "EXT")
|
|
#set($starttime = "000000T0000Z")
|
|
#set($extend = true)
|
|
#else
|
|
#set($starttime = ${dateUtil.format(${start}, ${timeFormat.ymdthmz})})
|
|
#set($extend = false)
|
|
#end
|
|
##
|
|
#set($advType = "FLOOD ADVISORY")
|
|
#set($advTypeShort = "minor flooding")
|
|
#if(${list.contains(${bullets}, "small")})
|
|
#set($advType = "SMALL STREAM FLOOD ADVISORY")
|
|
#set($advTypeShort = "small stream flooding")
|
|
#elseif(${list.contains(${bullets}, "uss")})
|
|
#set($advType = "URBAN AND SMALL STREAM FLOOD ADVISORY")
|
|
#set($advTypeShort = "urban and small stream flooding")
|
|
#elseif(${list.contains(${bullets}, "arroyo")})
|
|
#set($advType = "ARROYO AND SMALL STREAM FLOOD ADVISORY")
|
|
#set($advTypeShort = "arroyo and small stream flooding")
|
|
#elseif(${list.contains(${bullets}, "hydrologic")})
|
|
#set($advType = "HYDROLOGIC ADVISORY")
|
|
#set($advTypeShort = "minor flooding")
|
|
#end
|
|
|
|
#set($hycType = "")
|
|
#set ($report = "!** warning basis **!")
|
|
#set ($report2 = "")
|
|
#set ($cause = "heavy rain")
|
|
#if(${ic} == "SM")
|
|
#set ($cause = "snowmelt")
|
|
#set ($hycType = "FOR SNOWMELT ")
|
|
#end
|
|
#if(${ic} == "RS")
|
|
#set ($cause = "rain and snowmelt")
|
|
#set ($hycType = "FOR RAIN AND SNOWMELT ")
|
|
#end
|
|
#if(${ic} == "IJ")
|
|
#set ($cause = "an ice jam")
|
|
#set ($hycType = "FOR AN ICE JAM ")
|
|
#end
|
|
#if(${ic} == "DR")
|
|
#set ($cause = "a dam floodgate release")
|
|
#set ($hycType = "FOR A DAM FLOODGATE RELEASE ")
|
|
#end
|
|
#if(${ic} == "IC")
|
|
#set ($cause = "an ice jam and heavy rain")
|
|
#end
|
|
#if(${list.contains(${bullets}, "rapidRises")})
|
|
#set ($report2 = ". Rapid rises will result in minor flooding")
|
|
#set ($hycType = "${hycType}FOR RAPID RISES ")
|
|
#end
|
|
#if(${list.contains(${bullets}, "poorDrainage")})
|
|
#set ($report2 = ". Overflowing poor drainage areas will result in minor flooding")
|
|
#set ($hycType = "${hycType}FOR MINOR FLOODING IN POOR DRAINAGE AREAS ")
|
|
#end
|
|
#set($rainAmount = "")
|
|
#if(${list.contains(${bullets}, "rain1")} )
|
|
#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.")
|
|
#end
|
|
#if(${list.contains(${bullets}, "rain3")} )
|
|
#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.")
|
|
#end
|
|
#if(${list.contains(${bullets}, "doppler")})
|
|
#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")
|
|
#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")
|
|
#end
|
|
#if(${list.contains(${bullets}, "dopplerGauge")})
|
|
#set ($report = "Doppler radar and automated rain gauges indicated ${cause}. This 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")
|
|
#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")
|
|
#end
|
|
#if(${list.contains(${bullets}, "trainedSpotters")})
|
|
#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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "trainedSpotters")} && ${list.contains(${bullets}, "actual")})
|
|
#set ($report = "trained weather spotters reported ${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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "lawEnforcement")})
|
|
#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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "lawEnforcement")} && ${list.contains(${bullets}, "actual")})
|
|
#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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "emergencyManagement")})
|
|
#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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "emergencyManagement")} && ${list.contains(${bullets}, "actual")})
|
|
#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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "public")})
|
|
#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 ${advTypeShort} in !** LOCATION **! due to thunderstorms. This will cause ${advTypeShort}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "actual")})
|
|
#set ($report = "the public reported ${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}")
|
|
#end
|
|
#if(${list.contains(${bullets}, "satelliteEstimates")})
|
|
#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}.")
|
|
#end
|
|
#### added by GP
|
|
#if(${list.contains(${bullets}, "onlyGauge")})
|
|
#set ($report = "gauge reports indicated !**EVENT TYPE**!." )
|
|
#end
|
|
### GP end
|
|
##########################################
|
|
## FLOOD ADVISORY FOLLOW-UP HEADER INFO ##
|
|
##########################################
|
|
|
|
#if(${action}=="COR" && ${cancelareas})
|
|
#set($CORCAN = "true")
|
|
#else
|
|
#set($CORCAN = "false")
|
|
#end
|
|
#if(${action}!="CANCON" && ${CORCAN}!="true")
|
|
${WMOId} ${vtecOffice} 000000 ${BBBId}
|
|
${productId}${siteId}
|
|
|
|
#if(${productClass}=="T")
|
|
TEST...Flood Advisory...TEST
|
|
#else
|
|
Flood Advisory
|
|
#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}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/
|
|
/00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/
|
|
#foreach (${area} in ${areas})
|
|
#capitalize(${area.name} "FIRST")
|
|
#if(${includeStateAbbreviation}==true)
|
|
${area.stateabbr}##
|
|
#end
|
|
-##
|
|
#end
|
|
|
|
${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
|
|
|
|
|
#if(${productClass}=="T")
|
|
...THIS MESSAGE IS FOR TEST PURPOSES ONLY...
|
|
|
|
#end
|
|
#end
|
|
########################
|
|
## FLOOD ADVISORY CAN ##
|
|
########################
|
|
#if(${action}=="CAN")
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE.##
|
|
#end
|
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${affectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
|
|
#if(${list.contains(${bullets}, "recedingWater")} && ${list.contains(${bullets}, "rainEnded")})
|
|
|
|
The heavy rain has ended and flood waters have receded#commaOrEllipsis()no longer posing a threat to life or property. Please continue to heed any road closures.
|
|
#elseif(${list.contains(${bullets}, "recedingWater")})
|
|
|
|
Flood waters have receded#commaOrEllipsis()and are no longer expected to pose a threat to life or property. Please continue to heed any road closures.
|
|
#elseif(${list.contains(${bullets}, "rainEnded")})
|
|
|
|
The heavy rain has ended#commaOrEllipsis()and flooding is no longer expected to pose a threat.
|
|
#else
|
|
|
|
!** The heavy rain has ended. !** OR **! The flood water is receding. Therefore#commaOrEllipsis()the flooding threat has ended. **!
|
|
#end
|
|
|
|
#end
|
|
########################
|
|
## FLOOD ADVISORY EXP ##
|
|
########################
|
|
#if(${action}=="EXP")
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE.##
|
|
#end
|
|
...THE ${advType} ${hycType}##
|
|
#if(${now.compareTo(${expire})} > -1)
|
|
EXPIRED AT #headlineExpire(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
|
#else
|
|
WILL EXPIRE AT #headlineExpire(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
|
#end
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${affectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
|
|
#if(${list.contains(${bullets}, "recedingWater")})
|
|
The high water is receding#commaOrEllipsis()and is no longer expected to pose a threat. Please continue to heed any road closures.
|
|
|
|
#end
|
|
|
|
#if(${list.contains(${bullets}, "rainEnded")})
|
|
The heavy rain has ended#commaOrEllipsis()and flooding is no longer expected to pose a threat.
|
|
|
|
#end
|
|
#end
|
|
########################
|
|
## FLOOD ADVISORY CON ##
|
|
########################
|
|
#if(${action}=="CON" || (${action}=="COR" && ${CORCAN}=="false"))
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE.##
|
|
#end
|
|
...THE ${advType} ${hycType}REMAINS IN EFFECT UNTIL #headlineExpire(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${afectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
### GP end
|
|
########### END HEADLINE CODE ####################
|
|
|
|
#if(${productClass}=="T")
|
|
|
|
THIS IS A TEST MESSAGE. ##
|
|
#end
|
|
#if(${ic} == "DR")
|
|
Flooding will continue !** Specify location(s) **! due to an upstream dam floodgate release.
|
|
|
|
#else
|
|
############# IF TRACK IS ENABLED AND stormPosition SELECTED ###############################################
|
|
#if(${list.contains(${bullets},"stormPosition")})
|
|
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
|
|
#set($phenom="")
|
|
#set($waswere="was")
|
|
#if(${stormType} == "line" && ${list.contains(${bullets}, "thunder")})
|
|
#set($phenom="thunderstorms producing ")
|
|
#set($waswere="were")
|
|
#elseif(${list.contains(${bullets}, "thunder")})
|
|
#set($phenom="a thunderstorm producing ")
|
|
#end
|
|
#commaOrEllipsis()${phenom}heavy rain ${waswere} located ##
|
|
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine})
|
|
#if(${movementSpeed} < ${landStationary} || ${stationary})
|
|
#commaOrEllipsis()and is stationary. ##
|
|
#else
|
|
#if(${stormType} == "line")
|
|
#commaOrEllipsis()and moving ##
|
|
#else
|
|
#commaOrEllipsis()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})
|
|
#commaOrEllipsis()${report}. ${rainAmount}
|
|
|
|
#end
|
|
#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
|
|
#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
|
|
## parse file command here is to pull in mile marker info
|
|
## #parse("mileMarkers.vm")
|
|
## Uncomment below to pull in point marker info
|
|
## #parse("pointMarkers.vm")
|
|
|
|
#if(${list.contains(${bullets}, "addRainfall")})
|
|
Additional rainfall of !** EDIT AMOUNT **! inches is expected over the area. This additional rain will result in minor flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "specificPlace")})
|
|
Minor flooding is occurring near !** ENTER LOCATION **!.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "drainages")})
|
|
#drainages(${riverdrainages})
|
|
|
|
#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
|
|
#if(${list.contains(${bullets}, "TADD_CTA")})
|
|
Turn around#commaOrEllipsis()don't drown when encountering flooded roads. Most flood deaths occur in vehicles.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "childSafetyCTA")})
|
|
Keep children away from storm drains#commaOrEllipsis()culverts#commaOrEllipsis()creeks and streams. Water levels can rise rapidly and sweep children away.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "nighttimeCTA")})
|
|
Be especially cautious at night when it is harder to recognize the dangers of flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "urbanCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()urban areas#commaOrEllipsis()highways#commaOrEllipsis()streets and underpasses as well as other drainage areas and low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "ruralCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()country roads#commaOrEllipsis()farmland#commaOrEllipsis()and other low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "stayAwayCTA")})
|
|
Stay away or be swept away. River banks and culverts can become unstable and unsafe.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "lowSpotsCTA")})
|
|
In hilly terrain there are hundreds of low water crossings which are potentially dangerous in heavy rain. Do not attempt to cross flooded roads. Find an alternate route.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "arroyosCTA")})
|
|
Remain alert for flooding even in locations not receiving rain. Arroyos#commaOrEllipsis()streams#commaOrEllipsis()and rivers can become raging killer currents in a matter of minutes#commaOrEllipsis()even from distant rainfall.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "burnAreasCTA")})
|
|
Move away from recently burned areas. Life threatening flooding of creeks#commaOrEllipsis()roads and normally dry arroyos is likely. The heavy rains will likely trigger rockslides#commaOrEllipsis()mudslides and debris flows in steep terrain#commaOrEllipsis()especially in and around these areas.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "camperSafetyCTA")})
|
|
Flooding is occurring or is imminent. It is important to know where you are relative to streams#commaOrEllipsis()rivers#commaOrEllipsis()or creeks which can become killers in heavy rains. Campers and hikers should avoid streams or creeks.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "reportFloodingCTA")})
|
|
Please report flooding to your local law enforcement agency when you can do so safely.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "advisoryMeansCTA")})
|
|
A Flood Advisory means river or stream flows are elevated#commaOrEllipsis()or ponding of water in urban or other areas is occurring or is imminent.
|
|
|
|
#end
|
|
#if(${ctaSelected} == "YES")
|
|
&&
|
|
|
|
#end
|
|
#################################### END OF CTA STUFF ###################################
|
|
|
|
#end
|
|
############################
|
|
## FLOOD ADVISORY CAN/CON ##
|
|
############################
|
|
#if(${action}=="CANCON")
|
|
${WMOId} ${vtecOffice} 000000 ${BBBId}
|
|
${productId}${siteId}
|
|
|
|
#if(${productClass}=="T")
|
|
TEST...Flood Advisory...TEST
|
|
#else
|
|
Flood Advisory
|
|
#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}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/
|
|
/00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/
|
|
#foreach (${area} in ${cancelareas})
|
|
#capitalize(${area.name} "FIRST")
|
|
#if(${includeStateAbbreviation}==true)
|
|
${area.stateabbr}##
|
|
#end
|
|
-##
|
|
#end
|
|
|
|
${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 ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${cancelaffectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${cancelareas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE
|
|
###headlineLocList(${cancelaffectedCounties} true true true false "ALL")...
|
|
########### END NEW HEADLINE CODE ####################
|
|
|
|
!** THE HEAVY RAIN HAS ENDED (AND/OR) FLOOD WATER IS RECEDING. THEREFORE#commaOrEllipsis()THE FLOODING THREAT HAS ENDED. **!
|
|
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
|
|
|
|
#end
|
|
#printcoords(${areaPoly}, ${list})
|
|
|
|
|
|
$$
|
|
|
|
${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})
|
|
#capitalize(${area.name} "FIRST")
|
|
#if(${includeStateAbbreviation}==true)
|
|
${area.stateabbr}##
|
|
#end
|
|
-##
|
|
#end
|
|
|
|
${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 ${advType} REMAINS IN EFFECT UNTIL #headlineExpire(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${affectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
########### END NEW 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})
|
|
#if(${stormType} == "line")
|
|
#commaOrEllipsis()thunderstorms producing heavy rain were located ##
|
|
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine})
|
|
#else
|
|
#commaOrEllipsis()a thunderstorm producing heavy rain was located ##
|
|
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell})
|
|
#end
|
|
#if(${movementSpeed} < ${landStationary} || ${stationary})
|
|
. Movement is stationary. ##
|
|
#else
|
|
#if(${stormType} == "line")
|
|
#commaOrEllipsis()and moving ##
|
|
#else
|
|
#commaOrEllipsis()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})
|
|
#commaOrEllipsis()${report}. ${rainAmount}
|
|
|
|
#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
|
|
#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
|
|
## parse file command here is to pull in mile marker info
|
|
## #parse("mileMarkers.vm")
|
|
## Uncomment below to pull in point marker info
|
|
## #parse("pointMarkers.vm")
|
|
|
|
#if(${list.contains(${bullets}, "addRainfall")})
|
|
Additional rainfall of !** EDIT AMOUNT **! inches is expected over the area. This additional rain will result in minor flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "specificPlace")})
|
|
Minor flooding is occurring near !** Enter Location **!.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "drainages")})
|
|
#drainages(${riverdrainages})
|
|
|
|
#end
|
|
#####################
|
|
## CALL TO ACTIONS ##
|
|
#####################
|
|
#foreach (${bullet} in ${bullets})
|
|
#if(${bullet.endsWith("CTA")})
|
|
#set ($ctaSelected = "YES")
|
|
#end
|
|
#end
|
|
##
|
|
#if(${ctaSelected} == "YES")
|
|
PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "TADD_CTA")})
|
|
Turn around#commaOrEllipsis()don't drown when encountering flooded roads. Most flood deaths occur in vehicles.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "childSafetyCTA")})
|
|
Keep children away from storm drains#commaOrEllipsis()culverts#commaOrEllipsis()creeks and streams. Water levels can rise rapidly and sweep children away.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "nighttimeCTA")})
|
|
Be especially cautious at night when it is harder to recognize the dangers of flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "urbanCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()urban areas#commaOrEllipsis()highways#commaOrEllipsis()streets and underpasses as well as other drainage areas and low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "ruralCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()country roads#commaOrEllipsis()farmland#commaOrEllipsis()and other low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "stayAwayCTA")})
|
|
Stay away or be swept away. River banks and culverts can become unstable and unsafe.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "lowSpotsCTA")})
|
|
In hilly terrain there are hundreds of low water crossings which are potentially dangerous in heavy rain. Do not attempt to cross flooded roads. Find an alternate route.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "arroyosCTA")})
|
|
Remain alert for flooding even in locations not receiving rain. Arroyos#commaOrEllipsis()streams#commaOrEllipsis()and rivers can become raging killer currents in a matter of minutes#commaOrEllipsis()even from distant rainfall.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "burnAreasCTA")})
|
|
Move away from recently burned areas. Life threatening flooding of creeks#commaOrEllipsis()roads and normally dry arroyos is likely. The heavy rains will likely trigger rockslides#commaOrEllipsis()mudslides and debris flows in steep terrain#commaOrEllipsis()especially in and around these areas.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "camperSafetyCTA")})
|
|
Flooding is occurring or is imminent. It is important to know where you are relative to streams#commaOrEllipsis()rivers#commaOrEllipsis()or creeks which can become killers in heavy rains. Campers and hikers should avoid streams or creeks.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "reportFloodingCTA")})
|
|
Please report flooding to your local law enforcement agency when you can do so safely.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "advisoryMeansCTA")})
|
|
A Flood Advisory means river or stream flows are elevated#commaOrEllipsis()or ponding of water in urban or other areas is occurring or is imminent.
|
|
|
|
#end
|
|
#if(${ctaSelected} == "YES")
|
|
&&
|
|
|
|
#end
|
|
#################################### END OF CTA STUFF ###################################
|
|
#elseif(${CORCAN}=="true")
|
|
${WMOId} ${vtecOffice} 000000 ${BBBId}
|
|
${productId}${siteId}
|
|
|
|
#if(${productClass}=="T")
|
|
TEST...Flood Advisory...TEST
|
|
#else
|
|
Flood Advisory
|
|
#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}.FA.Y.${etn}.000000T0000Z-${dateUtil.format(${expire}, ${timeFormat.ymdthmz}, 15)}/
|
|
/00000.N.${ic}.000000T0000Z.000000T0000Z.000000T0000Z.OO/
|
|
#foreach (${area} in ${cancelareas})
|
|
#capitalize(${area.name} "ALL")
|
|
#if(${includeStateAbbreviation}==true)
|
|
${area.stateabbr}##
|
|
#end
|
|
-##
|
|
#end
|
|
|
|
${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 ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${affectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
########### END NEW HEADLINE CODE ####################
|
|
|
|
!** THE HEAVY RAIN HAS ENDED (AND/OR) FLOOD WATER IS RECEDING. THEREFORE#commaOrEllipsis()THE FLOODING THREAT HAS ENDED. **!
|
|
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
|
|
|
|
#end
|
|
#printcoords(${areaPoly}, ${list})
|
|
|
|
|
|
$$
|
|
|
|
${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})
|
|
#capitalize(${area.name} "ALL")
|
|
#if(${includeStateAbbreviation}==true)
|
|
${area.stateabbr}##
|
|
#end
|
|
-##
|
|
#end
|
|
|
|
${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 ${advType} REMAINS IN EFFECT UNTIL #headlineExpire(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
|
#### modified by GP
|
|
#if(${alaska}=="true")
|
|
!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
|
|
#elseif(${wrZoneCounty}=="true")
|
|
#headlineLocList(${affectedCounties} true true true false "ALL")...
|
|
#else
|
|
#headlineLocList(${areas} true true true false "ALL")...
|
|
#end
|
|
#### GP End
|
|
########### END NEW HEADLINE CODE ####################
|
|
|
|
#if(${productClass}=="T")
|
|
|
|
THIS IS A TEST MESSAGE. ##
|
|
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
|
|
#commaOrEllipsis()!** warning basis **!
|
|
#else
|
|
|
|
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
|
|
#commaOrEllipsis()${report}. ${rainAmount}
|
|
#end
|
|
|
|
#set ($phenomena = "FLASH FLOOD")
|
|
#set ($warningType = "ADVISORY")
|
|
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE. ##
|
|
#end
|
|
#locationsList("Some locations that will experience minor flooding include" "The flooding is expected to impact mainly rural areas of" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
|
|
|
|
#if(${list.contains(${bullets}, "addRainfall")})
|
|
Additional rainfall of !** EDIT AMOUNT **! inches is expected over the area. This additional rain will result in minor flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "specificPlace")})
|
|
Minor flooding is occurring near !** ENTER LOCATION **!.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "drainages")})
|
|
#drainages(${riverdrainages})
|
|
|
|
#end
|
|
|
|
## parse file command here is to pull in mile marker info
|
|
## #parse("mileMarkers.vm")
|
|
## Uncomment below to pull in point marker info
|
|
## #parse("pointMarkers.vm")
|
|
|
|
#####################
|
|
## CALL TO ACTIONS ##
|
|
#####################
|
|
#foreach (${bullet} in ${bullets})
|
|
#if(${bullet.endsWith("CTA")})
|
|
#set ($ctaSelected = "YES")
|
|
#end
|
|
#end
|
|
##
|
|
#if(${ctaSelected} == "YES")
|
|
PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "TADD_CTA")})
|
|
Turn around#commaOrEllipsis()don't drown when encountering flooded roads. Most flood deaths occur in vehicles.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "childSafetyCTA")})
|
|
Keep children away from storm drains#commaOrEllipsis()culverts#commaOrEllipsis()creeks and streams. Water levels can rise rapidly and sweep children away.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "nighttimeCTA")})
|
|
Be especially cautious at night when it is harder to recognize the dangers of flooding.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "urbanCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()urban areas#commaOrEllipsis()highways#commaOrEllipsis()streets and underpasses as well as other drainage areas and low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "ruralCTA")})
|
|
Excessive runoff from heavy rainfall will cause flooding of small creeks and streams#commaOrEllipsis()country roads#commaOrEllipsis()farmland#commaOrEllipsis()and other low lying spots.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "stayAwayCTA")})
|
|
Stay away or be swept away. River banks and culverts can become unstable and unsafe.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "lowSpotsCTA")})
|
|
In hilly terrain there are hundreds of low water crossings which are potentially dangerous in heavy rain. Do not attempt to cross flooded roads. Find an alternate route.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "arroyosCTA")})
|
|
Remain alert for flooding even in locations not receiving rain. Arroyos#commaOrEllipsis()streams#commaOrEllipsis()and rivers can become raging killer currents in a matter of minutes#commaOrEllipsis()even from distant rainfall.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "burnAreasCTA")})
|
|
Move away from recently burned areas. Life threatening flooding of creeks#commaOrEllipsis()roads and normally dry arroyos is likely. The heavy rains will likely trigger rockslides#commaOrEllipsis()mudslides and debris flows in steep terrain#commaOrEllipsis()especially in and around these areas.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "camperSafetyCTA")})
|
|
Flooding is occurring or is imminent. It is important to know where you are relative to streams#commaOrEllipsis()rivers#commaOrEllipsis()or creeks which can become killers in heavy rains. Campers and hikers should avoid streams or creeks.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "reportFloodingCTA")})
|
|
Please report flooding to your local law enforcement agency when you can do so safely.
|
|
|
|
#end
|
|
#if(${list.contains(${bullets}, "advisoryMeansCTA")})
|
|
A Flood Advisory means river or stream flows are elevated#commaOrEllipsis()or ponding of water in urban or other areas is occurring or is imminent.
|
|
|
|
#end
|
|
#if(${ctaSelected} == "YES")
|
|
&&
|
|
|
|
#end
|
|
#end
|
|
#if(${productClass}=="T")
|
|
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
|
|
|
|
#end
|
|
|
|
#printcoords(${areaPoly}, ${list})
|
|
|
|
|
|
$$
|
|
|
|
#parse("forecasterName.vm")
|