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
405 lines
18 KiB
Text
Executable file
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")
|