Merge tag 'OB_16.2.2-16' into omaha_16.2.2
16.2.2-16 Former-commit-id: b07d1c4eb41ee65ded32a0c6ee5b4ce9e5001ed8
This commit is contained in:
commit
06b430a2c7
64 changed files with 846 additions and 381 deletions
|
@ -88,7 +88,9 @@ import com.raytheon.uf.viz.spellchecker.jobs.SpellCheckJob;
|
|||
* 08/31/2015 #4781 dgilling Improve handling of proper nouns in all
|
||||
* caps mode, move override dictionary to
|
||||
* SITE level.
|
||||
*
|
||||
* 05/25/2016 DR16930 MPorricelli Added suggestionsBlackList to spellCheckJob
|
||||
* for flagging of words that are in
|
||||
* inappropriateWords.txt blacklist
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -257,6 +259,7 @@ public class SpellCheckDlg extends Dialog implements ISpellingProblemCollector {
|
|||
spellCheckJob.setCollector(this);
|
||||
|
||||
suggestionsBlacklist = getSuggestionsBlacklist();
|
||||
spellCheckJob.setBlacklist(suggestionsBlacklist);
|
||||
}
|
||||
|
||||
private Collection<String> getSuggestionsBlacklist() {
|
||||
|
|
|
@ -23,7 +23,15 @@ import java.io.BufferedReader;
|
|||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Deque;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
|
@ -56,6 +64,8 @@ import com.raytheon.uf.viz.spellchecker.Activator;
|
|||
* 01Mar2010 4765 MW Fegan Moved from GFE plug-in.
|
||||
* 18Oct2010 11237 rferrel Created readLine in order to compute
|
||||
* offsets for start of line correctly.
|
||||
* 25May2016 DR16930 MPorricelli Added flagging of words that are in
|
||||
* inappropriateWords.txt blacklist
|
||||
* </pre>
|
||||
*
|
||||
* @author wldougher
|
||||
|
@ -92,6 +102,8 @@ public class SpellCheckJob extends Job implements ISpellingProblemCollector {
|
|||
|
||||
private String line;
|
||||
|
||||
private Collection<String> blackList;
|
||||
|
||||
private String vtecRegex = new String(
|
||||
"/[OTEX]\\.([A-Z]{3})\\.([A-Z]{4})\\.([A-Z]{2})\\."
|
||||
+ "([WAYSOFN])\\.([0-9]{4})\\.([0-9]{6})T([0-9]{4})Z-"
|
||||
|
@ -220,8 +232,55 @@ public class SpellCheckJob extends Job implements ISpellingProblemCollector {
|
|||
synchronized (this) {
|
||||
service.check(document, regions, context, this, monitor);
|
||||
}
|
||||
// Look in this line for words that are in
|
||||
// inappropriateWords.txt
|
||||
// If one is found and it has not already been flagged by the
|
||||
// Eclipse spell check above, add it to problems
|
||||
Pattern pattern = Pattern.compile("\\w+");
|
||||
Matcher matcher = pattern.matcher(line);
|
||||
while (matcher.find()) {
|
||||
String currentWord = matcher.group();
|
||||
if (blackList != null
|
||||
&& blackList.contains(currentWord.toUpperCase())) {
|
||||
int length = currentWord.length();
|
||||
int offset = matcher.start();
|
||||
SpellingProblem blacklistProblem = new AnotherSpellingProblem(
|
||||
offset, length, currentWord);
|
||||
if (problems.isEmpty())
|
||||
problems.add(blacklistProblem);
|
||||
else {
|
||||
Boolean problemAlreadyFlagged = false;
|
||||
Iterator<SpellingProblem> probIter = problems
|
||||
.iterator();
|
||||
while (probIter.hasNext()) {
|
||||
if (probIter.next().getOffset() == blacklistProblem
|
||||
.getOffset()) {
|
||||
problemAlreadyFlagged = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!problemAlreadyFlagged)
|
||||
problems.add(blacklistProblem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sort the problems by position (offset) in this line of text
|
||||
List<SpellingProblem> problemsList;
|
||||
problemsList = new ArrayList<SpellingProblem>();
|
||||
if (!problems.isEmpty()) {
|
||||
problemsList.addAll(problems);
|
||||
Collections.sort(problemsList, new Comparator<SpellingProblem>() {
|
||||
@Override
|
||||
public int compare(SpellingProblem sp1, SpellingProblem sp2) {
|
||||
return Integer.valueOf(sp1.getOffset()).compareTo(
|
||||
Integer.valueOf(sp2.getOffset()));
|
||||
}
|
||||
});
|
||||
problems.clear();
|
||||
problems.addAll(problemsList);
|
||||
}
|
||||
|
||||
if (problems.size() > 0) {
|
||||
SpellingProblem lineProblem = problems.pollFirst();
|
||||
|
@ -327,6 +386,12 @@ public class SpellCheckJob extends Job implements ISpellingProblemCollector {
|
|||
this.collector = collector;
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlacklist(Collection<String> suggestionsBlacklist) {
|
||||
synchronized (this) {
|
||||
this.blackList = suggestionsBlacklist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -388,3 +453,49 @@ class RevisedProblem extends SpellingProblem {
|
|||
return lineProblem.getProposals();
|
||||
}
|
||||
}
|
||||
|
||||
class AnotherSpellingProblem extends SpellingProblem {
|
||||
int offset;
|
||||
int length;
|
||||
String message;
|
||||
|
||||
AnotherSpellingProblem(int offSet, int wordLength, String word) {
|
||||
super();
|
||||
this.offset = offSet;
|
||||
this.length = wordLength;
|
||||
this.message = "The word '" + word + "' is not correctly spelled";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return this.offset;
|
||||
}
|
||||
|
||||
public void setOffset(int offSet) {
|
||||
this.offset = offSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLength() {
|
||||
return this.length;
|
||||
}
|
||||
|
||||
public void setLength(int wordLength) {
|
||||
this.length = wordLength;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
|
||||
public void setMessage(String word) {
|
||||
this.message = "The word '" + word + "' is not correctly spelled";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICompletionProposal[] getProposals() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# Jan 16, 2015 4006 njensen create _getUniqueKeys() mask with dtype bool
|
||||
#
|
||||
# 06/08/16 19096 ryu Change mask to boolean data type
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
|
@ -243,8 +243,7 @@ class HazardUtils(SmartScript.SmartScript):
|
|||
|
||||
# returns a Numeric mask where each zone in zoneList is set to 1
|
||||
def _makeMask(self, zoneList):
|
||||
gridSize = self.getGridShape()
|
||||
mask = numpy.zeros(gridSize, dtype=numpy.int8)
|
||||
mask = self.empty(dtype=numpy.bool)
|
||||
eaList = self.editAreaList()
|
||||
for z in zoneList:
|
||||
if z in eaList:
|
||||
|
|
|
@ -80,6 +80,8 @@
|
|||
# Jan 28, 2016 5129 dgilling Support changes to IFPClient.
|
||||
# Feb 22, 2016 5374 randerso Added support for sendWFOMessage
|
||||
# Apr 05, 2016 5539 randerso Added exception when attempting create more than 256 Wx keys
|
||||
# 05/06/2016 18967 ryu Fix issue of contours plotted over ProposedWatches grid
|
||||
# when ViewWCL is run.
|
||||
#
|
||||
########################################################################
|
||||
import types, string, time, sys
|
||||
|
@ -1720,6 +1722,7 @@ class SmartScript(BaseTool.BaseTool):
|
|||
fitter = FitToData(self.__dataMgr, parm)
|
||||
fitter.fitToData()
|
||||
spatialMgr.activateParm(parm)
|
||||
spatialMgr.makeVisible(parm, True, True)
|
||||
spatialMgr.setSpatialEditorTime(timeRange.startTime().javaDate())
|
||||
|
||||
|
||||
|
|
|
@ -386,6 +386,7 @@ import com.raytheon.viz.ui.simulatedtime.SimulatedTimeOperations;
|
|||
* specific checks that need it.
|
||||
* Mar 17, 2016 RM 18727 D. Friedman Fix use of verification listener when entering and exiting editor.
|
||||
* Apr 15, 2016 RM 18870 D. Friedman Replace commas with ellipses only at start of edit and then word-wrap.
|
||||
* Jun 14, 2016 RM 17614 mgamazaychikov Fix loading of product on exit from edit mode.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -1422,6 +1423,11 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
|
||||
private static final String PARAGRAPH_PADDING_PATTERN_FILENAME = "textws/gui/ParagraphPaddingPattern.txt";
|
||||
|
||||
// derived from /data/fxa/nationalData/textQC.config
|
||||
private static final List<String> updateHeaderTimesPils = Arrays.asList(
|
||||
"EWW", "FFS", "FFW", "FLS", "FLW", "MWS", "NOW", "SMW", "SPS",
|
||||
"SVR", "SVS", "TOR");
|
||||
|
||||
/**
|
||||
* Constructor with additional cave style rules
|
||||
*
|
||||
|
@ -4160,6 +4166,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
* Enter the text editor mode.
|
||||
*/
|
||||
private void enterEditor() {
|
||||
// Reset the saved
|
||||
saved = false;
|
||||
if (!validateTime()) {
|
||||
return;
|
||||
}
|
||||
|
@ -4375,9 +4383,12 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
searchReplaceDlg.setEditMode(inEditMode);
|
||||
}
|
||||
|
||||
// Only set text to originalText for unsaved products
|
||||
if (!saved) {
|
||||
if (originalText != null) {
|
||||
textEditor.setText(originalText);
|
||||
}
|
||||
}
|
||||
|
||||
markUneditableText(textEditor);
|
||||
|
||||
|
@ -5137,14 +5148,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
statusHandler.handle(Priority.INFO,
|
||||
"Will NOT increment ETN for this product.");
|
||||
}
|
||||
/*
|
||||
*
|
||||
* The text product may have had it's VTEC, WMO, and MND time
|
||||
* modified in saveEditedProduct as well as having it's ETN
|
||||
* updated. Make sure these changes are reflected in the
|
||||
* text editor. DR17614
|
||||
*/
|
||||
updateTextEditor(copyUpdatedProduct(prod.getProduct(), body));
|
||||
// Update editor so the proper send times are displayed.
|
||||
textEditor.setText(prod.getProduct());
|
||||
}
|
||||
|
||||
String product = prod.getProduct();
|
||||
|
@ -5181,9 +5186,11 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
.isEmpty()) {
|
||||
inEditMode = false;
|
||||
}
|
||||
String practiceProd = TextDisplayModel.getInstance().getProduct(
|
||||
token);
|
||||
textEditor.setText(practiceProd);
|
||||
SendPracticeProductRequest req = new SendPracticeProductRequest();
|
||||
req.setProductText(TextDisplayModel.getInstance().getProduct(
|
||||
token));
|
||||
req.setProductText(practiceProd);
|
||||
req.setNotifyGFE(true);
|
||||
req.setDrtString(new SimpleDateFormat("yyyyMMdd_HHmm")
|
||||
.format(SimulatedTime.getSystemTime().getTime()));
|
||||
|
@ -5280,30 +5287,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
return req;
|
||||
}
|
||||
|
||||
private static String copyUpdatedProduct(String productString, String bodyString) {
|
||||
|
||||
/* The productString has already been updated before this function was
|
||||
* called, the purpose here is to remove an extraneous header that is
|
||||
* added. In the future, this function may need to perform updates on the
|
||||
* text added to the text editor but currently it only needs to remove
|
||||
* the header.
|
||||
*/
|
||||
String[] bodyStrings = bodyString.split("\n");
|
||||
String[] productStrings = productString.split("\n");
|
||||
|
||||
/* The difference between the bodyStrings and the productStrings
|
||||
* is a header. We begin by coping from the end of the header so
|
||||
* that it is effectively removed from the final String
|
||||
*/
|
||||
int textLinesDifference = productStrings.length - bodyStrings.length;
|
||||
StringBuilder updatedBody = new StringBuilder();
|
||||
for (int i = textLinesDifference; i < productStrings.length; ++i) {
|
||||
updatedBody.append(productStrings[i]).append("\n");
|
||||
}
|
||||
|
||||
return updatedBody.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Recreates the original message by combining the header and the body from
|
||||
* the edit windows.
|
||||
|
@ -5438,15 +5421,13 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
} else {
|
||||
productText = replaceDDHHMM(productText, currentDate);
|
||||
}
|
||||
VtecObject vtecObj = VtecUtil.parseMessage(productText);
|
||||
if (warnGenFlag) {
|
||||
/*
|
||||
* DR14613 - string currectDate is derived from Date now
|
||||
* ensuring the same time in WMO heading and in the MND
|
||||
* heading.
|
||||
*/
|
||||
productText = updateVtecTimes(productText, vtecObj, now);
|
||||
// Sync VTEC and MND header times with the header time for certain products
|
||||
if (updateHeaderTimesPils.contains(storedProduct.getNnnid())) {
|
||||
productText = updateHeaderTimes(productText, now);
|
||||
VtecObject vtecObj = VtecUtil.parseMessage(productText);
|
||||
if (vtecObj != null) {
|
||||
productText = updateVtecTimes(productText, vtecObj, now);
|
||||
}
|
||||
// Update editor so the proper send times are displayed.
|
||||
String[] b = productText.split("\n");
|
||||
StringBuilder body = new StringBuilder();
|
||||
|
@ -6187,6 +6168,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
* @param isObsUpdated
|
||||
*/
|
||||
public void executeCommand(ICommand command, final boolean isObsUpdated) {
|
||||
// Reset the saved
|
||||
saved = false;
|
||||
if (isDisposed()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -20,12 +20,22 @@
|
|||
package com.raytheon.viz.warngen.gis;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
|
@ -51,9 +61,17 @@ import com.raytheon.uf.common.status.PerformanceStatus;
|
|||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.localization.LocalizationManager;
|
||||
import com.raytheon.viz.warngen.gui.WarngenLayer;
|
||||
import com.raytheon.viz.warngen.util.Abbreviation;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import com.vividsolutions.jts.geom.GeometryCollection;
|
||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||
import com.vividsolutions.jts.geom.Polygon;
|
||||
import com.vividsolutions.jts.geom.Polygonal;
|
||||
import com.vividsolutions.jts.geom.TopologyException;
|
||||
import com.vividsolutions.jts.geom.prep.PreparedGeometry;
|
||||
//import com.raytheon.viz.warngen.gis.GisUtil.Direction;
|
||||
|
||||
|
@ -91,6 +109,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometry;
|
|||
* Mar 9, 2014 ASM #17190 D. Friedman Use fipsField and areaField for unique area ID.
|
||||
* May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging.
|
||||
* Dec 15, 2015 ASM #17933 mgamazaychikov Update calculation of partOfParentRegion.
|
||||
* May 12, 2016 ASM #18789 D. Friedman Improve findInsectingAreas performance.
|
||||
* </pre>
|
||||
*
|
||||
* @author chammack
|
||||
|
@ -113,6 +132,16 @@ public class Area {
|
|||
.asList(new String[] { "PA", "MI", "PD", "UP", "BB", "ER", "EU",
|
||||
"SR", "NR", "WU", "DS" });
|
||||
|
||||
private static final int DEFAULT_SUBDIVISION_TRESHOLD = 100;
|
||||
|
||||
private static final int SIMPLE_FEATURE_GEOM_COUNT_THRESHOLD = 2;
|
||||
|
||||
private static final int MAX_SUBDIVISION_DEPTH = 24;
|
||||
|
||||
private static final String SUBDIVISION_CONFIG_FILE = "subdiv.txt";
|
||||
|
||||
private static ExecutorService intersectionExecutor;
|
||||
|
||||
private PortionsUtil portionsUtil;
|
||||
|
||||
public Area(PortionsUtil portionsUtil) {
|
||||
|
@ -327,7 +356,6 @@ public class Area {
|
|||
Geometry warnPolygon, Geometry warnArea, String localizedSite,
|
||||
WarngenLayer warngenLayer) throws VizException {
|
||||
Map<String, Object> areasMap = new HashMap<String, Object>();
|
||||
|
||||
try {
|
||||
Geometry precisionReducedArea = PolygonUtil
|
||||
.reducePrecision(warnArea);
|
||||
|
@ -340,26 +368,75 @@ public class Area {
|
|||
|
||||
String hatchedAreaSource = config.getHatchedAreaSource()
|
||||
.getAreaSource();
|
||||
for (AreaSourceConfiguration asc : config.getAreaSources()) {
|
||||
if (asc.getType() == AreaType.INTERSECT) {
|
||||
List<Geometry> geoms = new ArrayList<Geometry>();
|
||||
boolean filtered = false;
|
||||
for (GeospatialData f : warngenLayer.getGeodataFeatures(
|
||||
asc.getAreaSource(), localizedSite)) {
|
||||
|
||||
boolean ignoreUserData = asc.getAreaSource().equals(
|
||||
hatchedAreaSource) == false;
|
||||
Geometry intersect = GeometryUtil.intersection(warnArea,
|
||||
f.prepGeom, ignoreUserData);
|
||||
|
||||
filtered = false;
|
||||
if (!intersect.isEmpty()) {
|
||||
filtered = warngenLayer.filterArea(f, intersect, asc);
|
||||
boolean subdivide = true;
|
||||
try {
|
||||
String propertiesText = WarnFileUtil.convertFileContentsToString(
|
||||
SUBDIVISION_CONFIG_FILE, LocalizationManager.getInstance()
|
||||
.getCurrentSite(), warngenLayer.getLocalizedSite());
|
||||
if (propertiesText != null) {
|
||||
Properties props = new Properties();
|
||||
props.load(new StringReader(propertiesText));
|
||||
subdivide = Boolean.parseBoolean(props.getProperty("enabled", "true"));
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
// ignore
|
||||
} catch (IOException e) {
|
||||
statusHandler.handle(Priority.WARN, "Could not load subdivision configuration file", e);
|
||||
}
|
||||
if (!subdivide) {
|
||||
statusHandler.debug("findIntersectingAreas: subdivision is disabled");
|
||||
}
|
||||
|
||||
if (intersect.isEmpty() == false && filtered == true) {
|
||||
long t0 = System.currentTimeMillis();
|
||||
for (AreaSourceConfiguration asc : config.getAreaSources()) {
|
||||
boolean ignoreUserData = asc.getAreaSource().equals(
|
||||
hatchedAreaSource) == false;
|
||||
if (asc.getType() == AreaType.INTERSECT) {
|
||||
List<Geometry> geoms = new ArrayList<Geometry>();
|
||||
if (subdivide && ignoreUserData) {
|
||||
synchronized (Area.class) {
|
||||
if (intersectionExecutor == null) {
|
||||
int nThreads = Math.max(2,
|
||||
Runtime.getRuntime().availableProcessors() / 2);
|
||||
ThreadPoolExecutor executor = new ThreadPoolExecutor(
|
||||
nThreads, nThreads, 60, TimeUnit.SECONDS,
|
||||
new LinkedBlockingQueue<Runnable>());
|
||||
executor.allowCoreThreadTimeOut(true);
|
||||
intersectionExecutor = executor;
|
||||
}
|
||||
}
|
||||
Geometry waPoly = toPolygonal(warnArea);
|
||||
GeospatialData[] features = warngenLayer.getGeodataFeatures(
|
||||
asc.getAreaSource(), localizedSite);
|
||||
List<Callable<Geometry>> callables = new ArrayList<>(features.length);
|
||||
for (GeospatialData f : features) {
|
||||
callables.add(new FeatureIntersection(waPoly, f));
|
||||
}
|
||||
try {
|
||||
List<Future<Geometry>> futures = intersectionExecutor.invokeAll(callables);
|
||||
int fi = 0;
|
||||
for (Future<Geometry> future: futures) {
|
||||
Geometry intersect = future.get();
|
||||
if (intersect != null && !intersect.isEmpty()
|
||||
&& warngenLayer.filterArea(features[fi], intersect, asc)) {
|
||||
geoms.add(intersect);
|
||||
}
|
||||
fi++;
|
||||
}
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
throw new VizException("Error finding intersecting areas", e);
|
||||
}
|
||||
} else {
|
||||
for (GeospatialData f : warngenLayer.getGeodataFeatures(
|
||||
asc.getAreaSource(), localizedSite)) {
|
||||
Geometry intersect = GeometryUtil.intersection(
|
||||
warnArea, f.prepGeom, ignoreUserData);
|
||||
if (!intersect.isEmpty()
|
||||
&& warngenLayer.filterArea(f, intersect, asc)) {
|
||||
geoms.add(intersect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AffectedAreas[] affectedAreas = findAffectedAreas(asc,
|
||||
|
@ -369,9 +446,198 @@ public class Area {
|
|||
areasMap.put(asc.getVariable(), affectedAreas);
|
||||
}
|
||||
}
|
||||
perfLog.logDuration("findIntersectingAreas", System.currentTimeMillis() - t0);
|
||||
|
||||
return areasMap;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert input to Polygon or Multipolygon. This will discard any
|
||||
* non-polygon elements.
|
||||
*/
|
||||
private static Geometry toPolygonal(Geometry input) {
|
||||
Geometry result;
|
||||
if (input instanceof Polygonal) {
|
||||
result = input;
|
||||
} else {
|
||||
List<Polygon> pa = new ArrayList<>(input.getNumGeometries() + 63);
|
||||
toPolygonalInner(input, pa);
|
||||
result = input.getFactory().createMultiPolygon(pa.toArray(new Polygon[pa.size()]));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void toPolygonalInner(Geometry input, List<Polygon> pa) {
|
||||
int n = input.getNumGeometries();
|
||||
for (int i = 0; i < n; ++i) {
|
||||
Geometry g = input.getGeometryN(i);
|
||||
if (g instanceof Polygon) {
|
||||
pa.add((Polygon) g);
|
||||
} else if (g instanceof GeometryCollection) {
|
||||
toPolygonalInner(g, pa);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class FeatureIntersection implements Callable<Geometry> {
|
||||
private Geometry waPoly;
|
||||
private GeospatialData f;
|
||||
|
||||
public FeatureIntersection(Geometry waPoly, GeospatialData f) {
|
||||
this.waPoly = waPoly;
|
||||
this.f = f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Geometry call() throws Exception {
|
||||
Geometry intersect = null;
|
||||
if (f.prepGeom.intersects(waPoly)) {
|
||||
try {
|
||||
Geometry fgPoly = toPolygonal(f.geometry);
|
||||
List<Geometry> out = new ArrayList<Geometry>(64);
|
||||
subdivIntersect(waPoly, fgPoly, true, out);
|
||||
intersect = waPoly.getFactory().createGeometryCollection(
|
||||
out.toArray(new Geometry[out.size()]));
|
||||
// subdivIntersect loses user data to set it again.
|
||||
intersect.setUserData(f.geometry.getUserData());
|
||||
} catch (TopologyException e) {
|
||||
intersect = GeometryUtil.intersection(waPoly,
|
||||
f.prepGeom, true);
|
||||
}
|
||||
}
|
||||
return intersect;
|
||||
}
|
||||
}
|
||||
|
||||
private static void subdivIntersect(Geometry warnArea, Geometry featureGeom,
|
||||
boolean orient, List<Geometry> out) {
|
||||
Envelope env = warnArea.getEnvelopeInternal().intersection(
|
||||
featureGeom.getEnvelopeInternal());
|
||||
if (env.isNull()) {
|
||||
return;
|
||||
}
|
||||
Coordinate[] c = new Coordinate[5];
|
||||
c[0] = new Coordinate(env.getMinX(), env.getMinY());
|
||||
c[1] = new Coordinate(env.getMaxX(), env.getMinY());
|
||||
c[2] = new Coordinate(env.getMaxX(), env.getMaxY());
|
||||
c[3] = new Coordinate(env.getMinX(), env.getMaxY());
|
||||
c[4] = c[0];
|
||||
subdivIntersectInner(c, warnArea, featureGeom, orient, 1, out);
|
||||
}
|
||||
|
||||
private static void subdivIntersectInner(Coordinate[] env, Geometry warnArea,
|
||||
Geometry featureGeom, boolean orientation, int depth,
|
||||
List<Geometry> out) {
|
||||
if (warnArea.getNumGeometries() * featureGeom.getNumGeometries() <= DEFAULT_SUBDIVISION_TRESHOLD
|
||||
|| depth >= MAX_SUBDIVISION_DEPTH) {
|
||||
out.add(batchIntersect(warnArea, featureGeom));
|
||||
} else if (featureGeom.getNumGeometries() <= SIMPLE_FEATURE_GEOM_COUNT_THRESHOLD) {
|
||||
try {
|
||||
Polygon clipPoly = warnArea.getFactory().createPolygon(env);
|
||||
Geometry clippedWarnArea = clip(clipPoly, warnArea);
|
||||
/*
|
||||
* Not clipping feature geometry because it is already known to
|
||||
* have a small geometry count.
|
||||
*/
|
||||
out.add(batchIntersect(clippedWarnArea, featureGeom));
|
||||
} catch (TopologyException e) {
|
||||
// Additional fallback without clipping.
|
||||
statusHandler.handle(Priority.DEBUG,
|
||||
"Clipped intersection failed. Will attempt fallback.", e);
|
||||
out.add(GeometryUtil.intersection(warnArea, featureGeom, true));
|
||||
}
|
||||
} else {
|
||||
GeometryFactory gf = warnArea.getFactory();
|
||||
Coordinate[] c = new Coordinate[5];
|
||||
List<Geometry> subOut = new ArrayList<>();
|
||||
for (int side = 0; side < 2; ++side) {
|
||||
if (side == 0) {
|
||||
if (orientation) {
|
||||
// horizontal split
|
||||
c[0] = env[0];
|
||||
c[1] = new Coordinate((env[0].x + env[1].x) / 2, env[0].y);
|
||||
c[2] = new Coordinate(c[1].x, env[2].y);
|
||||
c[3] = env[3];
|
||||
c[4] = c[0];
|
||||
} else {
|
||||
// vertical split
|
||||
c[0] = env[0];
|
||||
c[1] = env[1];
|
||||
c[2] = new Coordinate(c[1].x, (env[0].y + env[3].y) / 2);
|
||||
c[3] = new Coordinate(c[0].x, c[2].y);
|
||||
c[4] = c[0];
|
||||
}
|
||||
} else {
|
||||
if (orientation) {
|
||||
c[0] = c[1];
|
||||
c[3] = c[2];
|
||||
c[1] = env[1];
|
||||
c[2] = env[2];
|
||||
c[4] = c[0];
|
||||
} else {
|
||||
c[0] = c[3];
|
||||
c[1] = c[2];
|
||||
c[2] = env[2];
|
||||
c[3] = env[3];
|
||||
c[4] = c[0];
|
||||
}
|
||||
}
|
||||
|
||||
Polygon clipPoly = gf.createPolygon(c);
|
||||
try {
|
||||
Geometry subWarnArea = clip(clipPoly, warnArea);
|
||||
Geometry subFeatureGeom = clip(clipPoly, featureGeom);
|
||||
subdivIntersectInner(c, subWarnArea, subFeatureGeom,
|
||||
!orientation, depth + 1, subOut);
|
||||
} catch (TopologyException e) {
|
||||
// Additional fallback without clipping.
|
||||
statusHandler.handle(Priority.DEBUG,
|
||||
"Subdivided intersection failed. Will attempt fallback.", e);
|
||||
out.add(GeometryUtil.intersection(warnArea, featureGeom, true));
|
||||
return;
|
||||
}
|
||||
}
|
||||
out.addAll(subOut);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the intersection of p and g by operating on each element of g.
|
||||
* This is necessary to prevent "side location conflict" errors. By using
|
||||
* envelopes to either filter out elements or bypass
|
||||
* Geometry.intersection(), it also is much faster than p.intersection(g)
|
||||
* would be.
|
||||
*
|
||||
* @param p
|
||||
* @param g must be Polygonal
|
||||
* @return
|
||||
*/
|
||||
private static Geometry clip(Polygon p, Geometry g) {
|
||||
Envelope pe = p.getEnvelopeInternal();
|
||||
List<Polygon> out = new ArrayList<>(g.getNumGeometries() * 11 / 10);
|
||||
int n = g.getNumGeometries();
|
||||
for (int i = 0; i < n; ++i) {
|
||||
Geometry gi = g.getGeometryN(i);
|
||||
Envelope ge = gi.getEnvelopeInternal();
|
||||
if (pe.contains(ge)) {
|
||||
out.add((Polygon) gi);
|
||||
} else if (pe.intersects(ge)) {
|
||||
Geometry clipped = p.intersection(gi);
|
||||
int m = clipped.getNumGeometries();
|
||||
for (int j = 0; j < m; ++j) {
|
||||
Geometry gj = clipped.getGeometryN(j);
|
||||
if (!gj.isEmpty() && gj instanceof Polygon) {
|
||||
out.add((Polygon) gj);
|
||||
}
|
||||
}
|
||||
}
|
||||
// else, discard gi
|
||||
}
|
||||
return g.getFactory().createMultiPolygon(out.toArray(new Polygon[out.size()]));
|
||||
}
|
||||
|
||||
private static Geometry batchIntersect(Geometry warnArea, Geometry featureGeom) {
|
||||
return GeometryUtil.intersection(warnArea, featureGeom, true);
|
||||
}
|
||||
|
||||
public static List<String> converFeAreaToPartList(String feArea) {
|
||||
|
|
|
@ -156,6 +156,7 @@ import com.vividsolutions.jts.io.WKTReader;
|
|||
* Feb 9, 2016 DR18421 D. Friedman Don't call ToolsDataManager.setStormTrackData if there is no storm motion.
|
||||
* Feb 17, 2016 DR 17531 Qinglu Lin Added calStormVelocityAndEventLocation(), updated runTemplate().
|
||||
* Mar 10, 2016 5411 randerso Added productId and mixedCaseEnabled to Velocity context
|
||||
* May 25, 2016 DR18789 D. Friedman Extract timezone calculation to method and add short circuit logic.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -220,6 +221,127 @@ public class TemplateRunner {
|
|||
return officeCityTimezone;
|
||||
}
|
||||
|
||||
private static Set<String> determineTimezones(WarngenLayer warngenLayer,
|
||||
AffectedAreas[] areas, Geometry warningArea) throws VizException {
|
||||
Map<String, Double> intersectSize = new HashMap<String, Double>();
|
||||
double minSize = 1.0E-3d;
|
||||
Set<String> timeZones = new HashSet<String>();
|
||||
for (AffectedAreas affectedAreas : areas) {
|
||||
if (affectedAreas.getTimezone() != null) {
|
||||
// Handles counties that span two time zones
|
||||
String oneLetterTimeZones = affectedAreas.getTimezone()
|
||||
.trim();
|
||||
if (oneLetterTimeZones.length() == 1) {
|
||||
timeZones.add(String.valueOf(oneLetterTimeZones
|
||||
.charAt(0)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (timeZones.size() > 1) {
|
||||
return timeZones;
|
||||
}
|
||||
for (AffectedAreas affectedAreas : areas) {
|
||||
if (affectedAreas.getTimezone() != null) {
|
||||
// Handles counties that span two time zones
|
||||
String oneLetterTimeZones = affectedAreas.getTimezone()
|
||||
.trim();
|
||||
if (oneLetterTimeZones.length() > 1) {
|
||||
// Determine if one letter timezone is going to be
|
||||
// put into timeZones.
|
||||
Geometry[] poly1, poly2;
|
||||
int n1, n2;
|
||||
double size, totalSize;
|
||||
String[] oneLetterTZ = new String[oneLetterTimeZones.length()];
|
||||
for (int i = 0; i < oneLetterTimeZones.length(); i++) {
|
||||
oneLetterTZ[i] = String
|
||||
.valueOf(oneLetterTimeZones.charAt(i));
|
||||
Geometry timezoneGeom = warngenLayer
|
||||
.getTimezoneGeom(oneLetterTZ[i]);
|
||||
long t0 = System.currentTimeMillis();
|
||||
poly1 = null;
|
||||
poly2 = null;
|
||||
n1 = 0;
|
||||
n2 = 0;
|
||||
size = 0.0d;
|
||||
totalSize = 0.0d;
|
||||
if ((timezoneGeom != null)
|
||||
&& (warningArea != null)) {
|
||||
if (intersectSize.get(oneLetterTZ[i]) != null) {
|
||||
continue;
|
||||
}
|
||||
poly1 = new Geometry[warningArea
|
||||
.getNumGeometries()];
|
||||
n1 = warningArea.getNumGeometries();
|
||||
for (int j = 0; j < n1; j++) {
|
||||
poly1[j] = warningArea.getGeometryN(j);
|
||||
}
|
||||
poly2 = new Geometry[timezoneGeom
|
||||
.getNumGeometries()];
|
||||
n2 = timezoneGeom.getNumGeometries();
|
||||
for (int j = 0; j < n2; j++) {
|
||||
poly2[j] = timezoneGeom.getGeometryN(j);
|
||||
}
|
||||
// Calculate the total size of intersection
|
||||
for (Geometry p1 : poly1) {
|
||||
for (Geometry p2 : poly2) {
|
||||
try {
|
||||
size = p1.intersection(p2)
|
||||
.getArea();
|
||||
} catch (TopologyException e) {
|
||||
statusHandler
|
||||
.handle(Priority.VERBOSE,
|
||||
"Geometry error calculating the total size of intersection.",
|
||||
e);
|
||||
}
|
||||
if (size > 0.0) {
|
||||
totalSize += size;
|
||||
}
|
||||
}
|
||||
if (totalSize > minSize) {
|
||||
break; // save time when the size of
|
||||
// poly1 or poly2 is large
|
||||
}
|
||||
}
|
||||
intersectSize
|
||||
.put(oneLetterTZ[i], totalSize);
|
||||
} else {
|
||||
throw new VizException(
|
||||
"Either timezoneGeom or/and warningArea is null. "
|
||||
+ "Timezone cannot be determined.");
|
||||
}
|
||||
perfLog.logDuration(
|
||||
"runTemplate size computation",
|
||||
System.currentTimeMillis() - t0);
|
||||
if (totalSize > minSize) {
|
||||
timeZones.add(oneLetterTZ[i]);
|
||||
}
|
||||
}
|
||||
// If timeZones has nothing in it when the hatched
|
||||
// area is very small,
|
||||
// use the timezone of larger intersection size.
|
||||
if (timeZones.size() == 0) {
|
||||
if (intersectSize.size() > 1) {
|
||||
if (intersectSize.get(oneLetterTZ[0]) > intersectSize
|
||||
.get(oneLetterTZ[1])) {
|
||||
timeZones.add(oneLetterTZ[0]);
|
||||
} else {
|
||||
timeZones.add(oneLetterTZ[1]);
|
||||
}
|
||||
} else {
|
||||
throw new VizException(
|
||||
"The size of intersectSize is less than 1, "
|
||||
+ "timezone cannot be determined.");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new VizException(
|
||||
"Calling to area.getTimezone() returns null.");
|
||||
}
|
||||
}
|
||||
return timeZones;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a warngen template given the polygon from the Warngen Layer and
|
||||
* the Storm tracking information from StormTrackDisplay
|
||||
|
@ -335,113 +457,8 @@ public class TemplateRunner {
|
|||
context.put(ia, intersectAreas.get(ia));
|
||||
}
|
||||
|
||||
Map<String, Double> intersectSize = new HashMap<String, Double>();
|
||||
String[] oneLetterTZ;
|
||||
double minSize = 1.0E-3d;
|
||||
if ((areas != null) && (areas.length > 0)) {
|
||||
Set<String> timeZones = new HashSet<String>();
|
||||
for (AffectedAreas affectedAreas : areas) {
|
||||
if (affectedAreas.getTimezone() != null) {
|
||||
// Handles counties that span two time zones
|
||||
String oneLetterTimeZones = affectedAreas.getTimezone()
|
||||
.trim();
|
||||
oneLetterTZ = new String[oneLetterTimeZones.length()];
|
||||
if (oneLetterTimeZones.length() == 1) {
|
||||
timeZones.add(String.valueOf(oneLetterTimeZones
|
||||
.charAt(0)));
|
||||
} else {
|
||||
// Determine if one letter timezone is going to be
|
||||
// put into timeZones.
|
||||
Geometry[] poly1, poly2;
|
||||
int n1, n2;
|
||||
double size, totalSize;
|
||||
for (int i = 0; i < oneLetterTimeZones.length(); i++) {
|
||||
oneLetterTZ[i] = String
|
||||
.valueOf(oneLetterTimeZones.charAt(i));
|
||||
Geometry timezoneGeom = warngenLayer
|
||||
.getTimezoneGeom(oneLetterTZ[i]);
|
||||
t0 = System.currentTimeMillis();
|
||||
poly1 = null;
|
||||
poly2 = null;
|
||||
n1 = 0;
|
||||
n2 = 0;
|
||||
size = 0.0d;
|
||||
totalSize = 0.0d;
|
||||
if ((timezoneGeom != null)
|
||||
&& (warningArea != null)) {
|
||||
if (intersectSize.get(oneLetterTZ[i]) != null) {
|
||||
continue;
|
||||
}
|
||||
poly1 = new Geometry[warningArea
|
||||
.getNumGeometries()];
|
||||
n1 = warningArea.getNumGeometries();
|
||||
for (int j = 0; j < n1; j++) {
|
||||
poly1[j] = warningArea.getGeometryN(j);
|
||||
}
|
||||
poly2 = new Geometry[timezoneGeom
|
||||
.getNumGeometries()];
|
||||
n2 = timezoneGeom.getNumGeometries();
|
||||
for (int j = 0; j < n2; j++) {
|
||||
poly2[j] = timezoneGeom.getGeometryN(j);
|
||||
}
|
||||
// Calculate the total size of intersection
|
||||
for (Geometry p1 : poly1) {
|
||||
for (Geometry p2 : poly2) {
|
||||
try {
|
||||
size = p1.intersection(p2)
|
||||
.getArea();
|
||||
} catch (TopologyException e) {
|
||||
statusHandler
|
||||
.handle(Priority.VERBOSE,
|
||||
"Geometry error calculating the total size of intersection.",
|
||||
e);
|
||||
}
|
||||
if (size > 0.0) {
|
||||
totalSize += size;
|
||||
}
|
||||
}
|
||||
if (totalSize > minSize) {
|
||||
break; // save time when the size of
|
||||
// poly1 or poly2 is large
|
||||
}
|
||||
}
|
||||
intersectSize
|
||||
.put(oneLetterTZ[i], totalSize);
|
||||
} else {
|
||||
throw new VizException(
|
||||
"Either timezoneGeom or/and warningArea is null. "
|
||||
+ "Timezone cannot be determined.");
|
||||
}
|
||||
perfLog.logDuration(
|
||||
"runTemplate size computation",
|
||||
System.currentTimeMillis() - t0);
|
||||
if (totalSize > minSize) {
|
||||
timeZones.add(oneLetterTZ[i]);
|
||||
}
|
||||
}
|
||||
// If timeZones has nothing in it when the hatched
|
||||
// area is very small,
|
||||
// use the timezone of larger intersection size.
|
||||
if (timeZones.size() == 0) {
|
||||
if (intersectSize.size() > 1) {
|
||||
if (intersectSize.get(oneLetterTZ[0]) > intersectSize
|
||||
.get(oneLetterTZ[1])) {
|
||||
timeZones.add(oneLetterTZ[0]);
|
||||
} else {
|
||||
timeZones.add(oneLetterTZ[1]);
|
||||
}
|
||||
} else {
|
||||
throw new VizException(
|
||||
"The size of intersectSize is less than 1, "
|
||||
+ "timezone cannot be determined.");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new VizException(
|
||||
"Calling to area.getTimezone() returns null.");
|
||||
}
|
||||
}
|
||||
Set<String> timeZones = determineTimezones(warngenLayer, areas, warningArea);
|
||||
|
||||
Map<String, String> officeCityTimezone = createOfficeTimezoneMap();
|
||||
String cityTimezone = null;
|
||||
|
|
|
@ -94,8 +94,7 @@ public class SpotRequestParser {
|
|||
PROPERTY_PATTERN_MAP.put("AGENCY_NAME", "REQUESTING\\s+AGENCY");
|
||||
PROPERTY_PATTERN_MAP.put("OFFICIAL_NAME", "REQUESTING\\s+OFFICIAL");
|
||||
PROPERTY_PATTERN_MAP.put("PHONE_NAME", "EMERGENCY\\s+PHONE");
|
||||
PROPERTY_PATTERN_MAP
|
||||
.put("PHONE_VALUE", "\\(\\d{3}\\)\\s*\\d{3}-\\d{4}");
|
||||
PROPERTY_PATTERN_MAP.put("PHONE_VALUE", ".{1,30}");
|
||||
PROPERTY_PATTERN_MAP.put("STATE_NAME", "STATE");
|
||||
PROPERTY_PATTERN_MAP.put("DLAT_NAME", "DLAT");
|
||||
PROPERTY_PATTERN_MAP.put("DLON_NAME", "DLON");
|
||||
|
|
|
@ -116,8 +116,8 @@
|
|||
<gridParameterInfo xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
@ -387,8 +387,8 @@
|
|||
<gridParameterInfo xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -223,8 +223,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -273,8 +273,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -156,8 +156,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -195,8 +195,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -301,8 +301,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -195,8 +195,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -247,8 +247,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -211,8 +211,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -264,8 +264,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -165,8 +165,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -165,8 +165,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -222,8 +222,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -299,8 +299,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
|
|
@ -222,8 +222,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -298,8 +298,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
|
|
@ -367,8 +367,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -670,8 +670,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -367,8 +367,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -476,8 +476,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -670,8 +670,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -760,9 +760,9 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>lifted index</long_name>
|
||||
<units>degrees Kelvin</units>
|
||||
<valid_range>-20000.0</valid_range>
|
||||
<valid_range>20000.0</valid_range>
|
||||
<units>degrees Celsius</units>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected level for SLI
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -357,8 +358,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -444,8 +445,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected level for SLI
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -357,8 +358,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -444,8 +445,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -384,8 +384,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -471,8 +471,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -351,8 +351,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -438,8 +438,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected level for SLI
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -231,8 +232,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -274,8 +275,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected level for SLI
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -357,8 +358,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -444,8 +445,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -844,8 +844,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected heli level
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -238,8 +239,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -304,8 +305,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected heli level
|
||||
06/13/2016 #17308 bhunder Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -182,8 +183,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -362,8 +363,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -815,8 +815,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -830,8 +830,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -213,8 +213,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
@ -279,8 +279,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pli</short_name>
|
||||
<long_name>Parcel lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>parcLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
|
@ -309,8 +309,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
Mar 20, 2013 #1774 randerso Added forecast hours out to 18
|
||||
Jun 19, 2013 #2044 randerso Updated to match model
|
||||
Feb 24 20153 DCS14537 byin Added HPBL for RUC13
|
||||
Jun 13, 2016 #17308 bhunderm Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -122,8 +123,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
@ -597,8 +598,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -242,8 +242,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
@ -379,8 +379,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
Date Ticket# Engineer Description
|
||||
04/17/2013 #1913 randerso Corrected level for SLI
|
||||
06/13/2016 #17308 bhunderm Corrected LI units
|
||||
-->
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
|
@ -91,8 +92,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
@ -456,8 +457,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -594,8 +594,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<units>C</units>
|
||||
<udunits>degree_Celsius</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||
|
||||
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||
This_software_product_contains_export-restricted_data_whose
|
||||
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||
an_export_license_or_other_authorization.
|
||||
|
||||
Contractor_Name:________Raytheon_Company
|
||||
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||
________________________Mail_Stop_B8
|
||||
________________________Omaha,_NE_68106
|
||||
________________________402.291.0100
|
||||
|
||||
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||
further_licensing_information.
|
||||
-->
|
||||
<polarStereoGridCoverage>
|
||||
<name>GFS-AK-20KM</name>
|
||||
<description>Grid over Alaska - Double Resolution grid (polar
|
||||
stereographic)</description>
|
||||
<la1>35.0</la1>
|
||||
<lo1>-190.0</lo1>
|
||||
<firstGridPointCorner>LowerLeft</firstGridPointCorner>
|
||||
<nx>277</nx>
|
||||
<ny>225</ny>
|
||||
<dx>22.5</dx>
|
||||
<dy>22.5</dy>
|
||||
<spacingUnit>km</spacingUnit>
|
||||
<minorAxis>6371229.0</minorAxis>
|
||||
<majorAxis>6371229.0</majorAxis>
|
||||
<lov>-150.0</lov>
|
||||
</polarStereoGridCoverage>
|
|
@ -24,14 +24,14 @@
|
|||
<la1>-45.0</la1>
|
||||
<lo1>110.0</lo1>
|
||||
<firstGridPointCorner>LowerLeft</firstGridPointCorner>
|
||||
<nx>737</nx>
|
||||
<ny>661</ny>
|
||||
<nx>837</nx>
|
||||
<ny>725</ny>
|
||||
<dx>20.0</dx>
|
||||
<dy>20.0</dy>
|
||||
<spacingUnit>km</spacingUnit>
|
||||
<minorAxis>6371229.0</minorAxis>
|
||||
<majorAxis>6371229.0</majorAxis>
|
||||
<latin>20.0</latin>
|
||||
<la2>60.232</la2>
|
||||
<lo2>250.967</lo2>
|
||||
<la2>65.345</la2>
|
||||
<lo2>270.000</lo2>
|
||||
</mercatorGridCoverage>
|
||||
|
|
|
@ -203,6 +203,30 @@
|
|||
</process>
|
||||
</model>
|
||||
|
||||
<!-- conus 20KM -->
|
||||
<model>
|
||||
<name>GFS215</name>
|
||||
<center>7</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>215</grid>
|
||||
<process>
|
||||
<id>81</id>
|
||||
<id>96</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<!-- ak 20KM -->
|
||||
<model>
|
||||
<name>GFS217</name>
|
||||
<center>7</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>GFS-AK-20KM</grid>
|
||||
<process>
|
||||
<id>81</id>
|
||||
<id>96</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<!-- pac 20KM -->
|
||||
<model>
|
||||
<name>GFS20-PAC</name>
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometry;
|
|||
* Apr 28, 2013 1955 jsanchez Added an ignoreUserData flag to intersection method.
|
||||
* Oct 21, 2013 DR 16632 D. Friedman Handle zero-length input in union.
|
||||
* Dec 13, 2013 DR 16567 Qinglu Lin Added contains().
|
||||
* May 12, 2016 DR 18789 D. Friedman Added intersection(g1, g2, ignoreUserData).
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -103,6 +104,26 @@ public class GeometryUtil {
|
|||
return rval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Intersection between g1 and g2. Resulting intersection will contain user
|
||||
* data from g2
|
||||
*
|
||||
* @param g1
|
||||
* @param g2
|
||||
*
|
||||
* @return the intersection between g1 and g2
|
||||
*/
|
||||
public static Geometry intersection(Geometry g1, Geometry g2, boolean ignoreUserData) {
|
||||
GeometryFactory gf = new GeometryFactory();
|
||||
List<Geometry> intersection = new ArrayList<Geometry>(
|
||||
g1.getNumGeometries() + g2.getNumGeometries());
|
||||
intersection(g1, g2, intersection, ignoreUserData);
|
||||
Geometry rval = gf.createGeometryCollection(intersection
|
||||
.toArray(new Geometry[intersection.size()]));
|
||||
rval.setUserData(g2.getUserData());
|
||||
return rval;
|
||||
}
|
||||
|
||||
private static void intersection(Geometry g1, Geometry g2,
|
||||
List<Geometry> intersections, boolean ignoreUserData) {
|
||||
if (g1 instanceof GeometryCollection) {
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
##### several DRs related to unique part-of-state codes, watch boxes, etc..
|
||||
##### Bookbinder 10-30-2015 Added several additional fe_area codes and cleaned up watch logic.
|
||||
##### Evan Bookbinder 12-01-2015 Fixed single column output
|
||||
##### Richard Barnhill 5-10-2016 Fixed "OF" to "of" to conform to mixed case
|
||||
##############################################################################################################
|
||||
#*
|
||||
Mile Marker Test Code
|
||||
|
@ -1760,7 +1761,7 @@ and ${strOutput}
|
|||
#capitalize(${ruralPhrase}, 'FIRSTONLY') will remain over mainly open waters.
|
||||
#else
|
||||
## NO MAJOR POINTS FOUND. LIST RURAL AREAS
|
||||
#capitalize(${ruralPhrase}, 'FIRSTONLY') will remain over ${noLocPhrase} OF #headlineLocList(${areas} true true true false)##
|
||||
#capitalize(${ruralPhrase}, 'FIRSTONLY') will remain over ${noLocPhrase} of #headlineLocList(${areas} true true true false)##
|
||||
#set($numMinorPoints = ${list.size($otherLocList)})
|
||||
#if(${numMinorPoints} == 1)
|
||||
, which includes ##
|
||||
|
|
|
@ -89,20 +89,20 @@ THIS IS A TEST MESSAGE. ##
|
|||
#set($reportType = "extreme winds")
|
||||
#set($reportType2 = "the hurricane eyewall was")
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var1")})
|
||||
#set($reportType1 = "associated with a broad area of intense thunderstorms#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var2")})
|
||||
#set($reportType1 = "associated with a broad area of intense thunderstorms, located")
|
||||
#set($reportType = "extreme winds were occuring")
|
||||
#set($reportType2 = "this area of thunderstorm winds was")
|
||||
#end
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var2")})
|
||||
#set($reportType1 = "associated with an intense low pressure area#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var3")})
|
||||
#set($reportType1 = "associated with an intense low pressure area, located")
|
||||
#set($reportType = "extreme winds were occuring")
|
||||
#set($reportType2 = "this intense low pressure system was")
|
||||
#end
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var3")})
|
||||
#set($reportType1 = "associated with a downslope windstorm#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var4")})
|
||||
#set($reportType1 = "associated with a downslope windstorm, located")
|
||||
#set($reportType = "extreme winds were occuring")
|
||||
#set($reportType2 = "this area of downslope winds was")
|
||||
#end
|
||||
|
@ -222,21 +222,21 @@ THIS IS A TEST MESSAGE. ##
|
|||
#####################
|
||||
## CALL TO ACTIONS ##
|
||||
#####################
|
||||
#if(${list.contains(${bullets}, "cta1")} || ${list.contains(${bullets}, "cta2")} || ${list.contains(${bullets}, "cta3")})
|
||||
#if(${list.contains(${bullets}, "destructiveWindsCTA")} || ${list.contains(${bullets}, "takeCoverCTA")} || ${list.contains(${bullets}, "safePlacesCTA")})
|
||||
PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "cta1")})
|
||||
#if(${list.contains(${bullets}, "destructiveWindsCTA")})
|
||||
Widespread destructive winds of !** **! to !** **! mph will spread across ##
|
||||
#headlineLocList(${areas} true true true false)#commaOrEllipsis()Producing swaths of tornado-like damage.
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "cta2")})
|
||||
TAKE COVER NOW! Treat these imminent extreme winds as if a tornado was approaching and move immediately to the safe room in your shelter. Take action now to protect your life!
|
||||
#if(${list.contains(${bullets}, "takeCoverCTA")})
|
||||
Take cover now! Treat these imminent extreme winds as if a tornado was approaching and move immediately to the safe room in your shelter. Take action now to protect your life!
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "cta3")})
|
||||
The safest place to be during a major landfalling hurricane is in a reinforced interior room away from windows. Get under a table or other piece of sturdy furniture. Use mattresses#commaOrEllipsis()blankets or pillows to cover your head and body. Remain in place through the passage of these life-threatening conditions.
|
||||
#if(${list.contains(${bullets}, "safePlacesCTA")})
|
||||
The safest place to be during a major landfalling hurricane is in a reinforced interior room away from windows. Get under a table or other piece of sturdy furniture. Use mattresses, blankets or pillows to cover your head and body. Remain in place through the passage of these life-threatening conditions.
|
||||
|
||||
#end
|
||||
#############
|
||||
|
@ -258,20 +258,20 @@ The safest place to be during a major landfalling hurricane is in a reinforced i
|
|||
#set($reportType = "extreme winds")
|
||||
#set($reportType2 = "the hurricane eyewall was")
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var1")})
|
||||
#set($reportType1 = "associated with a broad area of intense thunderstorms#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var2")})
|
||||
#set($reportType1 = "associated with a broad area of intense thunderstorms, located")
|
||||
#set($reportType = "extreme winds were occurinG")
|
||||
#set($reportType2 = "this area of thunderstorm winds was")
|
||||
#end
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var2")})
|
||||
#set($reportType1 = "associated with an intense low pressure area#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var3")})
|
||||
#set($reportType1 = "associated with an intense low pressure area, located")
|
||||
#set($reportType = "extreme winds were occuring")
|
||||
#set($reportType2 = "this intense low pressure system was")
|
||||
#end
|
||||
##
|
||||
#if(${list.contains(${bullets}, "var3")})
|
||||
#set($reportType1 = "associated with a downslope windstorm#commaOrEllipsis()located")
|
||||
#if(${list.contains(${bullets}, "var4")})
|
||||
#set($reportType1 = "associated with a downslope windstorm, located")
|
||||
#set($reportType = "extreme winds were occuring")
|
||||
#set($reportType2 = "this area of downslope winds was")
|
||||
#end
|
||||
|
@ -408,7 +408,7 @@ At ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}#commaOrEl
|
|||
#if(${movementSpeed} < ${landStationary} || ${stationary})
|
||||
. ${reportType2} nearly stationary.##
|
||||
#else
|
||||
#commaOrEllipsis()moving #direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} mph.##
|
||||
, moving #direction(${movementDirectionRounded}) at ${mathUtil.roundTo5(${movementSpeed})} mph.##
|
||||
#end
|
||||
This is an extremely dangerous and life-threatening situation!
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<duration>30</duration>
|
||||
</durations>
|
||||
|
||||
<lockedGroupsOnFollowup>warnReason</lockedGroupsOnFollowup>
|
||||
<bulletActionGroups>
|
||||
<bulletActionGroup>
|
||||
<bullets>
|
||||
|
|
|
@ -230,7 +230,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
|||
#if(${stormType} == "line")
|
||||
#set($expcanPhrase = "The storms which prompted the warning have weakened below severe limits#commaOrEllipsis()and have exited the warned area. Therefore the warning ${expcanBODYTag}.")
|
||||
#else
|
||||
#set($expcanPhrase = "The storm which prompted the warning has weakened below severe limits#commaOrEllipsis()and have exited the warned area. Therefore the warning ${expcanBODYTag}.")
|
||||
#set($expcanPhrase = "The storm which prompted the warning has weakened below severe limits, and has exited the warned area. Therefore, the warning ${expcanBODYTag}.")
|
||||
#end
|
||||
#end
|
||||
#### SVR UPGRADED TO TOR
|
||||
|
|
|
@ -167,7 +167,6 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="stillhail" bulletText="Hail still a threat - optional"/>
|
||||
<bullet bulletName="stillwind" bulletText="Gusty winds still a threat - optional"/>
|
||||
<bullet bulletName="stillrain" bulletText="Heavy rain still a threat - optional"/>
|
||||
<bullet bulletName="stillrain" bulletText="Heavy rain still a threat - optional"/>
|
||||
<!-- AUTO INCLUSION OF WATCHES FIXED IN 13.4.1
|
||||
<bullet bulletName="svrboxactive" bulletGroup="watchbox" bulletText="SVR TSTM WATCH remains in effect"/>
|
||||
<bullet bulletName="torboxactive" bulletGroup="watchbox" bulletText="TORNADO WATCH remains in effect"/>
|
||||
|
@ -193,7 +192,6 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="stillhail" bulletText="Hail still a threat - optional"/>
|
||||
<bullet bulletName="stillwind" bulletText="Gusty winds still a threat - optional"/>
|
||||
<bullet bulletName="stillrain" bulletText="Heavy rain still a threat - optional"/>
|
||||
<bullet bulletName="stillrain" bulletText="Heavy rain still a threat - optional"/>
|
||||
<!-- AUTO INCLUSION OF WATCHES FIXED IN 13.4.1
|
||||
<bullet bulletName="svrboxactive" bulletGroup="watchbox" bulletText="SVR TSTM WATCH remains in effect"/>
|
||||
<bullet bulletName="torboxactive" bulletGroup="watchbox" bulletText="TORNADO WATCH remains in effect"/>
|
||||
|
@ -284,7 +282,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="dopplerSVR" bulletText="Doppler radar indicated" bulletGroup="radioset1" parseString="SOURCE...RADAR INDICATED"/>
|
||||
<bullet bulletName="trainedSpottersSVR" bulletText="Trained spotters reported" bulletGroup="radioset1" parseString="SOURCE...TRAINED WEATHER SPOTTERS"/>
|
||||
<bullet bulletName="lawEnforcementSVR" bulletText="Law Enforcement reported" bulletGroup="radioset1" parseString="SOURCE...LAW ENFORCEMENT"/>
|
||||
<bullet bulletName="trainedSpottersSVR" bulletText="Emergency Management reported" bulletGroup="radioset1" parseString="SOURCE...EMERGENCY MANAGEMENT"/>
|
||||
<bullet bulletName="emergencyManagementSVR" bulletText="Emergency Management reported" bulletGroup="radioset1" parseString="SOURCE...EMERGENCY MANAGEMENT"/>
|
||||
<bullet bulletName="publicSVR" bulletText="Public Reported" bulletGroup="radioset1" parseString="SOURCE...PUBLIC"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText="*********** THREAT (CHOOSE 1 each wind/hail) **********" bulletType="title"/>
|
||||
|
@ -421,7 +419,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="dopplerSVR" bulletText="Doppler radar indicated" bulletGroup="radioset1" parseString="SOURCE...RADAR INDICATED"/>
|
||||
<bullet bulletName="trainedSpottersSVR" bulletText="Trained spotters reported" bulletGroup="radioset1" parseString="SOURCE...TRAINED WEATHER SPOTTERS"/>
|
||||
<bullet bulletName="lawEnforcementSVR" bulletText="Law Enforcement reported" bulletGroup="radioset1" parseString="SOURCE...LAW ENFORCEMENT"/>
|
||||
<bullet bulletName="trainedSpottersSVR" bulletText="Emergency Management reported" bulletGroup="radioset1" parseString="SOURCE...EMERGENCY MANAGEMENT"/>
|
||||
<bullet bulletName="emergencyManagementSVR" bulletText="Emergency Management reported" bulletGroup="radioset1" parseString="SOURCE...EMERGENCY MANAGEMENT"/>
|
||||
<bullet bulletName="publicSVR" bulletText="Public Reported" bulletGroup="radioset1" parseString="SOURCE...PUBLIC"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText="*********** THREAT (CHOOSE 1 each wind/hail) **********" bulletType="title"/>
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
## UPDATED PHIL KURIMSKI -- MAR 23 2015 Mixed Case ##
|
||||
## BOOKBINDER - 9/4/2015 Fixed line of storms grammar ##
|
||||
## Kurimski -- Oct 22 2015 Fixed CAN/EXP section combo ##
|
||||
########################################################################
|
||||
## BOOKBINDER 4/29/2016 Fixed issue setting StormType to Null ##
|
||||
#############################################################################
|
||||
#parse("config.vm")
|
||||
############################################
|
||||
## Set null variables used in the template
|
||||
|
@ -510,7 +511,6 @@ ${area.name}...
|
|||
#set($stormline = "a ${eventType}")
|
||||
#set($pathheader = "The ${eventType}")
|
||||
#set($specialEvent = "This ${eventType}")
|
||||
#set($stormType = "")
|
||||
#set($reportType2 = "The ${eventType} was")
|
||||
#end
|
||||
#######################################################################
|
||||
|
@ -522,7 +522,6 @@ ${area.name}...
|
|||
#set($pathheader = "The ${volcanoPath}")
|
||||
#set($specialEvent = "The ${volcanoPath}")
|
||||
#set($reportType2 = "The ${volcanoPath} was")
|
||||
#set($stormType = "")
|
||||
#set($impacted = "Locations impacted by ${volcanoPath} include...")
|
||||
#end
|
||||
##########################################################################
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
## Evan Bookbinder 9/4/15 Replaced flash flooding with localized flooding in ##
|
||||
## torrentainRain CTA so as not to imply need for FFW ##
|
||||
## Phil Kurimski 10/20/2015 Fixed line of storms wording/added campers CTA ##
|
||||
## Evan Bookbinder 4/29/2016 Fixed storm intensify to a CTA ##
|
||||
######################################################################################
|
||||
##
|
||||
##SET SOME INITIAL VARIABLES
|
||||
|
@ -291,7 +292,7 @@ Frequent cloud to ground lightning is occurring with this storm. Lightning can s
|
|||
#end
|
||||
##
|
||||
|
||||
#if(${list.contains(${bullets}, "stormIntensify")})
|
||||
#if(${list.contains(${bullets}, "stormIntensifyCTA")})
|
||||
#if(${stormType} == "line")
|
||||
These storms may intensify#commaOrEllipsis()so be certain to monitor local radio stations and available television stations for additional information and possible warnings from the National Weather Service.
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
Phil Kurimski 09-19-2013 added geospatialConfig.xml
|
||||
Mike Dangelo 6/26/2014 added bullets for watch info inclusion (bulletDefault set to true)
|
||||
Phil Kurimski 10-20-2015 added campers CTA
|
||||
Evan Bookbinder 4-29-2016 minor fix to storm intensify CTA/parsing
|
||||
-->
|
||||
<warngenConfig>
|
||||
|
||||
|
@ -101,7 +102,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletText="******** CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
|
||||
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent Lightning" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>
|
||||
<bullet bulletName="stormIntensify" bulletText="Storm(s) May Intensify" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
|
||||
<bullet bulletName="stormIntensifyCTA" bulletText="Storm(s) May Intensify" parseString=""MAY INTENSIFY","POSSIBLE WARNING""/>
|
||||
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
|
||||
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
|
||||
<bullet bulletName="camperCTA" bulletText="Campground - Campers seek shelter" parseString="PERSONS IN CAMPGROUNDS"/>
|
||||
|
@ -135,7 +136,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletText="******** CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
|
||||
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent Lightning" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>
|
||||
<bullet bulletName="stormIntensify" bulletText="Storm(s) May Intensify" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
|
||||
<bullet bulletName="stormIntensifyCTA" bulletText="Storm(s) May Intensify" parseString=""MAY INTENSIFY","POSSIBLE WARNING""/>
|
||||
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
|
||||
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
|
||||
<bullet bulletName="camperCTA" bulletText="Campground - Campers seek shelter" parseString="PERSONS IN CAMPGROUNDS"/>
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
## Phil Kurimski -- Oct 22 2014 Mixed Case ##
|
||||
## Richard Barnhill -- Dec 30 2015 Per conversation with##
|
||||
## Evan, made default hailCTA "" ##
|
||||
###################################################################
|
||||
## Evan Bookbinder -- Fixed issue setting stormType to null ##
|
||||
#######################################################################
|
||||
#parse("config.vm")
|
||||
## Set null variables used in the template
|
||||
############################################
|
||||
|
@ -494,7 +495,6 @@ ${area.name}...
|
|||
#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.
|
||||
|
@ -505,7 +505,6 @@ ${area.name}...
|
|||
#set($pathheader = "the ${volcanoPath}")
|
||||
#set($reportType2 = "the ${volcanoPath} was")
|
||||
#set($specialEvent = "the ${volcanoPath}")
|
||||
#set($stormType = "")
|
||||
#set($impacted = "Locations impacted by ${volcanoPath} include...")
|
||||
#end
|
||||
#######################################################################
|
||||
|
|
|
@ -78,6 +78,7 @@ import com.vividsolutions.jts.io.WKTWriter;
|
|||
* 05/13/2014 3133 njensen Moved convertStrankValue here from ScanConfig
|
||||
* Jun 05, 2014 3226 bclement BinLightning refactor
|
||||
* compare lightning strike type by id instead of ordinal
|
||||
* May 17, 2016 19009 dhladky (code ckecked in by zhao) Modified decodeDPRValue()
|
||||
* </pre>
|
||||
*
|
||||
* @author dhladky
|
||||
|
@ -812,10 +813,8 @@ public class ScanUtils {
|
|||
* @return
|
||||
*/
|
||||
public static float decodeDPRValue(int dataValue) {
|
||||
|
||||
// DPR is shown in 1000th of an inch
|
||||
|
||||
return dataValue / 1000;
|
||||
return (float) (dataValue / 1000.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -110,6 +110,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
|||
* Sep 28, 2015 4756 dhladky Multiple Guidance upgrades.
|
||||
* Feb 04, 2016 5311 dhladky Bug in creation of source bins fixed.
|
||||
* Apr 07, 2016 5491 tjensen Fix NullPointerException from getRawGeometries
|
||||
* May 17, 2016 19009 dhladky (code ckecked in by zhao) Modified DPR calculation in processRADAR()
|
||||
* </pre>
|
||||
*
|
||||
* @author dhladky
|
||||
|
@ -1186,17 +1187,8 @@ public class FFMPProcessor {
|
|||
}
|
||||
|
||||
} else if (radarRec.getMnemonic().equals("DPR")) {
|
||||
|
||||
for (int j = 0; j < dataVals.length; j++) {
|
||||
|
||||
float fval = 0.0f;
|
||||
|
||||
if (dataVals[j] > 0) {
|
||||
|
||||
fval = ScanUtils.decodeDPRValue(dataVals[j]);
|
||||
val += fval * areas[j];
|
||||
}
|
||||
|
||||
val += ScanUtils.decodeDPRValue(dataVals[j]) * areas[j];
|
||||
area += areas[j];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -144,6 +144,10 @@ if [ -f org.eclipse.jface_%{_jface_version}.jar ]; then
|
|||
org.eclipse.jface_%{_jface_version}.jar
|
||||
fi
|
||||
|
||||
# Delete configuration information because it references the jar files that
|
||||
# were just deleted.
|
||||
rm -rf /awips2/cave/configuration/org.eclipse.osgi
|
||||
|
||||
popd > /dev/null 2>&1
|
||||
|
||||
# determine if an installation of awips2-common-base is already present
|
||||
|
|
|
@ -911,5 +911,5 @@ NGRID ^(HIN[B-X][0-9][0-9]) (KWNH) (..)(..)(..)
|
|||
|
||||
# National Radar for DCS 18425 / DR 18913
|
||||
NNEXRAD ^(SDUS[234578].) (K|P|T)(...) (..)(..)(..) /p(N0Q|N1Q|N0U|N1U|NST|TZL|TR1|TV1|NCR)(...)
|
||||
FILE -overwrite -log -close -edex /data_store/radar/\2\8/\7/\1_\5\6_\2\8_\7_(seq).rad
|
||||
FILE -overwrite -log -close -edex /data_store/radar/(\4:yyyy)(\4:mm)(\4)/\5/\2\8/\7/\1_\4\5\6_\2\8_\7_(seq).rad
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue