Merge tag 'OB_16.1.1-2' into omaha_16.2.1
16.1.1-2 Conflicts: cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/SmartScript.py cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/BaseGfePyController.java cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/SmartUtil.java cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/Tool.java cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/script/SmartToolJobPool.java Former-commit-id: 8053621c46adc8813128ecfa81c0834f670db64f
|
@ -371,6 +371,23 @@
|
|||
</ini-substitutions>
|
||||
</memory-setting>
|
||||
|
||||
<memory-setting>
|
||||
<command-line-args>
|
||||
<first-arg>-component</first-arg>
|
||||
<second-arg>hydroXdat</second-arg>
|
||||
</command-line-args>
|
||||
|
||||
<ini-substitutions>
|
||||
<max-memory>
|
||||
<value>256M</value>
|
||||
</max-memory>
|
||||
|
||||
<max-perm>
|
||||
<value>64M</value>
|
||||
</max-perm>
|
||||
</ini-substitutions>
|
||||
</memory-setting>
|
||||
|
||||
<memory-setting>
|
||||
<command-line-args>
|
||||
<first-arg>-component</first-arg>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
# ------------ ---------- ----------- --------------------------
|
||||
# Oct 09, 2014 #3675 bclement added cleanExit signal trap
|
||||
# Jun 17, 2015 #4148 rferrel Logback needs fewer environment variables.
|
||||
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
|
||||
#
|
||||
|
||||
user=`/usr/bin/whoami`
|
||||
|
@ -103,6 +104,32 @@ if [ ! -d $LOGDIR ]; then
|
|||
mkdir -p $LOGDIR
|
||||
fi
|
||||
|
||||
SWITCHES=()
|
||||
|
||||
function deleteEclipseConfigurationDir()
|
||||
{
|
||||
if [[ -n $eclipseConfigurationDir ]]; then
|
||||
rm -rf "$eclipseConfigurationDir"
|
||||
fi
|
||||
}
|
||||
|
||||
function createEclipseConfigurationDir()
|
||||
{
|
||||
local d dir id=$(hostname)-$(whoami)
|
||||
for d in "/local/cave-eclipse/" "$HOME/.cave-eclipse/"; do
|
||||
if dir=$(mktemp -d -p "$d" "${id}-XXXX"); then
|
||||
eclipseConfigurationDir=$dir
|
||||
trap deleteEclipseConfigurationDir EXIT
|
||||
SWITCHES+=(-configuration "$eclipseConfigurationDir")
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "Unable to create a unique Eclipse configuration directory. Will proceed with default." >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
createEclipseConfigurationDir
|
||||
|
||||
# takes in a process id
|
||||
# kills spawned subprocesses of pid
|
||||
# and then kills the process itself and exits
|
||||
|
@ -130,9 +157,9 @@ do
|
|||
exitVal=0
|
||||
else
|
||||
if [ -w ${LOGDIR} ] ; then
|
||||
${dir}/alertviz $* > /dev/null 2>&1 &
|
||||
${dir}/alertviz "${SWITCHES[@]}" $* > /dev/null 2>&1 &
|
||||
else
|
||||
${dir}/alertviz $* &
|
||||
${dir}/alertviz "${SWITCHES[@]}" $* &
|
||||
fi
|
||||
pid=$!
|
||||
wait $pid
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
# Oct 13, 2014 #3675 bclement startup shutdown log includes both launching pid and placeholder
|
||||
# Jan 28, 2015 #4018 randerso Added a productEditor log file to changes in the GFE product editor
|
||||
# Jun 17, 2015 #4148 rferrel Logback needs fewer environment variables.
|
||||
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
|
||||
#
|
||||
|
||||
|
||||
|
@ -91,6 +92,7 @@ if [ $? -ne 0 ]; then
|
|||
fi
|
||||
export apps_dir=${HYDRO_APPS_DIR}
|
||||
|
||||
SWITCHES=()
|
||||
TESTCHECK="$TMCP_HOME/bin/getTestMode"
|
||||
if [ -x ${TESTCHECK} ]; then
|
||||
echo "Calling getTestMode()"
|
||||
|
@ -98,16 +100,15 @@ if [ -x ${TESTCHECK} ]; then
|
|||
status=${?}
|
||||
if [ $status -eq 11 ]; then
|
||||
MODE="TEST"
|
||||
SWITCHES="${SWITCHES} -mode TEST "
|
||||
SWITCHES+=(-mode TEST)
|
||||
elif [ $status -eq 12 ];then
|
||||
MODE="PRACTICE"
|
||||
SWITCHES="${SWITCHES} -mode PRACTICE "
|
||||
SWITCHES+=(-mode PRACTICE)
|
||||
elif [ $status -eq 15 ];then
|
||||
MODE="OPERATIONAL"
|
||||
SWITCHES="${SWITCHES} -mode OPERATIONAL"
|
||||
SWITCHES+=(-mode OPERATIONAL)
|
||||
else
|
||||
MODE="OPERATIONAL (no response)"
|
||||
SWITCHES="${SWITCHES} "
|
||||
fi
|
||||
echo "getTestMode() returned ${MODE}"
|
||||
else
|
||||
|
@ -210,6 +211,8 @@ curTime=`date +%Y%m%d_%H%M%S`
|
|||
pid=$!
|
||||
export LOGFILE_STARTUP_SHUTDOWN="${LOGDIR}/${PROGRAM_NAME}_${pid}_${curTime}_pid_%PID%_startup-shutdown.log"
|
||||
|
||||
createEclipseConfigurationDir
|
||||
|
||||
# At this point fork so that log files can be set up with the process pid and
|
||||
# this process can log the exit status of cave.
|
||||
(
|
||||
|
@ -235,20 +238,25 @@ export LOGFILE_STARTUP_SHUTDOWN="${LOGDIR}/${PROGRAM_NAME}_${pid}_${curTime}_pid
|
|||
|
||||
lookupINI "${USER_ARGS[@]}"
|
||||
|
||||
# Make it easy to determine which process is using the directory
|
||||
if [[ -n $eclipseConfigurationDir ]]; then
|
||||
echo "$$" > "$eclipseConfigurationDir"/pid
|
||||
fi
|
||||
|
||||
if [[ "${runMonitorThreads}" == "true" ]] ; then
|
||||
# nohup to allow tar process to continue after user has logged out
|
||||
nohup ${CAVE_INSTALL}/monitorThreads.sh $pid >> /dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
echo "Launching cave application using the following command: " >> ${LOGFILE_STARTUP_SHUTDOWN}
|
||||
echo "${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} ${USER_ARGS[@]}" >> ${LOGFILE_STARTUP_SHUTDOWN}
|
||||
echo "${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES[@]} ${USER_ARGS[@]}" >> ${LOGFILE_STARTUP_SHUTDOWN}
|
||||
|
||||
if [[ "${redirect}" == "true" ]] ; then
|
||||
# send output to /dev/null because the logback CaveConsoleAppender will capture that output
|
||||
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} "${USER_ARGS[@]}" >> /dev/null 2>&1
|
||||
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" >> /dev/null 2>&1
|
||||
else
|
||||
# allow output to print to the console/terminal that launched CAVE
|
||||
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} "${USER_ARGS[@]}" 2>&1
|
||||
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" 2>&1
|
||||
fi
|
||||
) &
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
# Jul 10, 2014 #3363 bclement fixed precedence order for ini file lookup
|
||||
# Jul 11, 2014 #3371 bclement added killSpawn()
|
||||
# Oct 13, 2014 #3675 bclement logExitStatus() waits for child to start and renames log with child PID
|
||||
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
|
||||
|
||||
|
||||
source /awips2/cave/iniLookup.sh
|
||||
|
@ -391,3 +392,25 @@ function deleteOldCaveLogs()
|
|||
|
||||
}
|
||||
|
||||
function deleteEclipseConfigurationDir()
|
||||
{
|
||||
if [[ -n $eclipseConfigurationDir ]]; then
|
||||
rm -rf "$eclipseConfigurationDir"
|
||||
fi
|
||||
}
|
||||
|
||||
function createEclipseConfigurationDir()
|
||||
{
|
||||
local d dir id=$(hostname)-$(whoami)
|
||||
for d in "/local/cave-eclipse/" "$HOME/.cave-eclipse/"; do
|
||||
if dir=$(mktemp -d -p "$d" "${id}-XXXX"); then
|
||||
eclipseConfigurationDir=$dir
|
||||
trap deleteEclipseConfigurationDir EXIT
|
||||
SWITCHES+=(-configuration "$eclipseConfigurationDir")
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "Unable to create a unique Eclipse configuration directory. Will proceed with default." >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
|
|
|
@ -74,12 +74,13 @@ import com.raytheon.uf.viz.core.VizApp;
|
|||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Sep 04, 2008 1433 chammack Initial creation
|
||||
* Jun 03, 2013 2026 randerso Improve error handling
|
||||
* May 05, 2015 4473 mschenke Major refactor
|
||||
* Jun 01, 2015 4473 njensen Major refactor, removed send ability
|
||||
* Jun 29, 2015 4473 njensen Register notification observer on start
|
||||
* ------------ ---------- ----------- ---------------------------------
|
||||
* Sep 4, 2008 1433 chammack Initial creation
|
||||
* Jun 3, 2013 2026 randerso Improve error handling
|
||||
* May 05, 2015 4473 mschenke Major refactor
|
||||
* Jun 01, 2015 4473 njensen Major refactor, removed send ability
|
||||
* Jun 29, 2015 4473 njensen Register notification observer on start
|
||||
* Jul 4, 2015 DR 17167 dhuffman Remove nulls from incoming xml
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -260,7 +261,7 @@ public class AlertvizJob extends Job implements AlertService {
|
|||
if (message instanceof TextMessage) {
|
||||
String xml = null;
|
||||
try {
|
||||
xml = ((TextMessage) message).getText();
|
||||
xml = ((TextMessage) message).getText().replace("\u0000", "");
|
||||
StatusMessage sm = jaxb.unmarshalFromXml(StatusMessage.class,
|
||||
xml);
|
||||
if (sm.getEventTime() == null) {
|
||||
|
|
|
@ -73,6 +73,7 @@ import com.raytheon.viz.ui.actions.DummyAction;
|
|||
* when magnification set to 0
|
||||
* Aug 2, 2013 DR 16427 Qinglu Lin (David's approach) Changing InputPriority.SYSTEM_RESOURCE to
|
||||
* InputPriority.SYSTEM_RESOURCE_LOW in initInternal().
|
||||
* Jun 30, 2015 RM14663 kshresth Font size increased for Contour labels.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -571,7 +572,7 @@ public class D2DLegendResource extends
|
|||
private float getScaledMagnification() {
|
||||
float magnification = getCapability(MagnificationCapability.class)
|
||||
.getMagnification().floatValue();
|
||||
if (magnification < 0.6f) {
|
||||
if (magnification < 0.9f) {
|
||||
magnification = 1.0f;
|
||||
} else if (magnification > 1.0f) {
|
||||
magnification = 1 + (magnification / 4.0f);
|
||||
|
|
|
@ -83,6 +83,8 @@ import com.raytheon.uf.viz.d2d.core.D2DLoadProperties;
|
|||
* null dataTimes.
|
||||
* May 13, 2015 4461 bsteffen Move the logic to change frames into the
|
||||
* FrameCoordinator.
|
||||
* Jul 14, 2015 DR 13900 D. Friedman Validate descriptor of time match basis
|
||||
* before time matching it.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -246,8 +248,13 @@ public class D2DTimeMatcher extends AbstractTimeMatcher {
|
|||
if (timeMatchBasis != null) {
|
||||
IDescriptor tmDescriptor = timeMatchBasis.getDescriptor();
|
||||
if (tmDescriptor != null) {
|
||||
if (tmDescriptor != descriptor) {
|
||||
redoTimeMatching(tmDescriptor);
|
||||
if (tmDescriptor != descriptor
|
||||
&& tmDescriptor.getTimeMatcher() == this) {
|
||||
if (validateDescriptor(tmDescriptor)) {
|
||||
redoTimeMatching(tmDescriptor);
|
||||
} else {
|
||||
changeTimeMatchBasis(null);
|
||||
}
|
||||
} else if (contained(tmDescriptor, timeMatchBasis) == false) {
|
||||
// Checks to ensure the timeMatchBasis is not "orphaned"
|
||||
timeMatchBasis = null;
|
||||
|
@ -1052,4 +1059,23 @@ public class D2DTimeMatcher extends AbstractTimeMatcher {
|
|||
return false;
|
||||
}
|
||||
|
||||
boolean rocket = true;
|
||||
private boolean validateDescriptor(IDescriptor descriptor) {
|
||||
if (! rocket)
|
||||
return true;
|
||||
IRenderableDisplay display = descriptor.getRenderableDisplay();
|
||||
IDisplayPaneContainer container = display != null ? display
|
||||
.getContainer() : null;
|
||||
if (container != null) {
|
||||
for (IDisplayPane pane : container.getDisplayPanes()) {
|
||||
IRenderableDisplay paneDisplay = pane.getRenderableDisplay();
|
||||
IDescriptor paneDescriptor = paneDisplay != null ? paneDisplay
|
||||
.getDescriptor() : null;
|
||||
if (paneDescriptor == descriptor)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -99,6 +99,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* (background/foreground colors) since the Redhat
|
||||
* 6 upgrade causes the check in the checkbox to be
|
||||
* colored the same as the background.
|
||||
* Jul, 20 2015 #17584 lshi The SCAN Cell table quit updating caused by NPE
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -1173,6 +1174,7 @@ public class SCANCellTableDlg extends AbstractTableDlg implements
|
|||
}
|
||||
}
|
||||
if (((scanTable == ScanTables.CELL) || (scanTable == ScanTables.DMD))
|
||||
&& (EditorUtil.getActiveVizContainer() != null)
|
||||
&& !(EditorUtil.getActiveVizContainer()
|
||||
.getLoopProperties().isLooping())
|
||||
&& (mgr.getScheduledAlarms(site, scanTable).size() > 0)
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<constraint constraintValue="grid"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="RUC236"/>
|
||||
<constraint constraintValue="RUC130"/>
|
||||
</mapping>
|
||||
</constraints>
|
||||
</source>
|
||||
|
@ -47,7 +47,7 @@
|
|||
<constraint constraintValue="grid"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="Laps"/>
|
||||
<constraint constraintValue="LAPS"/>
|
||||
</mapping>
|
||||
</constraints>
|
||||
</source>
|
||||
|
|
|
@ -44,6 +44,7 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
* Feb 16, 2011 7878 rferrel Modifications for create ident/site.
|
||||
* May 10, 2011 9059 rferrel Extended times outs on executes
|
||||
* Jun 01, 2011 7878 rferrel Adjusted time out when creating nc files
|
||||
* Jul 10, 2015 16907 zhao Changed time limit from 600 to 6000 for processData() & assessData()
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -174,7 +175,7 @@ public class ClimateDataManager implements PyProcessListener {
|
|||
args.put("climateDir", ishDir);
|
||||
numSites = items.size();
|
||||
pythonScript.execute("start", args,
|
||||
ClimateDataManager.this, 600 * numSites);
|
||||
ClimateDataManager.this, 6000 * numSites);
|
||||
long t1 = System.currentTimeMillis();
|
||||
System.out.println("assessData() running time: "
|
||||
+ (t1 - t0));
|
||||
|
@ -210,7 +211,7 @@ public class ClimateDataManager implements PyProcessListener {
|
|||
Map<String, Object> args = new HashMap<String, Object>();
|
||||
args.put("stnPickle", stnPickle);
|
||||
pythonScript.execute("process", args,
|
||||
ClimateDataManager.this, 600 * numSites);
|
||||
ClimateDataManager.this, 6000 * numSites);
|
||||
long t1 = System.currentTimeMillis();
|
||||
System.out.println("processData() running time: "
|
||||
+ (t1 - t0));
|
||||
|
|
|
@ -102,6 +102,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* Oct 09, 2012 #1229 rferrel Changes for non-blocking CigVisTrendDlg.
|
||||
* Oct 15, 2012 #1229 rferrel Changes for non-blocking HelpUsageDlg.
|
||||
* Mar 04, 2015 #15639 zhao Added 'heightHint' to 'Idents' list so GUI won't become too large
|
||||
* Jul 07, 2015 16907 zhao Changed 'ish-' to 'isd-'
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -367,7 +368,7 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
|
|||
|
||||
// Update NCDC menu item
|
||||
MenuItem updateNcdcMI = new MenuItem(commandsMenu, SWT.NONE);
|
||||
updateNcdcMI.setText("&Update NCDC \"ish\" Files...");
|
||||
updateNcdcMI.setText("&Update NCDC \"isd\" Files...");
|
||||
updateNcdcMI.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
|
@ -508,7 +509,7 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
|
|||
if (mustCreate(usageDlg)) {
|
||||
String description = "CLimate Data Update Dialog Help";
|
||||
|
||||
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"ish\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
|
||||
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"isd\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
|
||||
usageDlg = new HelpUsageDlg(shell, description, helpText);
|
||||
usageDlg.open();
|
||||
} else {
|
||||
|
@ -1320,10 +1321,10 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
|
|||
|
||||
Pattern usaf_wbanPat = Pattern.compile(expr.toString());
|
||||
|
||||
// Parse the ish file and get the lines of interest.
|
||||
// Parse the isd file and get the lines of interest.
|
||||
java.util.List<String> lines = new ArrayList<String>();
|
||||
File invFile = new File(ClimateDataPython.getIshFilePath()
|
||||
+ "/ish-inventory.txt");
|
||||
+ "/isd-inventory.txt");
|
||||
BufferedReader input = new BufferedReader(new FileReader(invFile));
|
||||
try {
|
||||
String line = null;
|
||||
|
|
|
@ -44,6 +44,7 @@ import com.raytheon.viz.aviation.monitor.AvnPyUtil;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 17, 2009 avarani Initial creation
|
||||
* Feb 16, 2011 7878 rferrel Modifications for create ident/site.
|
||||
* Jul 07, 2015 16907 zhao Changed 'ish-' to 'isd-'
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -80,12 +81,12 @@ public class ClimateDataPython {
|
|||
}
|
||||
|
||||
/**
|
||||
* Obtain path name of the directory with the ISH files and verify the files
|
||||
* Obtain path name of the directory with the ISD files and verify the files
|
||||
* exist.
|
||||
*
|
||||
* @return dataDir
|
||||
* @throws VizException
|
||||
* when unable to find ISH files
|
||||
* when unable to find ISD files
|
||||
*/
|
||||
public static String getIshFilePath() throws VizException {
|
||||
String dataDirStr = VizApp.getDataDir();
|
||||
|
@ -95,17 +96,17 @@ public class ClimateDataPython {
|
|||
"Directory: \"%s\" does not exist.", dataDir.getPath()));
|
||||
}
|
||||
|
||||
File histFile = new File(dataDir, "ish-history.txt");
|
||||
File histFile = new File(dataDir, "isd-history.txt");
|
||||
if (histFile == null || !histFile.exists()) {
|
||||
throw new VizException(String.format(
|
||||
"ISH history file: \"%s\" does not exist.",
|
||||
"ISD history file: \"%s\" does not exist.",
|
||||
histFile.getPath()));
|
||||
}
|
||||
|
||||
File invFile = new File(dataDir, "ish-inventory.txt");
|
||||
File invFile = new File(dataDir, "isd-inventory.txt");
|
||||
if (invFile == null || !invFile.exists()) {
|
||||
throw new VizException(String.format(
|
||||
"ISH inventory file: \"%s\" does not exist.",
|
||||
"ISD inventory file: \"%s\" does not exist.",
|
||||
invFile.getPath()));
|
||||
}
|
||||
|
||||
|
|
|
@ -72,6 +72,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* to save a script.
|
||||
* Oct 08, 2012 #1229 rferrel Made non-blocking.
|
||||
* Aug 09, 2013 #2033 mschenke Switched File.separator to IPathManager.SEPARATOR
|
||||
* Jul 10, 2015 16907 zhao Changed 'ish-' to 'isd-'
|
||||
*
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -272,9 +274,9 @@ public class GenScriptsDlg extends CaveSWTDialog {
|
|||
String fname = null;
|
||||
|
||||
if (style.equals("inv")) {
|
||||
fname = "ish-inventory.txt";
|
||||
fname = "isd-inventory.txt";
|
||||
} else {
|
||||
fname = "ish-history.txt";
|
||||
fname = "isd-history.txt";
|
||||
}
|
||||
|
||||
scriptMsg.append(wgetStart).append(ftpIshDir).append("/")
|
||||
|
@ -316,9 +318,9 @@ public class GenScriptsDlg extends CaveSWTDialog {
|
|||
String fname = null;
|
||||
|
||||
if (style.equals("inv")) {
|
||||
fname = "ish-inventory.txt";
|
||||
fname = "isd-inventory.txt";
|
||||
} else {
|
||||
fname = "ish-history.txt";
|
||||
fname = "isd-history.txt";
|
||||
}
|
||||
|
||||
scriptMsg.append(">> script.ftp ECHO get ").append(fname)
|
||||
|
@ -368,8 +370,7 @@ public class GenScriptsDlg extends CaveSWTDialog {
|
|||
} else {
|
||||
instructions = "==================================================\n";
|
||||
instructions += "Please move this just-downloaded NCDC file to an\n";
|
||||
instructions += "AWIPS machine into the " + targetPath
|
||||
+ "/etc\n";
|
||||
instructions += "AWIPS machine into the " + targetPath + "\n";
|
||||
instructions += "directory.\n";
|
||||
instructions += "==================================================\n";
|
||||
}
|
||||
|
@ -409,7 +410,7 @@ public class GenScriptsDlg extends CaveSWTDialog {
|
|||
sb.append(ext);
|
||||
scriptFile = sb.toString();
|
||||
} else {
|
||||
scriptFile = "getNCDC-ISHFile" + ext;
|
||||
scriptFile = "getNCDC-ISDFile" + ext;
|
||||
}
|
||||
|
||||
FileDialog dlg = new FileDialog(shell, SWT.SAVE);
|
||||
|
|
|
@ -56,7 +56,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* Nov 16, 2009 #3438 lvenable Initial creation
|
||||
* Oct 08, 2012 #1229 rferrel Changes for non-blocking GenScriptsDlg.
|
||||
* Oct 08, 2012 #1229 rferrel Make dialog non-blocking.
|
||||
*
|
||||
* Jul 07, 2015 16907 zhao changed 'ish-' to 'isd-'
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -121,9 +122,9 @@ public class NCDCInvHistDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private GenScriptsDlg generateScriptsDlg;
|
||||
|
||||
private String invFilename = "ish-inventory.txt";
|
||||
private String invFilename = "isd-inventory.txt";
|
||||
|
||||
private String histFilename = "ish-history.txt";
|
||||
private String histFilename = "isd-history.txt";
|
||||
|
||||
private File invFile;
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<ClimateDataFTPArgs>
|
||||
<Site>ftp3.ncdc.noaa.gov</Site>
|
||||
<Site>ftp.ncdc.noaa.gov</Site>
|
||||
<DataDir>pub///data/noaa</DataDir>
|
||||
<IshDir>/pub/data/noaa</IshDir>
|
||||
<User>anonymous</User>
|
||||
|
|
|
@ -31,6 +31,10 @@
|
|||
# Change Document History:
|
||||
# %PIRC%
|
||||
#
|
||||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# Jul 07, 2015 16907 zhao Modified to work with new ids- files
|
||||
|
||||
import sys
|
||||
sys.argv = [__name__]
|
||||
|
||||
|
@ -50,7 +54,7 @@ _Logger = logging.getLogger(ClimateProcessLogger.CLIMATE_CATEGORY)
|
|||
# Variables set for now, but to be replaced with cfg vars
|
||||
# ..before integrating this program
|
||||
#
|
||||
ish_inv = 'ish-inventory.txt'
|
||||
ish_inv = 'isd-inventory.txt'
|
||||
ftp_site = 'ftp.ncdc.noaa.gov'
|
||||
ftp_dir = '/pub/data/noaa'
|
||||
climo_dir = '/data/adapt/avnfps/climate'
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
# %PIRC%
|
||||
#
|
||||
# TODO: make the # climate years configurable
|
||||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# Jul 07, 2015 16907 zhao Modified to work with new ids- files
|
||||
#
|
||||
import ConfigParser
|
||||
import logging, time, os
|
||||
|
||||
|
@ -40,8 +44,8 @@ sys.argv = [__name__]
|
|||
|
||||
import tables
|
||||
|
||||
ish_inv = 'ish-inventory.txt'
|
||||
ish_his = 'ish-history.txt'
|
||||
ish_inv = 'isd-inventory.txt'
|
||||
ish_his = 'isd-history.txt'
|
||||
_Logger=logging.getLogger('CLIMATE')
|
||||
|
||||
def get_climo_years(climateFilePath, stn='', lines = []):
|
||||
|
@ -140,5 +144,5 @@ def getIdnumsList(ishDirPath, climateFilePath, stn=''):
|
|||
def getHistory(ishDirPath, stn=''):
|
||||
if stn == '': return []
|
||||
fh = open(os.path.join(ishDirPath, ish_his), 'r')
|
||||
return [line[:12] for line in fh.readlines() if stn == line[52:56] and line[:6] != '999999']
|
||||
return [line[:12] for line in fh.readlines() if stn == line[51:55] and line[:6] != '999999']
|
||||
|
||||
|
|
|
@ -320,6 +320,7 @@
|
|||
# 02APR2014 17211 zhao (code obtained from the listserver via Virgil that implements a new rule regarding CB, TS etc)
|
||||
# May 12, 2014 16928 zhao Modified check_prev_time()
|
||||
# Sep 17, 2014 16928 zhao Added a line break "\n" to message 25 (since it appears together with message 49)
|
||||
# Jul 07, 2015 16973 zhao Added 'DRSN' as valid value of sig weather
|
||||
#
|
||||
#
|
||||
import exceptions, re, time, types
|
||||
|
@ -477,14 +478,14 @@ _ValidVsby = { \
|
|||
_ValidObvis = dict.fromkeys(['BR', 'FG', 'FZFG', 'MIFG', 'PRFG', 'BCFG', \
|
||||
'FU', 'VA', 'HZ', 'BLPY', \
|
||||
'DU', 'DRDU', 'BLDU', \
|
||||
'SA', 'DRSA', 'BLSA', \
|
||||
'SA', 'DRSA', 'BLSA', 'DRSN', \
|
||||
'BLSN', 'BLSA', 'BLDU', \
|
||||
'PO', 'SQ', 'FC', '+FC', 'SS', '+SS', 'DS', '+DS'])
|
||||
|
||||
_ValidPcp = dict.fromkeys(['-DZ', 'DZ', '+DZ', '-FZDZ', 'FZDZ', '+FZDZ', \
|
||||
'-RA', 'RA', '+RA', '-SHRA', 'SHRA', '+SHRA', \
|
||||
'-TSRA', 'TSRA', '+TSRA', '-FZRA', 'FZRA', '+FZRA', \
|
||||
'-SN', 'SN', '+SN', '-SHSN', 'SHSN', '+SHSN', \
|
||||
'-SN', 'SN', '+SN', '-SHSN', 'SHSN', '+SHSN', 'DRSN', \
|
||||
'-TSSN', 'TSSN', '+TSSN', \
|
||||
'-PL', 'PL', '+PL', '+SHPL', 'SHPL', '+SHPL', \
|
||||
'-TSPL', 'TSPL', '+TSPL', \
|
||||
|
|
|
@ -17,13 +17,6 @@ then
|
|||
echo "CAVE and/or gfeclient not installed on this workstation ..exiting"
|
||||
exit 1
|
||||
else
|
||||
CONFDIR=${HOME}/.runProc-$(hostname)-$$
|
||||
cleanup() {
|
||||
rm -rf "$CONFDIR"
|
||||
}
|
||||
mkdir -p "$CONFDIR" || exit 1
|
||||
trap cleanup EXIT
|
||||
|
||||
$_GFECLI -configuration $CONFDIR $_MODULE "$@"
|
||||
$_GFECLI $_MODULE "$@"
|
||||
fi
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
# Version Date: 4 January 2006
|
||||
# Version: 6.5
|
||||
#
|
||||
# 7/27/2015 yteng Call CheckTandTd and CheckWindGust for processing
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# The MenuItems list defines the GFE menu item(s) under which the
|
||||
|
@ -42,117 +43,12 @@ VariableList = [("Check or Force:" , "Check Only", "radio",
|
|||
|
||||
|
||||
import SmartScript
|
||||
import TimeRange
|
||||
import AbsTime
|
||||
from JUtil import JavaWrapperClass
|
||||
from numpy import *
|
||||
|
||||
MODEL = "Fcst"
|
||||
LEVEL = "SFC"
|
||||
DAY_IN_SECS = 24 * 3600
|
||||
|
||||
|
||||
class Procedure (SmartScript.SmartScript):
|
||||
def __init__(self, dbss):
|
||||
SmartScript.SmartScript.__init__(self, dbss)
|
||||
|
||||
|
||||
##
|
||||
# Get the list of time ranges at the grid whose element name is WEName
|
||||
# contains grids. The model and level of the weather element are assumed
|
||||
# to be MODEL and LEVEL, respectively.
|
||||
#
|
||||
# @param WEName: Name of a weather element
|
||||
# @type WEName: string
|
||||
# @return: time ranges at which WEName has data.
|
||||
# @rtype: Python list of Python TimeRange objects
|
||||
def getWEInventory(self, WEName, timeRange=None):
|
||||
if timeRange is None:
|
||||
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
later = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(yesterday, later)
|
||||
if isinstance(timeRange, JavaWrapperClass):
|
||||
timeRange = timeRange.toJavaObj()
|
||||
parm = self.getParm(MODEL, WEName, LEVEL);
|
||||
inv = parm.getGridInventory(timeRange)
|
||||
trList = []
|
||||
for gd in inv:
|
||||
tr = TimeRange.TimeRange(gd.getGridTime())
|
||||
trList.append(tr)
|
||||
|
||||
return trList
|
||||
|
||||
|
||||
##
|
||||
# Get time ranges locked by other workstations for the weather element named
|
||||
# weName. The model for weName is taken from this object's mutableID() method;
|
||||
# the level is LEVEL.
|
||||
# @param weName: Name of a weather element.
|
||||
# @type weName: string
|
||||
# @return: time ranges locked by others
|
||||
# @rtype: Python list of TimeRanges; if asJava is True, these are Java
|
||||
# TimeRanges, otherwise they are Python TimeRanges.
|
||||
def getLocksByOthers(self, weName):
|
||||
# returns list of time ranges locked by others for this weather element
|
||||
parm = self.getParm(self.mutableID(), weName, LEVEL)
|
||||
if parm is None:
|
||||
return []
|
||||
lt = parm.getLockTable()
|
||||
jlok = lt.lockedByOther();
|
||||
lbo = []
|
||||
for i in xrange(jlok.size()):
|
||||
tr = jlok.get(i)
|
||||
tr = TimeRange.TimeRange(tr)
|
||||
lbo.append(tr)
|
||||
return lbo
|
||||
|
||||
##
|
||||
# Filter trList, returning only the time ranges that overlap timeRange.
|
||||
# @param timeRange: the time range to test against
|
||||
# @type timeRange: a Python TimeRange
|
||||
# @param trList: the list of time ranges to filter
|
||||
# @type trList: Python list of Python TimeRanges
|
||||
# @return: The time ranges in trList that overlap timeRange.
|
||||
# @rtype: a Python list of Python time ranges
|
||||
def overlappingTRs(self, timeRange, trList):
|
||||
newTRList = []
|
||||
for tr in trList:
|
||||
if timeRange.overlaps(tr):
|
||||
newTRList.append(tr)
|
||||
|
||||
return newTRList
|
||||
|
||||
##
|
||||
# method so that timeRanges will be sorted earliest to latest
|
||||
# @param first: The first time range to compare
|
||||
# @type first: Python TimeRange
|
||||
# @param last: The second time range to compare
|
||||
# @type last: Python TimeRange
|
||||
# @return: -1 if first starts before last, 1 if first starts after last,
|
||||
# and 0 if first and last start at the same time.
|
||||
# @rtype: integer
|
||||
def trSortMethod(self, first, last):
|
||||
if first.startTime() < last.startTime():
|
||||
return -1
|
||||
elif first.startTime() == last.startTime():
|
||||
return 0
|
||||
else:
|
||||
return 1
|
||||
|
||||
##
|
||||
# Concatenate minTRList and maxTRList and sort by starting times.
|
||||
# Duplicate time ranges are NOT eliminated.
|
||||
# @param minTRList: time ranges of the minT grid
|
||||
# @type minTRList: Python list of Python TimeRange objects.
|
||||
# @param maxTRList: time ranges of the maxT grid
|
||||
# @type maxTRList: Python list of Python TimeRange objects.
|
||||
# @return: The combined and sorted collection.
|
||||
# @rtype: Python list of Python TimeRange objects
|
||||
def combineInventoryLists(self, minTRList, maxTRList):
|
||||
bigList = minTRList + maxTRList
|
||||
bigList.sort(self.trSortMethod)
|
||||
return bigList
|
||||
|
||||
##
|
||||
# Main entry point of this procedure. If varDict["Check or Force"] is
|
||||
# "Check Only", temporary grids will be created. Otherwise, the minT, maxT,
|
||||
|
@ -161,304 +57,5 @@ class Procedure (SmartScript.SmartScript):
|
|||
# temperature grids are modified.
|
||||
# @type varDict: Python dictionary of strings to strings
|
||||
def execute(self, timeRange, varDict):
|
||||
checkOnly = varDict["Check or Force:"] == "Check Only"
|
||||
|
||||
# remove any temporary WEs we created
|
||||
weList = ["TLessThanMin", "TGreaterThanMax", "TdGreaterThanT",
|
||||
"MinGreaterThanMax", "MaxLessThanMin", "WindGreaterThanGust"]
|
||||
for we in weList:
|
||||
parm = self.getParm(MODEL, we, LEVEL)
|
||||
if parm is not None:
|
||||
self.unloadWE(MODEL, we, LEVEL)
|
||||
|
||||
self.setToolType("numeric")
|
||||
|
||||
# Added for OAX: if no timeRange selected then make a big timeRange
|
||||
if not timeRange.isValid():
|
||||
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(start, end)
|
||||
|
||||
# get all the grids for all elements upfront and update as we modify
|
||||
# any grids. We need to do this because the GFE caches the original
|
||||
# version of all grids and there's no way yet to turn this off.
|
||||
|
||||
minTDict = {}
|
||||
maxTDict = {}
|
||||
tDict = {}
|
||||
tdDict = {}
|
||||
windDict = {}
|
||||
gustDict = {}
|
||||
|
||||
minTRList = self.getWEInventory("MinT", timeRange)
|
||||
for tr in minTRList:
|
||||
grid = self.getGrids(MODEL, "MinT", LEVEL, tr, mode = "First")
|
||||
minTDict[tr] = grid
|
||||
|
||||
maxTRList = self.getWEInventory("MaxT", timeRange)
|
||||
for tr in maxTRList:
|
||||
grid = self.getGrids(MODEL, "MaxT", LEVEL, tr, mode = "First")
|
||||
maxTDict[tr] = grid
|
||||
|
||||
TTRList = self.getWEInventory("T", timeRange)
|
||||
for tr in TTRList:
|
||||
grid = self.getGrids(MODEL, "T", LEVEL, tr, mode = "First")
|
||||
tDict[tr] = grid
|
||||
|
||||
TdTRList = self.getWEInventory("Td", timeRange)
|
||||
for tr in TdTRList:
|
||||
grid = self.getGrids(MODEL, "Td", LEVEL, tr, mode = "First")
|
||||
tdDict[tr] = grid
|
||||
|
||||
WindTRList = self.getWEInventory("Wind", timeRange)
|
||||
for tr in WindTRList:
|
||||
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
|
||||
windDict[tr] = grid
|
||||
|
||||
GustTRList = self.getWEInventory("WindGust", timeRange)
|
||||
for tr in GustTRList:
|
||||
grid = self.getGrids(MODEL, "WindGust", LEVEL, tr, mode = "First")
|
||||
gustDict[tr] = grid
|
||||
|
||||
# get the all locks by other users, so we can detect they are locked
|
||||
# before attempting to modify them
|
||||
minTLocks = self.getLocksByOthers("MinT")
|
||||
maxTLocks = self.getLocksByOthers("MaxT")
|
||||
tLocks = self.getLocksByOthers("T")
|
||||
tdLocks = self.getLocksByOthers("Td")
|
||||
windLocks = self.getLocksByOthers("Wind")
|
||||
gustLocks = self.getLocksByOthers("WindGust")
|
||||
|
||||
# get the list of edit areas
|
||||
eaList = self.editAreaList()
|
||||
|
||||
# get the local WFO domain and make a mask with it
|
||||
# local sites may wish to use a different maks so that a larger area
|
||||
# is operated on by the tool - for example marine sites may wish to
|
||||
# expand it to marine zones as well as land.
|
||||
# To change the area, simply use a locally-defined edit area instead
|
||||
# of self.getSiteID(). Example: siteID = "CWAPlusMarineZones"
|
||||
siteID = "ISC_Send_Area"
|
||||
if siteID in eaList: # make sure the edit area is there
|
||||
siteEA = self.getEditArea(siteID) # get the edit area
|
||||
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
|
||||
siteMask = siteMask.astype(bool8)
|
||||
else:
|
||||
topo = self.getGridShape() # get the topo grid just for its shape
|
||||
siteMask = ones(topo, bool8)
|
||||
print siteID, "edit area not found. Using entire GFE domain."
|
||||
|
||||
# Ensure that MinT <= MaxT first
|
||||
minMaxList = self.combineInventoryLists(minTRList, maxTRList)
|
||||
foundProblem = False
|
||||
for i in xrange(len(minMaxList) - 1):
|
||||
if minMaxList[i+1] in minTRList: # previous max modifies min
|
||||
maxTR = minMaxList[i]
|
||||
minTR = minMaxList[i+1]
|
||||
# Make sure these TRs really exist in the inventory
|
||||
if maxTR not in maxTRList:
|
||||
continue
|
||||
if minTR not in minTRList:
|
||||
continue
|
||||
|
||||
minGrid = minTDict[minTR]
|
||||
maxGrid = maxTDict[maxTR]
|
||||
|
||||
mask = (minGrid > maxGrid)
|
||||
mask &= siteMask
|
||||
if not sometrue(mask): # make sure some points are set
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly:
|
||||
self.createGrid(MODEL, "MinGreaterThanMax", "SCALAR", mask,
|
||||
minTR, minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force the change
|
||||
if minTR in minTLocks:
|
||||
msg = "Can't modify MinT grid at " + str(minTR) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
# calculate and modify the MinT grid
|
||||
minGrid[mask] = maxGrid[mask]
|
||||
self.createGrid(MODEL, "MinT", "SCALAR", minGrid, minTR)
|
||||
minTDict[minTR] = minGrid # update the minT dictionary
|
||||
|
||||
elif minMaxList[i+1] in maxTRList: # previous min modifies max
|
||||
minTR = minMaxList[i]
|
||||
maxTR = minMaxList[i+1]
|
||||
# Make sure these TRs really exist in the inventory
|
||||
if maxTR not in maxTRList:
|
||||
continue
|
||||
if minTR not in minTRList:
|
||||
continue
|
||||
maxGrid = maxTDict[maxTR]
|
||||
minGrid = minTDict[minTR]
|
||||
|
||||
mask = (maxGrid < minGrid)
|
||||
mask &= siteMask
|
||||
if not sometrue(mask): # make sure some points are set
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly:
|
||||
self.createGrid(MODEL, "MaxLessThanMin", "SCALAR", mask,
|
||||
maxTR, minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force the change
|
||||
if maxTR in maxTLocks:
|
||||
msg = "Can't modify MaxT grid at " + str(maxTR) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
# calculate and modify the MaxT grid
|
||||
maxGrid[mask] = minGrid[mask]
|
||||
self.createGrid(MODEL, "MaxT", "SCALAR", maxGrid, maxTR)
|
||||
# update the minT dictionary with the modified minT grid
|
||||
maxTDict[maxTR] = maxGrid
|
||||
|
||||
|
||||
# Now check for T < MinT
|
||||
for tr in minTRList:
|
||||
minTGrid = minTDict[tr]
|
||||
|
||||
tInv = self.overlappingTRs(tr, TTRList)
|
||||
if tInv == []: # empty list, keep going
|
||||
continue
|
||||
|
||||
for tymeRng in tInv:
|
||||
# find points in the siteMask where T < MinT
|
||||
tGrid = tDict[tymeRng]
|
||||
tTooLow = (tGrid < minTGrid)
|
||||
tTooLow &= siteMask
|
||||
if not sometrue(tTooLow):
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly: # just make a grid showing the mask where T < MinT
|
||||
self.createGrid(MODEL, "TLessThanMin", "SCALAR", tTooLow, tymeRng,
|
||||
minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force T to the MinT value
|
||||
if tymeRng in tLocks:
|
||||
msg = "Can't modify T grid at " + str(tymeRng) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
tGrid[tTooLow] = minTGrid[tTooLow]
|
||||
self.createGrid(MODEL, "T", "SCALAR", tGrid, tymeRng)
|
||||
tDict[tymeRng] = tGrid # update the tDict
|
||||
|
||||
|
||||
# check for T > MaxT
|
||||
for tr in maxTRList:
|
||||
# get the grid first
|
||||
maxTGrid = maxTDict[tr]
|
||||
|
||||
# then warp the end time so we include T grids ending at 01z
|
||||
startTime = tr.startTime()
|
||||
endTime = tr.endTime().unixTime()
|
||||
roundedTime = int((endTime + 43200) / 86400) * 86400 + 3600
|
||||
endTime = max(endTime, roundedTime)
|
||||
endTime = AbsTime.AbsTime(endTime)
|
||||
timeRange = TimeRange.TimeRange(startTime, endTime)
|
||||
|
||||
# use the warpedTR to fetch the T inventory
|
||||
tInv = self.overlappingTRs(timeRange, TTRList)
|
||||
if tInv == []: # empty list, keep going
|
||||
continue
|
||||
|
||||
for tymeRng in tInv:
|
||||
# find points in the siteMask where T > MaxT
|
||||
tGrid = tDict[tymeRng]
|
||||
tTooHigh = (tGrid > maxTGrid)
|
||||
tTooHigh &= siteMask
|
||||
if not sometrue(tTooHigh): # make sure some points are set
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly: # just make a grid
|
||||
self.createGrid(MODEL, "TGreaterThanMax", "SCALAR", tTooHigh, tymeRng,
|
||||
minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force T to the MaxT value
|
||||
if tymeRng in tLocks:
|
||||
msg = "Can't modify T grid at " + str(tymeRng) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
tGrid[tTooHigh] = maxTGrid[tTooHigh]
|
||||
self.createGrid(MODEL, "T", "SCALAR", tGrid, tymeRng)
|
||||
tDict[tymeRng] = tGrid # update the tDict
|
||||
|
||||
# Now check T < Td
|
||||
for tr in TTRList:
|
||||
|
||||
# make sure there's a matching Td grid
|
||||
if not tr in TdTRList:
|
||||
continue
|
||||
|
||||
tGrid = tDict[tr]
|
||||
tdGrid = tdDict[tr]
|
||||
|
||||
# find points in the siteMask where Td > T
|
||||
TdTooHigh = (tdGrid > tGrid)
|
||||
TdTooHigh &= siteMask
|
||||
if not sometrue(TdTooHigh): # make sure some points are set
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly: # just make a grid
|
||||
self.createGrid(MODEL, "TdGreaterThanT", "SCALAR", TdTooHigh, tr,
|
||||
minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force Td <= T
|
||||
if tr in tdLocks:
|
||||
msg = "Can't modify Td grid at " + str(tInv[i]) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
tdGrid[TdTooHigh] = tGrid[TdTooHigh]
|
||||
self.createGrid(MODEL, "Td", "SCALAR", tdGrid, tr)
|
||||
tdDict[tr] = tdGrid # update the tdDict
|
||||
|
||||
|
||||
#---------------------------------------------------------
|
||||
# Now check Wind <= WindGust
|
||||
for tr in WindTRList:
|
||||
|
||||
# make sure there's a matching Td grid
|
||||
if not tr in GustTRList:
|
||||
continue
|
||||
|
||||
windGrid = windDict[tr][0] # just need the speed component
|
||||
gustGrid = gustDict[tr]
|
||||
|
||||
# find points in the siteMask where wind > windGust
|
||||
windTooHigh = (windGrid > gustGrid)
|
||||
windTooHigh &= siteMask
|
||||
if not sometrue(windTooHigh): # make sure some points are set
|
||||
continue
|
||||
|
||||
foundProblem = True
|
||||
|
||||
if checkOnly: # just make a grid
|
||||
self.createGrid(MODEL, "WindGreaterThanGust", "SCALAR", windTooHigh, tr,
|
||||
minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force wind <= windGust
|
||||
if tr in gustLocks:
|
||||
msg = "Can't modify WindGust grid at " + str(tr) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
|
||||
gustGrid = where(windTooHigh, windGrid, gustGrid)
|
||||
self.createGrid(MODEL, "WindGust", "SCALAR", gustGrid, tr)
|
||||
gustDict[tr] = gustGrid # update the gustDict
|
||||
|
||||
|
||||
if not foundProblem:
|
||||
msg = "CheckTTdWind found no inconsistencies."
|
||||
self.statusBarMsg(msg, "R")
|
||||
|
||||
self.callProcedure("CheckTandTd", timeRange=timeRange, varDict=varDict)
|
||||
self.callProcedure("CheckWindGust", timeRange=timeRange, varDict=varDict)
|
|
@ -29,6 +29,8 @@
|
|||
# Version Date: 4 January 2006
|
||||
# Version: 6.5
|
||||
#
|
||||
# 7/27/2015 yteng Use the time range selected in the Grid Manager if any
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# The MenuItems list defines the GFE menu item(s) under which the
|
||||
|
@ -43,10 +45,12 @@ VariableList = [("Check or Force:" , "Check Only", "radio",
|
|||
import SmartScript
|
||||
import TimeRange
|
||||
import AbsTime
|
||||
from JUtil import JavaWrapperClass
|
||||
from numpy import *
|
||||
|
||||
MODEL = "Fcst"
|
||||
LEVEL = "SFC"
|
||||
DAY_IN_SECS = 24 * 3600
|
||||
|
||||
class Procedure (SmartScript.SmartScript):
|
||||
def __init__(self, dbss):
|
||||
|
@ -61,16 +65,20 @@ class Procedure (SmartScript.SmartScript):
|
|||
# @type WEName: string
|
||||
# @return: time ranges at which WEName has data.
|
||||
# @rtype: Python list of Python TimeRange objects
|
||||
def getWEInventory(self, WEName):
|
||||
yesterday = self._gmtime() - (2 * 24 * 3600) # two days ago
|
||||
later = self._gmtime() + 10 * 24 * 3600 # 10 days from now
|
||||
allTimes = TimeRange.TimeRange(yesterday, later)
|
||||
def getWEInventory(self, WEName, timeRange=None):
|
||||
if timeRange is None:
|
||||
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
later = self._gmtime() + 10 * DAY_IN_SECS # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(yesterday, later)
|
||||
if isinstance(timeRange, JavaWrapperClass):
|
||||
timeRange = timeRange.toJavaObj()
|
||||
parm = self.getParm(MODEL, WEName, LEVEL);
|
||||
inv = parm.getGridInventory(allTimes.toJavaObj())
|
||||
inv = parm.getGridInventory(timeRange)
|
||||
trList = []
|
||||
for gd in inv:
|
||||
tr = TimeRange.TimeRange(gd.getGridTime())
|
||||
trList.append(tr)
|
||||
|
||||
return trList
|
||||
|
||||
##
|
||||
|
@ -150,7 +158,7 @@ class Procedure (SmartScript.SmartScript):
|
|||
# @param varDict: Determines whether temporary grids are created or
|
||||
# temperature grids are modified.
|
||||
# @type varDict: Python dictionary of strings to strings
|
||||
def execute(self, varDict):
|
||||
def execute(self, timeRange, varDict):
|
||||
checkOnly = varDict["Check or Force:"] == "Check Only"
|
||||
|
||||
# remove any temporary WEs we created
|
||||
|
@ -163,20 +171,25 @@ class Procedure (SmartScript.SmartScript):
|
|||
|
||||
self.setToolType("numeric")
|
||||
|
||||
if timeRange is None or not timeRange.isValid():
|
||||
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(start, end)
|
||||
|
||||
# get all the grids for all elements upfront and update as we modify
|
||||
# any grids. We need to do this because the GFE caches the original
|
||||
# version of all grids and there's no way yet to turn this off.
|
||||
|
||||
minTRList = self.getWEInventory("MinT")
|
||||
minTRList = self.getWEInventory("MinT", timeRange)
|
||||
minTDict = self.getGrids(MODEL, "MinT", LEVEL, minTRList, mode = "First")
|
||||
|
||||
maxTRList = self.getWEInventory("MaxT")
|
||||
maxTRList = self.getWEInventory("MaxT", timeRange)
|
||||
maxTDict = self.getGrids(MODEL, "MaxT", LEVEL, maxTRList, mode = "First")
|
||||
|
||||
TTRList = self.getWEInventory("T")
|
||||
TTRList = self.getWEInventory("T", timeRange)
|
||||
tDict = self.getGrids(MODEL, "T", LEVEL, TTRList, mode = "First")
|
||||
|
||||
TdTRList = self.getWEInventory("Td")
|
||||
TdTRList = self.getWEInventory("Td", timeRange)
|
||||
tdDict = self.getGrids(MODEL, "Td", LEVEL, TdTRList, mode = "First")
|
||||
|
||||
# get the all locks by other users, so we can detect they are locked
|
||||
|
|
|
@ -1,222 +1,232 @@
|
|||
##
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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.
|
||||
##
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# This software is in the public domain, furnished "as is", without technical
|
||||
# support, and with no warranty, express or implied, as to its usefulness for
|
||||
# any purpose.
|
||||
#
|
||||
# CheckWindGust
|
||||
#
|
||||
# Author: Tom Mazza, based on Tom LeFebvre's CheckTandTd
|
||||
#
|
||||
# Version Date: 6 Oct 2006
|
||||
# Version: 1.0
|
||||
#
|
||||
# Modified by Tom Mazza 6 Jun 2005 to use local ISC_Send_Area
|
||||
# and to redo RH, and, if loaded in GE at the ttime, HeatIndex and WindChill,
|
||||
# on "Force: TMin<=T<=TMax\n and Td<=T" option anytime T and / or Td are
|
||||
# changed (change on Td only does not affect WindChill).
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# This software is in the public domain, furnished "as is", without technical
|
||||
# support, and with no warranty, express or implied, as to its usefulness for
|
||||
# any purpose.
|
||||
#
|
||||
# CheckWindGust
|
||||
#
|
||||
# Author: Tom Mazza, based on Tom LeFebvre's CheckTandTd
|
||||
#
|
||||
# Version Date: 6 Oct 2006
|
||||
# Version: 1.0
|
||||
#
|
||||
# Modified by Tom Mazza 6 Jun 2005 to use local ISC_Send_Area
|
||||
# and to redo RH, and, if loaded in GE at the ttime, HeatIndex and WindChill,
|
||||
# on "Force: TMin<=T<=TMax\n and Td<=T" option anytime T and / or Td are
|
||||
# changed (change on Td only does not affect WindChill).
|
||||
#
|
||||
# 7/27/2015 yteng Use the time range selected in the Grid Manager if any,
|
||||
# and retrived teh necessary grids for improved efficiency
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
# The MenuItems list defines the GFE menu item(s) under which the
|
||||
# Procedure is to appear.
|
||||
# Possible items are: Populate, Edit, Consistency, Verify
|
||||
MenuItems = ["Consistency"]
|
||||
|
||||
VariableList = [("Check or Force:" , "Check Only", "radio",
|
||||
["Check Only", "Force: WindGust>=Wind"])]
|
||||
|
||||
import SmartScript
|
||||
import time
|
||||
import TimeRange
|
||||
import AbsTime
|
||||
from numpy import *
|
||||
|
||||
MODEL = "Fcst"
|
||||
LEVEL = "SFC"
|
||||
|
||||
class Procedure (SmartScript.SmartScript):
|
||||
def __init__(self, dbss):
|
||||
SmartScript.SmartScript.__init__(self, dbss)
|
||||
|
||||
|
||||
def getWEInventory(self, WEName):
|
||||
yesterday = self._gmtime() - (2 * 24 * 3600) # two days ago
|
||||
later = self._gmtime() + 10 * 24 * 3600 # 10 days from now
|
||||
allTimes = TimeRange.TimeRange(yesterday, later)
|
||||
parm = self.getParm(MODEL, WEName, LEVEL);
|
||||
inv = parm.getGridInventory(allTimes.toJavaObj())
|
||||
|
||||
trList = []
|
||||
for gd in inv:
|
||||
tr = TimeRange.TimeRange(gd.getGridTime())
|
||||
trList.append(tr)
|
||||
|
||||
return trList
|
||||
|
||||
def getLocksByOthers(self, weName):
|
||||
# returns list of time ranges locked by others for this weather element
|
||||
parm = self.getParm(self.mutableID(), weName, LEVEL)
|
||||
if parm is None:
|
||||
return []
|
||||
lt = parm.getLockTable()
|
||||
jlok = lt.lockedByOther()
|
||||
lbo = []
|
||||
for i in xrange(jlok.size()):
|
||||
tr = jlok.get(i)
|
||||
tr = TimeRange.TimeRange(tr)
|
||||
lbo.append( tr )
|
||||
return lbo
|
||||
|
||||
def overlappingTRs(self, timeRange, trList):
|
||||
newTRList = []
|
||||
for tr in trList:
|
||||
if timeRange.overlaps(tr):
|
||||
newTRList.append(tr)
|
||||
|
||||
return newTRList
|
||||
|
||||
# method so that timeRanges will be sorted earliest to latest
|
||||
def trSortMethod(self, first, last):
|
||||
if first.startTime() < last.startTime():
|
||||
return -1
|
||||
elif first.startTime() == last.startTime():
|
||||
return 0
|
||||
else:
|
||||
return 1
|
||||
|
||||
def combineInventoryLists(self, minTRList, maxTRList):
|
||||
bigList = minTRList + maxTRList
|
||||
bigList.sort(self.trSortMethod)
|
||||
return bigList
|
||||
|
||||
def execute(self, varDict):
|
||||
checkOnly = varDict["Check or Force:"] == "Check Only"
|
||||
startWindChill = 10 ## First month to report wind chill
|
||||
endWindChill = 4 ## Last month to report wind chill
|
||||
|
||||
# Get local edit area simply by using the baseline edit area
|
||||
eaList = self.editAreaList()
|
||||
siteID = self.getSiteID()
|
||||
|
||||
if siteID in eaList: # make sure the edit area is there
|
||||
siteEA = self.getEditArea(siteID) # get the edit area
|
||||
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
|
||||
siteMask = siteMask.astype(bool8)
|
||||
else:
|
||||
topo = self.getGridShape()
|
||||
siteMask = ones(topo, bool8)
|
||||
print siteID, "edit area not found. Using entire GFE domain."
|
||||
|
||||
errorsFound = "no" # To keep track of any errors found for
|
||||
# status bar message at the end.
|
||||
|
||||
# remove any temporary WEs we created
|
||||
weList = ["WindGustLessThanWindSpeed"]
|
||||
for we in weList:
|
||||
parm = self.getParm(MODEL, we, LEVEL)
|
||||
if parm is not None:
|
||||
self.unloadWE(MODEL, we, LEVEL)
|
||||
|
||||
self.setToolType("numeric")
|
||||
|
||||
# get all the grids for all elements upfront and update as we modify
|
||||
# any grids. We need to do this because the GFE caches the original
|
||||
# version of all grids and there's no way yet to turn this off.
|
||||
|
||||
WindDirDict = {}
|
||||
WindSpeedDict = {}
|
||||
WindGustDict = {}
|
||||
|
||||
WindTRList = self.getWEInventory("Wind")
|
||||
for tr in WindTRList:
|
||||
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
|
||||
WindDirDict[tr] = grid[1]
|
||||
WindSpeedDict[tr] = grid[0]
|
||||
|
||||
WindGustTRList = self.getWEInventory("WindGust")
|
||||
for tr in WindGustTRList:
|
||||
grid = self.getGrids(MODEL, "WindGust", LEVEL, tr, mode = "First")
|
||||
WindGustDict[tr] = grid
|
||||
|
||||
# get the all locks by other users, so we can detect they are locked
|
||||
# before attempting to modify them
|
||||
WindLocks = self.getLocksByOthers("Wind")
|
||||
WindGustLocks = self.getLocksByOthers("WindGust")
|
||||
|
||||
nowZ = time.gmtime(time.time())
|
||||
curMon = nowZ[1]
|
||||
|
||||
WindChangeTools = []
|
||||
if curMon >= startWindChill or curMon <= endWindChill:
|
||||
WindChangeTools.append(("WindChillTool", "WindChill"))
|
||||
|
||||
WindGustOnlyChangeTools = []
|
||||
databaseID = self.findDatabase(MODEL)
|
||||
|
||||
# Now check WindGust >= WindSpeed # was T < Td
|
||||
for tr in WindTRList:
|
||||
|
||||
# make sure there's a matching WindGust grid
|
||||
if not tr in WindGustTRList:
|
||||
continue
|
||||
|
||||
WindSpeedGrid = WindSpeedDict[tr]
|
||||
WindGustGrid = WindGustDict[tr]
|
||||
|
||||
# find points in the siteMask where WindGust < Wind
|
||||
mask = (WindGustGrid < WindSpeedGrid) & siteMask
|
||||
if not sometrue(mask): # make sure some points are set
|
||||
continue
|
||||
|
||||
errorsFound = "yes"
|
||||
if checkOnly: # just make a grid
|
||||
self.createGrid(MODEL, "WindGustLessThanWindSpeed", "SCALAR", mask.astype('float32'), tr, minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force WindGust >= WindSpeed
|
||||
if tr in WindGustLocks:
|
||||
msg = "Can't modify WindGust grid at " + str(tInv[i]) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
editArea = self.decodeEditArea(mask.astype('float32'))
|
||||
WindGustGrid = where(mask, WindSpeedGrid, WindGustGrid)
|
||||
self.createGrid(MODEL, "WindGust", "SCALAR", WindGustGrid, tr)
|
||||
WindGustDict[tr] = WindGustGrid # update the tdDict
|
||||
for toolName, elementName in WindChangeTools:
|
||||
parm = (elementName, LEVEL, databaseID)
|
||||
if (toolName in WindGustOnlyChangeTools) and (parm in self.loadedParms()):
|
||||
gridInfo = self.getGridInfo(MODEL, elementName, LEVEL, tr)
|
||||
if gridInfo == []:
|
||||
self.createFromScratchCmd([elementName], tr,
|
||||
repeat=1, duration=1)
|
||||
error = self.callSmartTool(toolName, elementName,
|
||||
editArea, tr)
|
||||
if error is not None:
|
||||
break
|
||||
|
||||
|
||||
# Send a message to the status bar
|
||||
if errorsFound == "yes":
|
||||
self.statusBarMsg('CheckWindGust completed - One or more Flags on the play.', 'R')
|
||||
else:
|
||||
self.statusBarMsg('CheckWindGust completed - No Flags!', 'R')
|
||||
|
||||
MenuItems = ["Consistency"]
|
||||
|
||||
VariableList = [("Check or Force:" , "Check Only", "radio",
|
||||
["Check Only", "Force: WindGust>=Wind"])]
|
||||
|
||||
import SmartScript
|
||||
import time
|
||||
import TimeRange
|
||||
import AbsTime
|
||||
from JUtil import JavaWrapperClass
|
||||
from numpy import *
|
||||
|
||||
MODEL = "Fcst"
|
||||
LEVEL = "SFC"
|
||||
DAY_IN_SECS = 24 * 3600
|
||||
|
||||
class Procedure (SmartScript.SmartScript):
|
||||
def __init__(self, dbss):
|
||||
SmartScript.SmartScript.__init__(self, dbss)
|
||||
|
||||
|
||||
def getWEInventory(self, WEName, timeRange=None):
|
||||
if timeRange is None:
|
||||
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
later = self._gmtime() + 10 * DAY_IN_SECS # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(yesterday, later)
|
||||
if isinstance(timeRange, JavaWrapperClass):
|
||||
timeRange = timeRange.toJavaObj()
|
||||
parm = self.getParm(MODEL, WEName, LEVEL);
|
||||
inv = parm.getGridInventory(timeRange)
|
||||
trList = []
|
||||
for gd in inv:
|
||||
tr = TimeRange.TimeRange(gd.getGridTime())
|
||||
trList.append(tr)
|
||||
|
||||
return trList
|
||||
|
||||
|
||||
def getLocksByOthers(self, weName):
|
||||
# returns list of time ranges locked by others for this weather element
|
||||
parm = self.getParm(self.mutableID(), weName, LEVEL)
|
||||
if parm is None:
|
||||
return []
|
||||
lt = parm.getLockTable()
|
||||
jlok = lt.lockedByOther()
|
||||
lbo = []
|
||||
for i in xrange(jlok.size()):
|
||||
tr = jlok.get(i)
|
||||
tr = TimeRange.TimeRange(tr)
|
||||
lbo.append( tr )
|
||||
return lbo
|
||||
|
||||
def overlappingTRs(self, timeRange, trList):
|
||||
newTRList = []
|
||||
for tr in trList:
|
||||
if timeRange.overlaps(tr):
|
||||
newTRList.append(tr)
|
||||
|
||||
return newTRList
|
||||
|
||||
# method so that timeRanges will be sorted earliest to latest
|
||||
def trSortMethod(self, first, last):
|
||||
if first.startTime() < last.startTime():
|
||||
return -1
|
||||
elif first.startTime() == last.startTime():
|
||||
return 0
|
||||
else:
|
||||
return 1
|
||||
|
||||
def combineInventoryLists(self, minTRList, maxTRList):
|
||||
bigList = minTRList + maxTRList
|
||||
bigList.sort(self.trSortMethod)
|
||||
return bigList
|
||||
|
||||
def execute(self, timeRange, varDict):
|
||||
checkOnly = varDict["Check or Force:"] == "Check Only"
|
||||
startWindChill = 10 ## First month to report wind chill
|
||||
endWindChill = 4 ## Last month to report wind chill
|
||||
|
||||
# Get local edit area simply by using the baseline edit area
|
||||
eaList = self.editAreaList()
|
||||
siteID = self.getSiteID()
|
||||
|
||||
if siteID in eaList: # make sure the edit area is there
|
||||
siteEA = self.getEditArea(siteID) # get the edit area
|
||||
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
|
||||
siteMask = siteMask.astype(bool8)
|
||||
else:
|
||||
topo = self.getGridShape()
|
||||
siteMask = ones(topo, bool8)
|
||||
print siteID, "edit area not found. Using entire GFE domain."
|
||||
|
||||
errorsFound = "no" # To keep track of any errors found for
|
||||
# status bar message at the end.
|
||||
|
||||
# remove any temporary WEs we created
|
||||
weList = ["WindGustLessThanWindSpeed"]
|
||||
for we in weList:
|
||||
parm = self.getParm(MODEL, we, LEVEL)
|
||||
if parm is not None:
|
||||
self.unloadWE(MODEL, we, LEVEL)
|
||||
|
||||
self.setToolType("numeric")
|
||||
|
||||
# if no timeRange selected then make a big timeRange
|
||||
if timeRange is None or not timeRange.isValid():
|
||||
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
|
||||
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
|
||||
timeRange = TimeRange.TimeRange(start, end)
|
||||
|
||||
# get all the grids for all elements upfront and update as we modify
|
||||
# any grids. We need to do this because the GFE caches the original
|
||||
# version of all grids and there's no way yet to turn this off.
|
||||
|
||||
WindDirDict = {}
|
||||
WindSpeedDict = {}
|
||||
WindGustDict = {}
|
||||
|
||||
WindTRList = self.getWEInventory("Wind", timeRange)
|
||||
for tr in WindTRList:
|
||||
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
|
||||
WindDirDict[tr] = grid[1]
|
||||
WindSpeedDict[tr] = grid[0]
|
||||
|
||||
WindGustTRList = self.getWEInventory("WindGust", timeRange)
|
||||
WindGustDict = self.getGrids(MODEL, "WindGust", LEVEL, WindGustTRList, mode = "First")
|
||||
|
||||
# get the all locks by other users, so we can detect they are locked
|
||||
# before attempting to modify them
|
||||
WindLocks = self.getLocksByOthers("Wind")
|
||||
WindGustLocks = self.getLocksByOthers("WindGust")
|
||||
|
||||
nowZ = time.gmtime(time.time())
|
||||
curMon = nowZ[1]
|
||||
|
||||
WindChangeTools = []
|
||||
if curMon >= startWindChill or curMon <= endWindChill:
|
||||
WindChangeTools.append(("WindChillTool", "WindChill"))
|
||||
|
||||
WindGustOnlyChangeTools = []
|
||||
databaseID = self.findDatabase(MODEL)
|
||||
|
||||
# Now check WindGust >= WindSpeed # was T < Td
|
||||
for tr in WindTRList:
|
||||
|
||||
# make sure there's a matching WindGust grid
|
||||
if not tr in WindGustTRList:
|
||||
continue
|
||||
|
||||
WindSpeedGrid = WindSpeedDict[tr]
|
||||
WindGustGrid = WindGustDict[tr]
|
||||
|
||||
# find points in the siteMask where WindGust < Wind
|
||||
mask = (WindGustGrid < WindSpeedGrid) & siteMask
|
||||
if not sometrue(mask): # make sure some points are set
|
||||
continue
|
||||
|
||||
errorsFound = "yes"
|
||||
if checkOnly: # just make a grid
|
||||
self.createGrid(MODEL, "WindGustLessThanWindSpeed", "SCALAR", mask.astype('float32'), tr, minAllowedValue=0.0, maxAllowedValue= 1.0)
|
||||
else: # force WindGust >= WindSpeed
|
||||
if tr in WindGustLocks:
|
||||
msg = "Can't modify WindGust grid at " + str(tInv[i]) + \
|
||||
" locked by another user."
|
||||
self.statusBarMsg(msg, "S")
|
||||
continue
|
||||
editArea = self.decodeEditArea(mask.astype('float32'))
|
||||
WindGustGrid = where(mask, WindSpeedGrid, WindGustGrid)
|
||||
self.createGrid(MODEL, "WindGust", "SCALAR", WindGustGrid, tr)
|
||||
WindGustDict[tr] = WindGustGrid # update the tdDict
|
||||
for toolName, elementName in WindChangeTools:
|
||||
parm = (elementName, LEVEL, databaseID)
|
||||
if (toolName in WindGustOnlyChangeTools) and (parm in self.loadedParms()):
|
||||
gridInfo = self.getGridInfo(MODEL, elementName, LEVEL, tr)
|
||||
if gridInfo == []:
|
||||
self.createFromScratchCmd([elementName], tr,
|
||||
repeat=1, duration=1)
|
||||
error = self.callSmartTool(toolName, elementName,
|
||||
editArea, tr)
|
||||
if error is not None:
|
||||
break
|
||||
|
||||
|
||||
# Send a message to the status bar
|
||||
if errorsFound == "yes":
|
||||
self.statusBarMsg('CheckWindGust completed - One or more Flags on the play.', 'R')
|
||||
else:
|
||||
self.statusBarMsg('CheckWindGust completed - No Flags!', 'R')
|
||||
|
|
|
@ -2787,7 +2787,7 @@ class SampleAnalysis(CommonUtils.CommonUtils):
|
|||
if self.temporalCoverage_flag(
|
||||
parmHisto, timeRange, componentName, histSample) == 0:
|
||||
continue
|
||||
mode = histSample.mostCommonValueBinned(binRes).scalar()
|
||||
mode = histSample.mostCommonValueBinned(float(binRes)).scalar()
|
||||
if mode > maxMode:
|
||||
maxMode = mode
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ import com.vividsolutions.jts.geom.MultiPolygon;
|
|||
* Changes for non-blocking DiscreteDialog.
|
||||
* Feb 14, 2013 mnash Move QueryScript to use new Python concurrency implementation
|
||||
* Jan 13, 2015 3955 randerso Improve handling of Topo parm for Standard Terrain editing
|
||||
* Jun 24, 2015 14401 yteng Check whether activeDisplay is disposed before update
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -874,11 +875,15 @@ public class DefineRefSetDialog extends CaveJFACEDialog implements
|
|||
@Override
|
||||
public void run() {
|
||||
if (result != null) {
|
||||
activeDisplay.setText(s);
|
||||
refSetMgr.incomingRefSet(result,
|
||||
RefSetMode.USE_CURRENT);
|
||||
addToHistory(s);
|
||||
queryField.setText("");
|
||||
|
||||
if (activeDisplay != null || !activeDisplay.isDisposed())
|
||||
activeDisplay.setText(s);
|
||||
|
||||
if (queryField != null && !queryField.isDisposed())
|
||||
queryField.setText("");
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -167,6 +167,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* 02/04/2014 17039 ryu Removed menu item related to the HighlighFramingCodes feature.
|
||||
* 04/20/2015 4027 randerso Renamed ProductStateEnum with an initial capital
|
||||
* Expunged Calendar from ActiveTableRecord
|
||||
* 07/02/2015 13753 lshi Update times for products in Product Editor
|
||||
* 07/22/2015 13753 lshi Keeps issue time unchanged
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -373,6 +375,7 @@ public class ProductEditorComp extends Composite implements
|
|||
private ChangeTimesJob timeUpdater;
|
||||
|
||||
private Listener visibilityListener;
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration of product types.
|
||||
|
@ -420,6 +423,8 @@ public class ProductEditorComp extends Composite implements
|
|||
private String prodEditorDirectory = null;
|
||||
|
||||
private final DataManager dm;
|
||||
|
||||
private boolean updateTime = false;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -1186,16 +1191,16 @@ public class ProductEditorComp extends Composite implements
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean changeTimes() {
|
||||
private synchronized boolean changeTimes() {
|
||||
Calendar GMT = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
GMT.setTime(SimulatedTime.getSystemTime().getTime());
|
||||
GMT.set(Calendar.SECOND, 0);
|
||||
Date tt = GMT.getTime();
|
||||
|
||||
updateTime = true;
|
||||
tweakVTEC(tt);
|
||||
|
||||
updateIssueExpireTimes(tt);
|
||||
|
||||
updateTime = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1943,7 +1948,7 @@ public class ProductEditorComp extends Composite implements
|
|||
this.expireDate = cal.getTime();
|
||||
dateTimeLbl.setText(expireLabelFmt.format(expireDate));
|
||||
|
||||
if (!dead && !editorCorrectionMode) { // && !spellDialog) {
|
||||
if (!dead) { //&& !editorCorrectionMode) { // && !spellDialog) {
|
||||
changeTimes();
|
||||
}
|
||||
}
|
||||
|
@ -1960,18 +1965,17 @@ public class ProductEditorComp extends Composite implements
|
|||
// I know this time string has been replaced. If the lengths of the
|
||||
// before and after strings are different, a reParse() will be made,
|
||||
// else it will continue on.
|
||||
|
||||
|
||||
if (textComp != null) {
|
||||
// Update Issue time -- removed
|
||||
|
||||
// Update MND time
|
||||
try {
|
||||
textComp.startUpdate();
|
||||
ProductDataStruct pds = textComp.getProductDataStruct();
|
||||
|
||||
if (pds != null) {
|
||||
TextIndexPoints pit = pds.getPIT();
|
||||
if (pit != null) {
|
||||
String time = purgeTimeFmt.format(now);
|
||||
textComp.replaceText(pit, time);
|
||||
}
|
||||
|
||||
TextIndexPoints tip = pds.getMndMap().get("nwstime");
|
||||
if (tip != null) {
|
||||
SimpleDateFormat fmt = new SimpleDateFormat(
|
||||
|
@ -1980,7 +1984,7 @@ public class ProductEditorComp extends Composite implements
|
|||
String issueTime = fmt.format(now).toUpperCase();
|
||||
|
||||
if (tip != null) {
|
||||
textComp.replaceText(tip, issueTime);
|
||||
textComp.replaceText(tip, issueTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1994,6 +1998,8 @@ public class ProductEditorComp extends Composite implements
|
|||
// StyledTextComp to re-evaluate whether a reParse() is needed and
|
||||
// ask it for the segment information each time through the loop (in
|
||||
// case we're at one of the 4 transition points).
|
||||
|
||||
// Update segments' time
|
||||
try {
|
||||
ProductDataStruct pds = textComp.getProductDataStruct();
|
||||
|
||||
|
@ -2005,6 +2011,7 @@ public class ProductEditorComp extends Composite implements
|
|||
fmt.setTimeZone(localTimeZone);
|
||||
String officeIssueTime = fmt.format(now).toUpperCase();
|
||||
|
||||
|
||||
for (int i = 0; i < numSegments; i++) {
|
||||
textComp.startUpdate();
|
||||
HashMap<String, TextIndexPoints> segMap = pds
|
||||
|
@ -3055,4 +3062,9 @@ public class ProductEditorComp extends Composite implements
|
|||
callToActionsMI.setMenu(callToActionsSubMenu);
|
||||
createCallToActionsMenu(callToActionsSubMenu);
|
||||
}
|
||||
|
||||
protected boolean isUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -89,6 +89,7 @@ import com.raytheon.viz.gfe.textformatter.TextFmtParserUtil;
|
|||
* Added logging of text changes to help diagnose future issues.
|
||||
* 04 FEB 2015 17039 ryu Removed HighlightFramingCodes feature which prevented
|
||||
* editing of framing codes.
|
||||
* 07/02/2015 13753 lshi Update times for products in Product Editor
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -625,7 +626,11 @@ public class StyledTextComp extends Composite {
|
|||
}
|
||||
|
||||
private void makeCorrections() {
|
||||
parent.setPTypeCategory(PTypeCategory.COR);
|
||||
if (!parent.isUpdateTime()) {
|
||||
parent.setPTypeCategory(PTypeCategory.COR);
|
||||
}
|
||||
if (prodDataStruct == null)
|
||||
return;
|
||||
List<SegmentData> segs = prodDataStruct.getSegmentsArray();
|
||||
for (SegmentData seg : segs) {
|
||||
if (seg.getSementMap().keySet().contains("vtec")) {
|
||||
|
|
|
@ -64,6 +64,7 @@ import com.raytheon.viz.gfe.types.MutableInteger;
|
|||
* May 24, 2012 673 randerso Added defaulted method calls
|
||||
* Jun 17, 2013 15951 ryu Fix index to wx/discrete key array
|
||||
* Oct 31, 2013 2508 randerso Change to use DiscreteGridSlice.getKeys()
|
||||
* Jun 30, 2015 14552 yteng Fix binnedHistogram method for SCALAR data
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -199,6 +200,7 @@ public class HistSample {
|
|||
_stdDevMaxD = 0.0f;
|
||||
_stdDevMinD = 0.0f;
|
||||
_binnedMostCommonValue = new HistValue(0.0f);
|
||||
_binnedHistPairs = new ArrayList<HistPair>();
|
||||
_binnedHistPairsValue = 0.0f;
|
||||
|
||||
// count up the number of sample points
|
||||
|
@ -509,7 +511,7 @@ public class HistSample {
|
|||
* @param resolution
|
||||
* @return
|
||||
*/
|
||||
public final HistValue mostCommonValue(float resolution) {
|
||||
public final HistValue mostCommonValueBinned(float resolution) {
|
||||
if (_histPairs.size() == 0) {
|
||||
return _mostCommonValue; // default HistValue()
|
||||
}
|
||||
|
@ -1190,19 +1192,17 @@ public class HistSample {
|
|||
if (_histPairs.get(0).value().dataType().equals(GridType.SCALAR)) {
|
||||
Map<Float, Integer> hp = new HashMap<Float, Integer>();
|
||||
for (int i = 0; i < _histPairs.size(); i++) {
|
||||
hp.put(binit(_histPairs.get(i).value().scalar(), resolution),
|
||||
hp.get(binit(_histPairs.get(i).value().scalar(),
|
||||
resolution)) + _histPairs.get(i).count());
|
||||
float value = binit(_histPairs.get(i).value().scalar(), resolution);
|
||||
hp.put(value, (hp.get(value)==null?0:(int)hp.get(value))
|
||||
+ _histPairs.get(i).count());
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
Iterator<?> pos = hp.entrySet().iterator();
|
||||
Iterator<?> pos1 = hp.entrySet().iterator();
|
||||
hs._binnedHistPairs = new ArrayList<HistPair>();
|
||||
Iterator<Map.Entry<Float, Integer>> pos = hp.entrySet().iterator();
|
||||
while (pos.hasNext()) {
|
||||
pos1.next();
|
||||
hs._binnedHistPairs.set(i++,
|
||||
_histPairs.get(pos.next().hashCode()));
|
||||
pos.next();
|
||||
Entry<Float, Integer> p = pos.next();
|
||||
hs._binnedHistPairs.add(
|
||||
new HistPair(p.getValue(), new HistValue(p.getKey())));
|
||||
}
|
||||
}
|
||||
// calculate the binned histogram for VECTOR
|
||||
|
|
|
@ -73,6 +73,7 @@ import com.raytheon.viz.hydro.pointdatacontrol.db.PDCDataManager;
|
|||
import com.raytheon.viz.hydro.pointdatacontrol.util.PDCUtils;
|
||||
import com.raytheon.viz.hydro.resource.MultiPointResource;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants.TimeStepDataElementType;
|
||||
import com.raytheon.viz.hydrocommon.HydroDisplayManager;
|
||||
import com.raytheon.viz.hydrocommon.colorscalemgr.HydroColorManager;
|
||||
import com.raytheon.viz.hydrocommon.colorscalemgr.NamedColorSetGroup;
|
||||
|
@ -104,19 +105,23 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* 09 OCT 2012 #15396 Fixed Instantaneous precip index so legend and map display
|
||||
* will change each time duration is incremented or decremented
|
||||
* for the "30 minutes Instantaneous" rainfall map .
|
||||
* 04 Dec 2012 15602 wkwock Fix Hrs hour capped at 100.
|
||||
* 04 Dec 2012 15602 wkwock Fix Hrs hour capped at 100.
|
||||
* 07 Feb 2013 1578 rferrel Changes for non-blocking FilteringDlg.
|
||||
* Changes for non-blocking PDC_SaveDlg.
|
||||
* 13 Mar 2013 1790 rferrel Changes for non-blocking dialog.
|
||||
* Changes for non-blocking TabularDisplayDlg.
|
||||
* Bug fix for non-blocking dialogs.
|
||||
* 09 Mar 2015 13998 lbousaidi Changes to fix the precipitation data display.
|
||||
* 09 Mar 2015 13998 lbousaidi Changes to fix the precipitation data display.
|
||||
* 22 Jun 2015 13892 lbousaidi Fixed the saved the preset String selection.
|
||||
* 01 July 2015 17002 xwei Added drop down button for PC and PP
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
* @version 1.0
|
||||
*
|
||||
*/
|
||||
|
||||
public class PointDataControlDlg extends CaveSWTDialog {
|
||||
/** Singleton instance. */
|
||||
private static PointDataControlDlg instance = null;
|
||||
|
@ -363,12 +368,12 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
/**
|
||||
* Stations label.
|
||||
*/
|
||||
private Label stationsLbl;
|
||||
private Label stationsOrPELbl;
|
||||
|
||||
/**
|
||||
* Stations label.
|
||||
*/
|
||||
private Combo stationsCbo;
|
||||
private Combo stationsOrPECbo;
|
||||
|
||||
/**
|
||||
* Service area check box.
|
||||
|
@ -546,6 +551,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
|
||||
/** The tabular display dialog. */
|
||||
TabularDisplayDlg tabDisplay;
|
||||
|
||||
/** Flag indicating to save PE Elements */
|
||||
private boolean loadSaved = true;
|
||||
|
||||
/**
|
||||
* Obtain the singleton instance.
|
||||
|
@ -658,6 +666,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
* Initialize the dialog components.
|
||||
*/
|
||||
private void initializeComponents() {
|
||||
|
||||
loadSaved = true;
|
||||
createPresetsQueryModeGroup();
|
||||
createElementsGroup();
|
||||
createValueTimeGroup();
|
||||
|
@ -691,7 +701,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
shell.setCursor(null);
|
||||
|
||||
}
|
||||
|
||||
|
||||
loadSaved = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -725,11 +736,14 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
selPresetCbo.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
|
||||
loadSaved = true;
|
||||
handlePresetSelection();
|
||||
shell.setCursor(waitCursor);
|
||||
updateData = true;
|
||||
drawMap();
|
||||
shell.setCursor(null);
|
||||
loadSaved = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -835,6 +849,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
handleTimeStepElementComboSelection();
|
||||
handleTsPhysicalElementSelection(physicalElementCbo
|
||||
.getItem(physicalElementCbo.getSelectionIndex()));
|
||||
|
||||
handleStationsOrPE();
|
||||
|
||||
if ((physicalElementCbo.getSelectionIndex() == 0)
|
||||
&& (elementTypeCbo.getSelectionIndex() == 1)) {
|
||||
stackLayout.topControl = precipGroup;
|
||||
|
@ -874,6 +891,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
}
|
||||
handleTsPhysicalElementSelection(physicalElementCbo
|
||||
.getItem(physicalElementCbo.getSelectionIndex()));
|
||||
|
||||
handleStationsOrPE();
|
||||
|
||||
loadTimeInfo();
|
||||
}
|
||||
HydroDisplayManager.getInstance().setDataChanged(true);
|
||||
|
@ -1204,23 +1224,28 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
stationsComp.setLayoutData(gd);
|
||||
|
||||
gd = new GridData(70, SWT.DEFAULT);
|
||||
stationsLbl = new Label(stationsComp, SWT.NONE | SWT.RIGHT);
|
||||
stationsLbl.setText("Stations: ");
|
||||
stationsLbl.setLayoutData(gd);
|
||||
stationsOrPELbl = new Label(stationsComp, SWT.NONE | SWT.RIGHT);
|
||||
stationsOrPELbl.setText("Stations: ");
|
||||
stationsOrPELbl.setLayoutData(gd);
|
||||
|
||||
gd = new GridData(110, SWT.DEFAULT);
|
||||
stationsCbo = new Combo(stationsComp, SWT.DROP_DOWN | SWT.READ_ONLY);
|
||||
stationsCbo.add("All");
|
||||
stationsCbo.add("Stream");
|
||||
stationsCbo.add("Reservoir");
|
||||
stationsCbo.select(0);
|
||||
stationsCbo.setLayoutData(gd);
|
||||
stationsCbo.addSelectionListener(new SelectionAdapter() {
|
||||
stationsOrPECbo = new Combo(stationsComp, SWT.DROP_DOWN | SWT.READ_ONLY);
|
||||
stationsOrPECbo.add("All");
|
||||
stationsOrPECbo.add("Stream");
|
||||
stationsOrPECbo.add("Reservoir");
|
||||
stationsOrPECbo.select(0);
|
||||
stationsOrPECbo.setLayoutData(gd);
|
||||
stationsOrPECbo.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
PDCOptionData pcOptions = PDCOptionData.getInstance();
|
||||
pcOptions.setRiverStationFilter(stationsCbo.getSelectionIndex());
|
||||
|
||||
setStationsOrPE( pcOptions );
|
||||
|
||||
shell.setCursor(waitCursor);
|
||||
|
||||
updateData = true;
|
||||
|
||||
drawMap();
|
||||
shell.setCursor(null);
|
||||
}
|
||||
|
@ -1800,6 +1825,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
* The preset id
|
||||
*/
|
||||
protected void populatePresetData(String id) {
|
||||
|
||||
loadSaved = true;
|
||||
selPresetCbo.removeAll();
|
||||
|
||||
try {
|
||||
|
@ -1826,6 +1853,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
loadSaved = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1909,7 +1938,79 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
// physicalElementCbo.select(pcOptions.getPeSelection());
|
||||
physicalElementCbo.select(0);
|
||||
}
|
||||
|
||||
|
||||
private void handleStationsOrPE() {
|
||||
|
||||
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
|
||||
|
||||
stationsOrPELbl.setVisible(true);
|
||||
stationsOrPECbo.setVisible(true);
|
||||
|
||||
stationsOrPELbl.setText("Stations: ");
|
||||
|
||||
stationsOrPECbo.removeAll();
|
||||
stationsOrPECbo.add("All");
|
||||
stationsOrPECbo.add("Stream");
|
||||
stationsOrPECbo.add("Reservoir");
|
||||
stationsOrPECbo.select(0);
|
||||
|
||||
}else{
|
||||
|
||||
if ( physicalElementCbo.getSelectionIndex() == 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
|
||||
|
||||
stationsOrPELbl.setVisible(false);
|
||||
stationsOrPECbo.setVisible(false);
|
||||
|
||||
}else{
|
||||
|
||||
stationsOrPELbl.setVisible(true);
|
||||
stationsOrPECbo.setVisible(true);
|
||||
|
||||
stationsOrPELbl.setText("Use PE: ");
|
||||
|
||||
stationsOrPECbo.removeAll();
|
||||
stationsOrPECbo.add("PC and PP");
|
||||
stationsOrPECbo.add("PC Only");
|
||||
stationsOrPECbo.add("PP Only");
|
||||
stationsOrPECbo.select(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setStationsOrPE( PDCOptionData pcOptions ) {
|
||||
|
||||
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
|
||||
|
||||
pcOptions.setRiverStationFilter( stationsOrPECbo.getSelectionIndex() );
|
||||
|
||||
}else{
|
||||
|
||||
if ( physicalElementCbo.getSelectionIndex() != 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
|
||||
|
||||
pcOptions.setPrecipPeFilter( stationsOrPECbo.getSelectionIndex() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void selectStationsOrPE( PDCOptionData pcOptions ) {
|
||||
|
||||
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
|
||||
|
||||
stationsOrPECbo.select(pcOptions.getRiverStationFilter());
|
||||
|
||||
}else{
|
||||
|
||||
if ( physicalElementCbo.getSelectionIndex() != 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
|
||||
|
||||
stationsOrPECbo.select(pcOptions.getPrecipPeFilter());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform updates for currently selected element type.
|
||||
*/
|
||||
|
@ -1928,7 +2029,12 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
physicalElementCbo.add(elementStr);
|
||||
}
|
||||
|
||||
physicalElementCbo.select(0);
|
||||
if ( loadSaved == true ) {
|
||||
physicalElementCbo.select( pcOptions.getPeSelection() );
|
||||
}else{
|
||||
physicalElementCbo.select(0);
|
||||
}
|
||||
|
||||
handlePeSelection();
|
||||
}
|
||||
|
||||
|
@ -1979,8 +2085,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private void showAdHocControls(boolean flag) {
|
||||
// Time Step control
|
||||
stationsLbl.setVisible(!flag);
|
||||
stationsCbo.setVisible(!flag);
|
||||
stationsOrPELbl.setVisible(!flag);
|
||||
stationsOrPECbo.setVisible(!flag);
|
||||
|
||||
// Ad Hoc control
|
||||
dataSourceChk.setVisible(flag);
|
||||
|
@ -2286,6 +2392,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
handleTimeStepElementComboSelection();
|
||||
handleTsPhysicalElementSelection(physicalElementCbo
|
||||
.getItem(physicalElementCbo.getSelectionIndex()));
|
||||
|
||||
handleStationsOrPE();
|
||||
|
||||
if ((physicalElementCbo.getSelectionIndex() == 0)
|
||||
&& (elementTypeCbo.getSelectionIndex() == 1)) {
|
||||
stackLayout.topControl = precipGroup;
|
||||
|
@ -2876,8 +2985,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
|
|||
}
|
||||
|
||||
/* set the pc_pc_riverStationFilterOM based on river_station_filter */
|
||||
stationsCbo.select(pcOptions.getRiverStationFilter());
|
||||
|
||||
selectStationsOrPE( pcOptions );
|
||||
|
||||
/* set the pc_precipPeOM based on precip_pe_filter */
|
||||
pcOptions.getPrecipPeFilter();
|
||||
// TODO - This is invisible if not a rain PE Verify with the vpn
|
||||
|
|
|
@ -131,6 +131,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
|
|||
* Feb 02, 2015 4075 ccody Added getSelectedGage for HS issue #3961
|
||||
* Mar 09, 2015 13998 lbousaidi changed the dur display when it is null to match A1.
|
||||
* Apr 09, 2015 4215 mpduff Check strTree before removing items.
|
||||
* Jun 26, 2015 17386 xwei Fixed : HydroView crashes in when Refresh Data after loading saved display files
|
||||
* Jul 06, 2015 4215 mpduff Correct the fact that user's cannot click and view time series.
|
||||
*
|
||||
* </pre>
|
||||
|
@ -790,6 +791,9 @@ public class MultiPointResource extends
|
|||
setScaleValues(paintProps);
|
||||
IExtent extent = paintProps.getView().getExtent();
|
||||
List<GageData> data = pdcManager.getObsReportList();
|
||||
|
||||
resetDataMap();
|
||||
|
||||
if (data != null) {
|
||||
List<PointImage> images = new ArrayList<PointImage>(data.size());
|
||||
List<DrawableString> strings = new ArrayList<DrawableString>(
|
||||
|
|
|
@ -41,6 +41,7 @@ import com.raytheon.viz.hydrocommon.datamanager.HydroDataManager;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Sep 12, 2009 2772 mpduff Initial creation
|
||||
* 30 June 2015 17360 xwei Fixed : basins.dat import failed if the first line does not have Lat Lon
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -187,7 +188,7 @@ public class GeoDataManager extends HydroDataManager {
|
|||
*/
|
||||
for (int i = 0; i < data.getNumberPoints(); i++) {
|
||||
if (i > 0) {
|
||||
posWeight = Math.sqrt(Math.pow((lat[i] - lat[i - 2]), 2)
|
||||
posWeight = Math.sqrt(Math.pow((lat[i] - lat[i - 1]), 2)
|
||||
+ Math.pow((lon[i] - lon[i - 1]), 2));
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,9 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* 02 Feb 2015 13372 djingtao change the GMT time to local time for "revise" field
|
||||
* 08 April 2015 17338 djingtao "Apostrophe" entered into HB text fields are not written to IHFS database
|
||||
* remove the changes in 15695/15488, move the apostrophe fix into a more central position
|
||||
* 01 July 2015 15642 xwei Added read-only lat/lon in DMS format
|
||||
*
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -191,7 +193,17 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
|
|||
* Longitude text control.
|
||||
*/
|
||||
private Text lonTF;
|
||||
|
||||
/**
|
||||
* Latitude in DMS text control.
|
||||
*/
|
||||
private Text latDMSTF;
|
||||
|
||||
/**
|
||||
* Longitude in DMS text control.
|
||||
*/
|
||||
private Text lonDMSTF;
|
||||
|
||||
/**
|
||||
* Elevation text control.
|
||||
*/
|
||||
|
@ -695,6 +707,21 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
|
|||
lonTF = new Text(leftComp, SWT.BORDER);
|
||||
lonTF.setLayoutData(gd);
|
||||
|
||||
gd = new GridData(leftCellWidth, SWT.DEFAULT);
|
||||
Label latLonDMSLbl = new Label(leftComp, SWT.RIGHT);
|
||||
latLonDMSLbl.setText("Lat/Lon (DMS): ");
|
||||
latLonDMSLbl.setLayoutData(gd);
|
||||
|
||||
gd = new GridData(110, SWT.DEFAULT);
|
||||
latDMSTF = new Text(leftComp, SWT.BORDER);
|
||||
latDMSTF.setLayoutData(gd);
|
||||
latDMSTF.setEnabled(false);
|
||||
|
||||
gd = new GridData(110, SWT.DEFAULT);
|
||||
lonDMSTF = new Text(leftComp, SWT.BORDER);
|
||||
lonDMSTF.setLayoutData(gd);
|
||||
lonDMSTF.setEnabled(false);
|
||||
|
||||
gd = new GridData(leftCellWidth, SWT.DEFAULT);
|
||||
Label elevationLbl = new Label(leftComp, SWT.RIGHT);
|
||||
elevationLbl.setText("Elevation: ");
|
||||
|
@ -1393,6 +1420,14 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
|
|||
lonTF.setText((locData.getLongitude() != HydroConstants.MISSING_VALUE) ? String
|
||||
.valueOf(locData.getLongitude()) : "");
|
||||
|
||||
latDMSTF.setText(
|
||||
GeoUtil.getInstance().cvt_latlon_from_double( ( locData.getLatitude() != HydroConstants.MISSING_VALUE ) ? locData.getLatitude() : 0 )
|
||||
);
|
||||
|
||||
lonDMSTF.setText(
|
||||
GeoUtil.getInstance().cvt_latlon_from_double( ( locData.getLongitude() != HydroConstants.MISSING_VALUE) ? locData.getLongitude() : 0 )
|
||||
);
|
||||
|
||||
// Only display elevation if it isn't missing, i.e. null in DB
|
||||
elevationTF
|
||||
.setText((locData.getElevation() != HydroConstants.MISSING_VALUE) ? String
|
||||
|
|
|
@ -77,6 +77,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* 09 Sep 2009 2772 mpduff Implemented Dialog.
|
||||
* 16 Apr 2013 1790 rferrel Made dialog non-blocking.
|
||||
* 16 Jul 2013 2088 rferrel Changes for non-blocking TextEditorDlg.
|
||||
* 29 June 2015 14630 xwei Fixed : Not able to import basins.dat with apostrophe and incorrect data posted
|
||||
* 30 June 2015 17360 xwei Fixed : basins.dat import failed if the first line does not have Lat Lon
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -692,6 +694,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
/* Remove any excess whitespace. */
|
||||
str = str.trim();
|
||||
str = str.replaceAll("\\s{2,}", " ");
|
||||
str = str.replaceAll("'", "''");
|
||||
|
||||
String[] parts = str.split(" ");
|
||||
int numParts = parts.length;
|
||||
|
@ -701,7 +704,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
* point is found then assume this line has two lat/lon values
|
||||
* at the end.
|
||||
*/
|
||||
if (parts[numParts - 2].contains(".")
|
||||
if (numParts == 6 && parts[numParts - 2].contains(".")
|
||||
&& parts[numParts - 1].contains(".")) {
|
||||
intLat = Double.parseDouble(parts[numParts - 2]);
|
||||
intLon = Double.parseDouble(parts[numParts - 1]);
|
||||
|
@ -719,11 +722,17 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
}
|
||||
}
|
||||
|
||||
int shiftNum = 0;
|
||||
if ( numParts == 4 ){
|
||||
shiftNum = 2;
|
||||
}
|
||||
|
||||
/*
|
||||
* get the number of lat-lon pairs that follow, from the end of
|
||||
* the line
|
||||
*/
|
||||
nPts = Integer.parseInt(parts[numParts - 3]);
|
||||
nPts = Integer.parseInt(parts[numParts - 3 + shiftNum]);
|
||||
|
||||
double[] lonPoints = new double[nPts];
|
||||
double[] latPoints = new double[nPts];
|
||||
|
||||
|
@ -731,7 +740,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
* get the stream order, which is not always specified, from the
|
||||
* field preceding the num of lat-lon pairs
|
||||
*/
|
||||
int streamOrder = Integer.parseInt(parts[numParts - 4]);
|
||||
int streamOrder = Integer.parseInt(parts[numParts - 4 + shiftNum]);
|
||||
|
||||
if ((streamOrder < -1) || (streamOrder > 50)) {
|
||||
log("WARNING: Error reading stream order in line "
|
||||
|
@ -743,7 +752,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
|
||||
/* get the identifying name */
|
||||
StringBuilder name = new StringBuilder();
|
||||
for (int j = 1; j <= numParts - 5; j++) {
|
||||
for (int j = 1; j <= numParts - 5 + shiftNum; j++) {
|
||||
name.append(parts[j] + " ");
|
||||
}
|
||||
|
||||
|
@ -790,7 +799,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
|
|||
} else {
|
||||
double lat = Double.parseDouble(latlon[0]);
|
||||
double lon = Double.parseDouble(latlon[1]);
|
||||
lon *= -1;
|
||||
|
||||
/* Test the bounds of the longitude value. */
|
||||
if ((lon < -180) || (lon > 180)) {
|
||||
log("ERROR reading or invalid lon for id "
|
||||
|
|
|
@ -37,7 +37,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Sep 15, 2009 2772 mpduff Initial creation
|
||||
* Apr 16, 2013 1790 rferrel Code clean up for non-blocking dialogs.
|
||||
* Apr 16, 2013 1790 rferrel Code clean up for non-blocking dialogs.
|
||||
* June 29, 2015 14630 xwei Fixed : Not able to import basins.dat with apostrophe and incorrect data posted
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -204,8 +205,7 @@ public class LineSegmentUtil {
|
|||
* longitude box defined by the max lat/lon and the min lat/lon pairs
|
||||
* retrieved above.
|
||||
*/
|
||||
Coordinate hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x,
|
||||
maxLatLon.y));
|
||||
Coordinate hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x, maxLatLon.y));
|
||||
minRow = hrap.y;
|
||||
maxRow = hrap.y;
|
||||
minCol = hrap.x;
|
||||
|
@ -214,18 +214,15 @@ public class LineSegmentUtil {
|
|||
for (int i = LATLON_NORTHEAST_CORNER; i <= LATLON_SOUTHWEST_CORNER; i++) {
|
||||
switch (i) {
|
||||
case LATLON_NORTHEAST_CORNER:
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x,
|
||||
maxLatLon.y));
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x, maxLatLon.y));
|
||||
break;
|
||||
|
||||
case LATLON_SOUTHEAST_CORNER:
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x,
|
||||
minLatLon.y));
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x, minLatLon.y));
|
||||
break;
|
||||
|
||||
case LATLON_SOUTHWEST_CORNER:
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x,
|
||||
minLatLon.y));
|
||||
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x, minLatLon.y));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -295,9 +292,20 @@ public class LineSegmentUtil {
|
|||
binList.setArea(binList.getArea() + singleBinArea);
|
||||
} else {
|
||||
/* previous bin was outside */
|
||||
binList.getRows().add((long) r);
|
||||
binList.getBeginCols().add((long) c);
|
||||
binList.getEndCols().add((long) c);
|
||||
if ( index >= binList.getRows().size() ){
|
||||
|
||||
binList.getRows().add((long) r);
|
||||
binList.getBeginCols().add((long) c);
|
||||
binList.getEndCols().add((long) c);
|
||||
|
||||
}else{
|
||||
|
||||
binList.getRows().set( index, (long) r );
|
||||
binList.getBeginCols().set( index, (long) c );
|
||||
binList.getEndCols().set( index, (long) c );
|
||||
|
||||
}
|
||||
|
||||
|
||||
binList.setNumBins(binList.getNumBins() + 1);
|
||||
singleBinArea = HrapUtil.getHrapBinArea(new Coordinate(
|
||||
|
|
|
@ -80,6 +80,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* Changes for non-blocking FcstPointGroupDlg.
|
||||
* Feb.02, 2015 #13372 djingtao Change from GMT time to local time for "Revise" field
|
||||
* May 15, 2015 4380 skorolev Added issuanceStage and issuanceFlow text fields.
|
||||
* Jul 06, 2015 #14104 lbousaidi increased textlimit to 15
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -751,7 +752,7 @@ public class RiverGageDlg extends CaveSWTDialog implements
|
|||
gd = new GridData(120, SWT.DEFAULT);
|
||||
usgsNoTF = new Text(infoGroup, SWT.BORDER);
|
||||
usgsNoTF.setLayoutData(gd);
|
||||
usgsNoTF.setTextLimit(10);
|
||||
usgsNoTF.setTextLimit(15);
|
||||
|
||||
// Lat/Lon Source
|
||||
gd = new GridData(SWT.FILL, SWT.CENTER, false, false);
|
||||
|
|
|
@ -29,6 +29,7 @@ import java.util.LinkedHashSet;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import javax.measure.converter.UnitConverter;
|
||||
import javax.measure.unit.Unit;
|
||||
|
@ -108,6 +109,8 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
|
|||
* Feb 04, 2014 16410 lbousaidi changed the first letter of the month to lower case.
|
||||
* Feb 19, 2014 2628 mpduff Change cast from short to int when creating color bar.
|
||||
* Jun 30, 2014 17457 snaples Added default case to switch in getXmrgfile.
|
||||
* Jul 8, 2015 16790 snaples Updated setCurrentEditDate to refresh resources when dateMap is stale.
|
||||
* Jul 29, 2015 17471 snaples Updated editTime to ensure that it always references "GMT" timezone.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -453,6 +456,9 @@ public class MPEDisplayManager {
|
|||
throw new RuntimeException("Error time matching MPE", e);
|
||||
}
|
||||
editTime = getCurrentDisplayedDate();
|
||||
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
cal.setTime(editTime);
|
||||
editTime = cal.getTime();
|
||||
|
||||
// token for default display
|
||||
String mdd = AppsDefaults.getInstance().getToken("mpe_def_display");
|
||||
|
@ -656,13 +662,20 @@ public class MPEDisplayManager {
|
|||
* @param force
|
||||
* @return
|
||||
*/
|
||||
private boolean setCurrentEditDate(Date newDate, boolean force) {
|
||||
public boolean setCurrentEditDate(Date newDate, boolean force) {
|
||||
MPEDataManager dm = MPEDataManager.getInstance();
|
||||
|
||||
// check for date in valid range
|
||||
if (newDate.before(dm.getEarliestDate())
|
||||
|| newDate.after(dm.getLatestDate())) {
|
||||
return false;
|
||||
if ((newDate.before(dm.getEarliestDate())
|
||||
|| newDate.after(dm.getLatestDate())) || force ) {
|
||||
IEditorPart editor = EditorUtil.getActiveEditor();
|
||||
|
||||
if (editor instanceof IDisplayPaneContainer) {
|
||||
IDisplayPaneContainer container = (IDisplayPaneContainer) editor;
|
||||
for (IDisplayPane pane : container.getDisplayPanes()) {
|
||||
pane.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (editTime.equals(newDate) == false) {
|
||||
|
|
|
@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 31, 2009 snaples Initial creation
|
||||
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
|
||||
* Jun 25, 2015 17397 snaples Removed send_expose in apply_group method to prevent screen from blanking.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -163,7 +164,6 @@ public class GroupEditCalls {
|
|||
|
||||
bv.restore_bad_values(pcpn_day, dqc.precip_stations,
|
||||
max_stations);
|
||||
opo.send_expose();
|
||||
group_edit = 0;
|
||||
|
||||
QcPrecipOptionsDialog.groupEditBtn.setEnabled(true);
|
||||
|
|
|
@ -46,6 +46,8 @@ import com.raytheon.viz.ui.tools.ModalToolManager;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 11Apr2011 8738 jpiatt Initial Creation.
|
||||
* Jun 30, 2015 14317 snaples Fixed issue when toggling back from Areal Zoom,
|
||||
* not going to Pan mode.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -61,6 +63,7 @@ public class MPEZoomAction extends AbstractHandler {
|
|||
private IDisplayPane pane = null;
|
||||
|
||||
private IRenderableDisplay display = null;
|
||||
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
@ -108,6 +111,7 @@ public class MPEZoomAction extends AbstractHandler {
|
|||
|
||||
pane.getRenderableDisplay().setExtent(unZoomedExtent);
|
||||
pane.getDescriptor().getRenderableDisplay().refresh();
|
||||
mgr.activateToolSet(PAN_ID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,7 @@ import com.raytheon.viz.mpe.util.WriteQPFGrids;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 30, 2009 snaples Initial creation
|
||||
* Jul 9, 2015 14618 snaples Updated render_options to be more efficient, and resolve an error.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -130,7 +131,6 @@ public class OtherPrecipOptions {
|
|||
int map_flag = DailyQcUtils.map_flag;
|
||||
|
||||
/* 24 hour or 6 hour time step */
|
||||
|
||||
if (MPEDisplayManager.pcpn_time_step == 0) {
|
||||
time_pos = DailyQcUtils.pcpn_time;
|
||||
} else {
|
||||
|
@ -157,8 +157,6 @@ public class OtherPrecipOptions {
|
|||
change_rpcpn_flag = -1;
|
||||
change_pcpn_flag = 1;
|
||||
rsmode = 1;
|
||||
// show legend
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -287,7 +285,7 @@ public class OtherPrecipOptions {
|
|||
|
||||
Calendar tget = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
long offset = (DailyQcUtils.pcpn_day * 86400);
|
||||
tget.setTime(dqc.btime.getTime());
|
||||
tget.setTime(DailyQcUtils.btime.getTime());
|
||||
tget.add(Calendar.SECOND, (int) -offset);
|
||||
DailyQcUtils.isom = tget.get(Calendar.MONTH);
|
||||
|
||||
|
@ -432,16 +430,11 @@ public class OtherPrecipOptions {
|
|||
int clientdata = i;
|
||||
Date old_time = null;
|
||||
String dbuf = "";
|
||||
// String[][] timefile = dqc.timefile;
|
||||
// String[][] ztimefile = dqc.ztimefile;
|
||||
// String[][] ttimefile = dqc.ttimefile;
|
||||
WriteQPFGrids wq = new WriteQPFGrids();
|
||||
RenderPcp rpc = new RenderPcp();
|
||||
CreateMap cm = new CreateMap();
|
||||
MakeRsel mr = new MakeRsel();
|
||||
// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
|
||||
Calendar tmtime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
// ReadPrecipStationList rp = new ReadPrecipStationList();
|
||||
int num_stations = DailyQcUtils.precip_stations.size();
|
||||
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
|
||||
int dqc_ending_6hour_obstime = ((!(null == s)) ? Integer.parseInt(s)
|
||||
|
@ -455,12 +448,8 @@ public class OtherPrecipOptions {
|
|||
// // do nothing
|
||||
// }
|
||||
|
||||
if (clientdata == 1) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
/* Rendering the grids and MAPs. */
|
||||
else if (clientdata == 0) {
|
||||
if (clientdata == 0) {
|
||||
|
||||
BadValues bv = new BadValues();
|
||||
bv.update_bad_values(DailyQcUtils.pcpn_day);
|
||||
|
@ -1053,7 +1042,6 @@ public class OtherPrecipOptions {
|
|||
QcTempOptionsDialog.renderGridsBtn.setEnabled(false);
|
||||
}
|
||||
send_expose();
|
||||
// refresh_exposure();
|
||||
}
|
||||
|
||||
public void send_expose() {
|
||||
|
|
|
@ -78,6 +78,7 @@ import com.raytheon.viz.mpe.util.WriteQPFGrids;
|
|||
* Nov 06, 2012 15481 wkwock Fix save 6 hours precipitation files
|
||||
* May 02, 2013 15956 wkwock Fix incorrect contents in precip_LLL_grid_yyyymmdd.nc file
|
||||
* Mar 10, 2015 14575 snaples Added status check to make sure that we close everything before exiting.
|
||||
* Jun 25, 2015 17462 snaples Fixed loop of basins for temp and freezing.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -1629,7 +1630,7 @@ public class SaveLevel2Data {
|
|||
gm.add(Calendar.SECOND, -86400);
|
||||
|
||||
/* loop through and write maps to file */
|
||||
for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
|
||||
for (m = 0; m < dqc.getMax_basins(); m++) {
|
||||
numzones = 0;
|
||||
|
||||
for (l = 0; l < 4; l++) {
|
||||
|
@ -2245,8 +2246,7 @@ public class SaveLevel2Data {
|
|||
gm.add(Calendar.SECOND, -86400);
|
||||
|
||||
/* loop through and write maps to file */
|
||||
for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
|
||||
|
||||
for (m = 0; m < dqc.getMax_basins(); m++) {
|
||||
numzones = 0;
|
||||
|
||||
for (l = 0; l < 4; l++) {
|
||||
|
|
|
@ -70,6 +70,8 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
|
|||
* Nov 24, 2014 16911 xwei The day of Hydrologic Date is set to the next day
|
||||
* if hour is greater than 18Z.
|
||||
* Jan 05, 2015 14246 lbousaidi enable Transmit Best Estimate QPE.
|
||||
* Jul 8, 2015 16790 snaples Updated call to setCurrentEditDate to pass force variable.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author randerso
|
||||
|
@ -159,7 +161,7 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
|
||||
displayMgr = MPEDisplayManager.getInstance(pane);
|
||||
dataMgr = MPEDataManager.getInstance();
|
||||
dateMap = dataMgr.getDateMap(false);
|
||||
dateMap = dataMgr.getDateMap(true);
|
||||
qcEnable = MPEDisplayManager.isMpeQcOptionEnabled();
|
||||
cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
hydroCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
|
@ -328,7 +330,7 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
// Hide so if setCurrentEditDate returns false, we can continue
|
||||
// to display
|
||||
hide();
|
||||
if (displayMgr.setCurrentEditDate(getTime())) {
|
||||
if (displayMgr.setCurrentEditDate(getTime(), true)) {
|
||||
close();
|
||||
} else {
|
||||
restore();
|
||||
|
|
|
@ -82,9 +82,11 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Apr 13, 2009 snaples Initial creation
|
||||
* Jun 27, 2013 15859 wkwock Update this dialog after click Apply button
|
||||
* Jun 27, 2013 15859 wkwock Update this dialog after click Apply button
|
||||
* Nov 26, 2014 16889 snaples Updated to fix SNOTEL display
|
||||
*
|
||||
* Jun 18, 2015 14298,17388 ptilles Updated to fix problem with mpe_dqc_6hr_24hr_ste_bad token and problem
|
||||
* with changing a 6hr value in 24hr mode
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -252,7 +254,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
int[] allowedQualityCodes = dqc.func;
|
||||
|
||||
int pcpn_day = DailyQcUtils.pcpn_day;
|
||||
|
||||
|
||||
int mpe_dqc_6hr_24hr_flag = 1;
|
||||
|
||||
Coordinate coord = new Coordinate();
|
||||
|
||||
boolean mpe_dqc_warningpopup_flag = false;
|
||||
|
@ -1011,15 +1015,20 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
protected void resetStationQuality(Integer data) {
|
||||
int k;
|
||||
|
||||
if (pcpn_time_step == 0) {
|
||||
if (pcpn_time_step == 0)
|
||||
{
|
||||
time_pos = pcpn_time;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
time_pos = HOURS_24;
|
||||
}
|
||||
|
||||
if (data == 1) {
|
||||
if (data == 1)
|
||||
{
|
||||
|
||||
for (k = 0; k < 5; k++) {
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
|
||||
pdata[pcpn_day].stn[isave].frain[k].qual = pdata[pcpn_day].stn[isave].rrain[k].qual;
|
||||
|
||||
|
@ -1030,7 +1039,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
reset_value = 1;
|
||||
new_qual = pdata[pcpn_day].stn[isave].rrain[time_pos].qual;
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
reset_value = 0;
|
||||
}
|
||||
|
||||
|
@ -1047,7 +1058,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
new_qual = allowedQualityCodes[data];
|
||||
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
|
||||
System.out.println(header + " new_qual = " + new_qual);
|
||||
}
|
||||
|
||||
protected void changeCustomFile() {
|
||||
|
@ -1076,15 +1086,28 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
custom.setReadable(true, false);
|
||||
custom.setWritable(true, false);
|
||||
|
||||
//token name: mpe_dqc_6hr_24hr_set_bad
|
||||
// token value = OFF
|
||||
// mpe_dqc_6hr_24hr_flag = 0
|
||||
// if user sets 6hr value to Bad, then 24hr value is unaffected
|
||||
|
||||
// token value = ON
|
||||
// mpe_dqc_6hr_24hr_flag = 1
|
||||
// if user sets 6hr value to Bad, then 24hr value is set to Bad
|
||||
|
||||
String mpe_dqc_6hr_24hr_string = AppsDefaults.getInstance().getToken(
|
||||
"mpe_dqc_6hr_24hr_set_bad", "OFF");
|
||||
"mpe_dqc_6hr_24hr_set_bad", "ON");
|
||||
|
||||
int mpe_dqc_6hr_24hr_flag = 0;
|
||||
|
||||
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("ON")) {
|
||||
mpe_dqc_6hr_24hr_flag = 1;
|
||||
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("OFF"))
|
||||
{
|
||||
mpe_dqc_6hr_24hr_flag = 0;
|
||||
System.out.println("mpe_dqc_6hr_24hr_flag = 0 -- token = OFF");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
System.out.println("mpe_dqc_6hr_24hr_flag = 1 -- token = ON");
|
||||
}
|
||||
|
||||
if (pcpn_time_step == 0) {
|
||||
time_pos = pcpn_time;
|
||||
} else {
|
||||
|
@ -1093,7 +1116,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
try {
|
||||
out = new BufferedWriter(new FileWriter(custom));
|
||||
|
||||
|
||||
for (i = 0; i < max_stations; i++) {
|
||||
Station station = precipStationList.get(i);
|
||||
String rec = String.format("%s %s %d %d\n", station.hb5,
|
||||
|
@ -1123,7 +1146,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
/* snotel path */
|
||||
|
||||
if (snow == true
|
||||
&& ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) {
|
||||
&& ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1)))
|
||||
{
|
||||
|
||||
pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -pdata[pcpn_day].stn[isave].sflag[HOURS_24];
|
||||
|
||||
|
@ -1140,30 +1164,25 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
}
|
||||
|
||||
else {
|
||||
else
|
||||
{
|
||||
boolean value_edit_flag = false;
|
||||
val = pdata[pcpn_day].stn[isave].frain[time_pos].data;
|
||||
p = -1;
|
||||
// if (editVal != null) // null unless a value was edited
|
||||
// {
|
||||
for (k = 0; k < 5; k++) {
|
||||
/* other path */
|
||||
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
cstr = precipValueStringArray[k];
|
||||
System.out.println(header + "cstr = " + cstr);
|
||||
val = Float.parseFloat(cstr);
|
||||
System.out.println(header + "value = " + val);
|
||||
p = cstr.indexOf('M');
|
||||
cstr = null;
|
||||
|
||||
// } // end if editVal != null
|
||||
/* use manually entered data */
|
||||
|
||||
/* need to ensure consistency in 6 and 24 hour data??? */
|
||||
|
||||
fdif = Math.abs(val
|
||||
- pdata[pcpn_day].stn[isave].frain[time_pos].data);
|
||||
|
||||
if (fdif > .005 && p == -1 && reset_value == 0) {
|
||||
fdif = Math.abs(val - pdata[pcpn_day].stn[isave].frain[k].data); // changed for DR 17388
|
||||
|
||||
if (fdif > .005 && p == -1 && reset_value == 0)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].frain[k].data = val;
|
||||
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
|
||||
pdata[pcpn_day].stn[isave].sflag[k] = -1;
|
||||
|
@ -1171,11 +1190,14 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
}
|
||||
}
|
||||
if (value_edit_flag == true && reset_value == 0) {
|
||||
if (value_edit_flag == true && reset_value == 0)
|
||||
{
|
||||
rtotal = 0;
|
||||
|
||||
for (m = 0; m < 4; m++) {
|
||||
if (pdata[pcpn_day].stn[isave].frain[m].data >= 0) {
|
||||
for (m = 0; m < 4; m++)
|
||||
{
|
||||
if (pdata[pcpn_day].stn[isave].frain[m].data >= 0)
|
||||
{
|
||||
rtotal = rtotal
|
||||
+ pdata[pcpn_day].stn[isave].frain[m].data;
|
||||
}
|
||||
|
@ -1186,33 +1208,33 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
* values to zero and set their QC codes to "Manual" as well.
|
||||
*/
|
||||
|
||||
if ((Math
|
||||
.abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001)
|
||||
&& (time_pos == HOURS_24)) {
|
||||
for (m = 0; m < 4; m++) {
|
||||
if ((Math.abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001) && (time_pos == HOURS_24))
|
||||
{
|
||||
for (m = 0; m < 4; m++)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].frain[m].data = 0;
|
||||
pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL;
|
||||
}
|
||||
rtotal = 0;
|
||||
}
|
||||
|
||||
if (Math.abs(rtotal
|
||||
- pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) {
|
||||
if (Math.abs(rtotal - pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005)
|
||||
{
|
||||
read_text();
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
} // end if (frain.qual == MANUAL || tcmode == 1)
|
||||
|
||||
else {
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
|
||||
|
||||
/* 24 hour data set bad/good then 6 hourly bad/good also */
|
||||
|
||||
if (new_qual == F_BAD && time_pos == HOURS_24
|
||||
&& pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) {
|
||||
if (new_qual == F_BAD && time_pos == HOURS_24 && pdata[pcpn_day].stn[isave].sflag[time_pos] == 1)
|
||||
{
|
||||
|
||||
pdata[pcpn_day].stn[isave].frain[time_pos].data = pdata[pcpn_day].stn[isave].rrain[time_pos].data;
|
||||
|
||||
|
@ -1220,69 +1242,72 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
}
|
||||
|
||||
if (time_pos == HOURS_24
|
||||
&& (new_qual == F_BAD || new_qual == F_SCREENED
|
||||
|| new_qual == F_VERIFIED || new_qual == F_PARTIAL)) {
|
||||
if (time_pos == HOURS_24 && (new_qual == F_BAD || new_qual == F_SCREENED
|
||||
|| new_qual == F_VERIFIED || new_qual == F_PARTIAL))
|
||||
{
|
||||
|
||||
for (k = 0; k < 4; k++) {
|
||||
/* if(pdata[pcpn_day].stn[isave].frain[k].qual!=1) */
|
||||
for (k = 0; k < 4; k++)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual;
|
||||
}
|
||||
|
||||
}
|
||||
/*-------------------------------------------------------*/
|
||||
/*
|
||||
* if 6 hr QC code set bad by user, then some RFCs want the 24hr
|
||||
* QC code to be set to Bad
|
||||
* if 6 hr QC code set Bad by user and token value = ON, then set 24hr QC code to Bad
|
||||
* following code also allows 24 hr partial data to be set to Bad
|
||||
*/
|
||||
/* others want the 24hr QC code to remain unchanged */
|
||||
/* added token to choose behavior */
|
||||
/* following code also allows partial data to be set as bad */
|
||||
/* 6 hour data set bad set 24 hour bad too */
|
||||
|
||||
if (time_pos != HOURS_24
|
||||
&& new_qual == F_BAD
|
||||
if (time_pos != HOURS_24 && new_qual == F_BAD
|
||||
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED
|
||||
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) {
|
||||
if (mpe_dqc_6hr_24hr_flag == 1) {
|
||||
System.out
|
||||
.println("6hr qual code set to Bad - 24hr qual code changed to Bad\n");
|
||||
// frain24.qual = (short) new_qual;
|
||||
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual;
|
||||
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0)
|
||||
{
|
||||
if (mpe_dqc_6hr_24hr_flag == 1)
|
||||
{
|
||||
System.out.println(header + "6hr qual code set to Bad - 24hr qual code changed to Bad\n");
|
||||
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_BAD;
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println(header + "6hr qual code set to Bad - 24hr qual code unchanged\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* --------------------------------------------------------------
|
||||
* --
|
||||
*/
|
||||
|
||||
if (pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD
|
||||
|| pdata[pcpn_day].stn[isave].frain[4].data < 0) {
|
||||
if (tcmode == 0) {
|
||||
if (pdata[pcpn_day].stn[isave].frain[HOURS_24].qual == F_BAD ||
|
||||
pdata[pcpn_day].stn[isave].frain[HOURS_24].data < 0)
|
||||
{
|
||||
if (tcmode == 0)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].tcons = 1;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].tcons = -1;
|
||||
}
|
||||
}
|
||||
} // end else
|
||||
} // end else
|
||||
|
||||
} // end if (value_edit_flag == true && reset_value == 0)
|
||||
|
||||
} // end if (snow == true)
|
||||
|
||||
for (k = 0; k < 5; k++) {
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
|
||||
if (k < 4) {
|
||||
if (k < 4)
|
||||
{
|
||||
time_pos = pcpn_day * 4 + k;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
time_pos = 40 + pcpn_day;
|
||||
}
|
||||
|
||||
// pcp_in_use[time_pos] = -1;
|
||||
|
||||
if (pdata[pcpn_day].used[k] != 0) {
|
||||
if (pdata[pcpn_day].used[k] != 0)
|
||||
{
|
||||
pdata[pcpn_day].used[k] = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QcPrecipOptionsDialog.dataSet.clear();
|
||||
QcPrecipOptionsDialog.dataSet.addAll(QcPrecipOptionsDialog.dataType);
|
||||
for (k = 1; k < 7; k++) {
|
||||
|
@ -1292,7 +1317,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
String[] a = new String[QcPrecipOptionsDialog.dataSet.size()];
|
||||
QcPrecipOptionsDialog.setDataSetCombo(QcPrecipOptionsDialog.dataSet
|
||||
.toArray(a));
|
||||
|
||||
|
||||
if (pcpn_time_step == 0) {
|
||||
time_pos = pcp_flag;
|
||||
} else {
|
||||
|
@ -1320,7 +1345,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
}
|
||||
|
||||
QcPrecipOptionsDialog.selectDataSetVal(k);
|
||||
|
||||
rpbutton.setEnabled(true);
|
||||
|
||||
BadValues bv = new BadValues();
|
||||
|
@ -1331,20 +1355,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
* if run DQC on partial time frame and pcpn_day=0
|
||||
*/
|
||||
|
||||
if (pcpn_day == 0
|
||||
&& (dqc.curHr00_06 == 1
|
||||
|| dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) {
|
||||
// do nothing
|
||||
} else {
|
||||
EstDailyStations eds = new EstDailyStations();
|
||||
eds.estimate_daily_stations(pcpn_day, precipStationList,
|
||||
max_stations);
|
||||
|
||||
EstPartStations eps = new EstPartStations();
|
||||
eps.estimate_partial_stations(pcpn_day, precipStationList,
|
||||
max_stations);
|
||||
if (pcpn_day == 0 && (dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1))
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
EstDailyStations eds = new EstDailyStations();
|
||||
eds.estimate_daily_stations(pcpn_day, precipStationList,
|
||||
max_stations);
|
||||
EstPartStations eps = new EstPartStations();
|
||||
eps.estimate_partial_stations(pcpn_day, precipStationList,
|
||||
max_stations);
|
||||
}
|
||||
|
||||
QCStations qcs = new QCStations();
|
||||
qcs.quality_control_stations(pcpn_day, precipStationList, max_stations);
|
||||
|
||||
|
@ -1353,12 +1378,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
bv.restore_bad_values(pcpn_day, precipStationList, max_stations);
|
||||
|
||||
// logMessage("new_qual again %d station qual %d\n", new_qual,
|
||||
// pdata[pcpn_day].stn[isave].frain[4].qual);
|
||||
|
||||
if (k == 1 || k == 3) {
|
||||
grids_flag = 1;
|
||||
}
|
||||
if (k == 1 || k == 3) grids_flag = 1;
|
||||
|
||||
OtherPrecipOptions op = new OtherPrecipOptions();
|
||||
op.send_expose();
|
||||
|
@ -1485,7 +1505,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
int k, p;
|
||||
String cstr;
|
||||
float val, fdif;
|
||||
// int[] pcp_in_use = DailyQcUtils.pcp_in_use;
|
||||
int pcp_flag = DailyQcUtils.pcp_flag;
|
||||
Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn;
|
||||
int grids_flag = DailyQcUtils.grids_flag;
|
||||
|
@ -1495,28 +1514,31 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
Rain frain24 = pdata[pcpn_day].stn[isave].frain[HOURS_24];
|
||||
|
||||
for (k = 0; k < 5; k++) {
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
|
||||
Rain frain = pdata[pcpn_day].stn[isave].frain[k];
|
||||
|
||||
cstr = precipValueStringArray[k];
|
||||
val = 0;
|
||||
p = cstr.indexOf('M');
|
||||
if (p == -1) {
|
||||
if (p == -1)
|
||||
{
|
||||
val = Float.parseFloat(cstr);
|
||||
}
|
||||
|
||||
fdif = Math.abs(val - frain.data);
|
||||
|
||||
if (p != -1) {
|
||||
if (p != -1)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].frain[k].data = -1;
|
||||
p = -1;
|
||||
} else if (fdif > .005 && p == -1) {
|
||||
|
||||
}
|
||||
else if (fdif > .005 && p == -1)
|
||||
{
|
||||
pdata[pcpn_day].stn[isave].frain[k].data = val;
|
||||
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
|
||||
pdata[pcpn_day].stn[isave].sflag[k] = -1;
|
||||
|
||||
|
||||
}
|
||||
cstr = null;
|
||||
}
|
||||
|
@ -1549,10 +1571,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
|
|||
|
||||
QcPrecipOptionsDialog.dataSet.clear();
|
||||
QcPrecipOptionsDialog.dataSet.addAll(QcPrecipOptionsDialog.dataType);
|
||||
// for (k = 1; k < 7; k++) {
|
||||
// QcPrecipOptionsDialog.dataSet.remove(QcPrecipOptionsDialog.dataSet
|
||||
// .indexOf(QcPrecipOptionsDialog.dataType.get(k)));
|
||||
// }
|
||||
|
||||
if (pcpn_time_step == 0) {
|
||||
time_pos = pcp_flag;
|
||||
|
|
|
@ -66,6 +66,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils;
|
|||
* when pressed.
|
||||
* Sep 11, 2013 #2353 lvenable Fixed cursor memory leak.
|
||||
* Mar 10, 2015 14575 snaples Added additional status flag.
|
||||
* Jul 9, 2015 14618 snaples Cleaned up code issues.
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -170,32 +171,32 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
|
||||
private int getOpts() {
|
||||
int ik = 0;
|
||||
if (dqc.points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) {
|
||||
if (DailyQcUtils.points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) {
|
||||
ik = 0;
|
||||
} else if (dqc.points_flag == 1
|
||||
&& dqc.grids_flag == -1 && dqc.map_flag == -1
|
||||
&& dqc.contour_flag == -1) {
|
||||
} else if (DailyQcUtils.points_flag == 1
|
||||
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == -1
|
||||
&& DailyQcUtils.contour_flag == -1) {
|
||||
ik = 0;
|
||||
} else if (dqc.points_flag == -1
|
||||
&& dqc.grids_flag == 1 && dqc.map_flag == -1) {
|
||||
} else if (DailyQcUtils.points_flag == -1
|
||||
&& DailyQcUtils.grids_flag == 1 && DailyQcUtils.map_flag == -1) {
|
||||
ik = 1;
|
||||
} else if (dqc.points_flag == -1
|
||||
&& dqc.grids_flag == -1 && dqc.map_flag == 1) {
|
||||
} else if (DailyQcUtils.points_flag == -1
|
||||
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == 1) {
|
||||
ik = 2;
|
||||
} else if (dqc.points_flag == 1
|
||||
&& dqc.grids_flag == 1 && dqc.map_flag == -1) {
|
||||
} else if (DailyQcUtils.points_flag == 1
|
||||
&& DailyQcUtils.grids_flag == 1 && DailyQcUtils.map_flag == -1) {
|
||||
ik = 3;
|
||||
} else if (dqc.points_flag == 1
|
||||
&& dqc.grids_flag == -1 && dqc.map_flag == 1) {
|
||||
} else if (DailyQcUtils.points_flag == 1
|
||||
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == 1) {
|
||||
ik = 4;
|
||||
} else if (dqc.points_flag == -1
|
||||
&& dqc.contour_flag == 1) {
|
||||
} else if (DailyQcUtils.points_flag == -1
|
||||
&& DailyQcUtils.contour_flag == 1) {
|
||||
ik = 5;
|
||||
} else if (dqc.points_flag == 1
|
||||
&& dqc.contour_flag == 1) {
|
||||
} else if (DailyQcUtils.points_flag == 1
|
||||
&& DailyQcUtils.contour_flag == 1) {
|
||||
ik = 6;
|
||||
} else if (dqc.points_flag == -1
|
||||
&& dqc.grids_flag == -1 && dqc.map_flag == -1) {
|
||||
} else if (DailyQcUtils.points_flag == -1
|
||||
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == -1) {
|
||||
ik = 7;
|
||||
}
|
||||
return ik;
|
||||
|
@ -331,11 +332,11 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
*/
|
||||
private void initializeComponents() {
|
||||
// pdata = dqc.pdata;
|
||||
dqc.points_flag = 1;
|
||||
dqc.grids_flag = -1;
|
||||
dqc.map_flag = -1;
|
||||
dqc.contour_flag = -1;
|
||||
if (dqc.pdata == null || (dqc.pdata.length <= 0)) {
|
||||
DailyQcUtils.points_flag = 1;
|
||||
DailyQcUtils.grids_flag = -1;
|
||||
DailyQcUtils.map_flag = -1;
|
||||
DailyQcUtils.contour_flag = -1;
|
||||
if (DailyQcUtils.pdata == null || (DailyQcUtils.pdata.length <= 0)) {
|
||||
Date currDate = ChooseDataPeriodDialog.prevDate;
|
||||
String QcArea = ChooseDataPeriodDialog.prevArea;
|
||||
int qcDays = MPEDisplayManager.getCurrent().getDqcDays();
|
||||
|
@ -347,19 +348,19 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
dataSet.clear();
|
||||
dataSet.addAll(dataType);
|
||||
|
||||
dqc.pcp_flag = 3;
|
||||
dqc.pcpn_day = 0;
|
||||
dqc.pcpn_time = 0;
|
||||
DailyQcUtils.pcp_flag = 3;
|
||||
DailyQcUtils.pcpn_day = 0;
|
||||
DailyQcUtils.pcpn_time = 0;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
|
||||
if (MPEDisplayManager.pcpn_time_step == 0) {
|
||||
time_pos = dqc.pcp_flag;
|
||||
time_pos = DailyQcUtils.pcp_flag;
|
||||
} else {
|
||||
time_pos = 40 + dqc.pcpn_day;
|
||||
time_pos = 40 + DailyQcUtils.pcpn_day;
|
||||
}
|
||||
|
||||
if ((i != 0 && i != 7) && dqc.pcp_in_use[time_pos] == -1) {
|
||||
if ((i != 0 && i != 7) && DailyQcUtils.pcp_in_use[time_pos] == -1) {
|
||||
dataSet.remove(dataSet.indexOf(dataType.get(i)));
|
||||
}
|
||||
}
|
||||
|
@ -416,7 +417,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
opo.chg_precip_time(selsix24Cbo.getSelectionIndex() + 2);
|
||||
}
|
||||
});
|
||||
if (dqc.qcDays == 1
|
||||
if (DailyQcUtils.qcDays == 1
|
||||
&& (dqc.curHr18_00 == 1
|
||||
|| dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) {
|
||||
selsix24Cbo.setEnabled(false);
|
||||
|
@ -498,7 +499,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
renderGridsBtn = new Button(renderComp, SWT.PUSH);
|
||||
renderGridsBtn.setText("Render Grids+MAPs");
|
||||
renderGridsBtn.setLayoutData(gd);
|
||||
if (dqc.pcp_in_use[time_pos] == -1 && dqc.pdata[i].used[4] != 0) {
|
||||
if (DailyQcUtils.pcp_in_use[time_pos] == -1 && DailyQcUtils.pdata[i].used[4] != 0) {
|
||||
renderGridsBtn.setEnabled(true);
|
||||
} else {
|
||||
renderGridsBtn.setEnabled(false);
|
||||
|
@ -585,7 +586,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
chkBxComp.setLayoutData(gd);
|
||||
|
||||
int m;
|
||||
tsbuttons = new Button[dqc.tsmax + 2];
|
||||
tsbuttons = new Button[DailyQcUtils.tsmax + 2];
|
||||
|
||||
nexChk = new Button(chkBxComp, SWT.CHECK);
|
||||
nexChk.setEnabled(false);
|
||||
|
@ -598,9 +599,9 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
}
|
||||
});
|
||||
tsbuttons[0] = nexChk;
|
||||
for (m = 0; m < dqc.tsmax; m++) {
|
||||
for (m = 0; m < DailyQcUtils.tsmax; m++) {
|
||||
final Button bname = new Button(chkBxComp, SWT.CHECK);
|
||||
bname.setText(dqc.ts[m].name);
|
||||
bname.setText(DailyQcUtils.ts[m].name);
|
||||
bname.setData(m + 1);
|
||||
bname.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
|
@ -621,20 +622,20 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
}
|
||||
});
|
||||
tsbuttons[m + 1] = allChk;
|
||||
for (int i = 0; i < dqc.tsmax + 2; i++) {
|
||||
for (int i = 0; i < DailyQcUtils.tsmax + 2; i++) {
|
||||
|
||||
if (i == 0) {
|
||||
/*
|
||||
* Do not show the NEXRAD option. Nexrad data are now displayed
|
||||
* through the MPE portion of MPE Editor.
|
||||
*/
|
||||
dqc.dflag[i] = -1;
|
||||
DailyQcUtils.dflag[i] = -1;
|
||||
continue;
|
||||
} else {
|
||||
dqc.dflag[i] = 1;
|
||||
DailyQcUtils.dflag[i] = 1;
|
||||
}
|
||||
|
||||
if (dqc.dflag[i] == 1) {
|
||||
if (DailyQcUtils.dflag[i] == 1) {
|
||||
tsbuttons[i].setSelection(true);
|
||||
} else {
|
||||
tsbuttons[i].setSelection(false);
|
||||
|
@ -657,7 +658,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
pointQualGroup.setLayoutData(gd);
|
||||
|
||||
int i;
|
||||
int qflag[] = dqc.qflag;
|
||||
int qflag[] = DailyQcUtils.qflag;
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
qflag[i] = 1;
|
||||
|
@ -753,8 +754,8 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
|
||||
Label pntCharLbl = new Label(pntSetComp, SWT.CENTER);
|
||||
pntCharLbl.setText("Point character:");
|
||||
dqc.gage_char[0] = 1;
|
||||
dqc.gage_char[1] = 1;
|
||||
DailyQcUtils.gage_char[0] = 1;
|
||||
DailyQcUtils.gage_char[1] = 1;
|
||||
|
||||
gd = new GridData(160, SWT.DEFAULT);
|
||||
pntCharCbo = new Combo(pntSetComp, SWT.DROP_DOWN | SWT.READ_ONLY);
|
||||
|
@ -774,7 +775,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
Label pntDispLbl = new Label(pntSetComp, SWT.CENTER);
|
||||
pntDispLbl.setText("Point display:");
|
||||
|
||||
dqc.plot_view = 4;
|
||||
DailyQcUtils.plot_view = 4;
|
||||
|
||||
pntDispCbo = new Combo(pntSetComp, SWT.DROP_DOWN | SWT.READ_ONLY);
|
||||
pntDispCbo.setTextLimit(30);
|
||||
|
@ -797,9 +798,9 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
|
||||
int i;
|
||||
final ScreeningOptions so = new ScreeningOptions();
|
||||
if (dqc.pdata[dqc.pcpn_day].stddev == 5.0) {
|
||||
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 5.0) {
|
||||
i = 0;
|
||||
} else if (dqc.pdata[dqc.pcpn_day].stddev == 3.0) {
|
||||
} else if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 3.0) {
|
||||
i = 1;
|
||||
} else {
|
||||
i = 2;
|
||||
|
@ -1019,7 +1020,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
@Override
|
||||
public void mouseUp(MouseEvent e) {
|
||||
int sel = pntElFilter.getSelection();
|
||||
dqc.elevation_filter_value = sel;
|
||||
DailyQcUtils.elevation_filter_value = sel;
|
||||
opo.refresh_exposure();
|
||||
}
|
||||
|
||||
|
@ -1074,7 +1075,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
// initialize the gage filter values
|
||||
pntFilter.setSelection(0);
|
||||
pntRevFilter.setSelection(0);
|
||||
dqc.elevation_filter_value = pntElFilter.getSelection();
|
||||
DailyQcUtils.elevation_filter_value = pntElFilter.getSelection();
|
||||
dqc.pxtemp = (pxTempFilter.getSelection() - 100) / 100;
|
||||
dqc.dmvalue = (int) (dqc.pxtemp * 100 * 3.28 / .55);
|
||||
|
||||
|
|
|
@ -79,6 +79,8 @@ import com.raytheon.viz.mpe.ui.radartable.ReadBiasTableParam;
|
|||
* May 1, 2014 16626 snaples Updated the Manual Bias button to allow revert to original value.
|
||||
* May 8, 2014 DCS167 cgobs Updated Dialog for DualPol features
|
||||
* May 23, 2014 DCS167 cgobs Resolved merge conflict
|
||||
* Jul 29, 2015 17471 snaples Added logging for radar result table query date value.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -362,6 +364,8 @@ public class RadarBiasTableDialog extends Dialog {
|
|||
|
||||
|
||||
dt = pgsdf.format(dt3);
|
||||
// This lets us know what date is being requested from radar result tables
|
||||
System.out.println("Radar Bias table query using time: " + dt3);
|
||||
|
||||
radarIdToSPDataMap = MPEDataManager.getInstance().readSPRadarData(dt3);
|
||||
radarIdToDPDataMap = MPEDataManager.getInstance().readDPRadarData(dt3);
|
||||
|
|
|
@ -79,6 +79,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Nov 24, 2008 1748 snaples Added getters to MPEGageData
|
||||
* Jun 18, 2013 16053 snaples Removed methods set and getRadarEditFlag
|
||||
* Dec 15 2013 DCS 167 cgobs DualPol capabilities
|
||||
* Jul 29, 2015 17471 snaples Added logging for Radar Bias results table query.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author randerso
|
||||
|
@ -881,6 +883,7 @@ public class MPEDataManager {
|
|||
StringBuffer sqlQuery = new StringBuffer();
|
||||
sqlQuery.append("select radid,num_gages, rad_avail, rw_bias_val_used, mem_span_used, edit_bias, ignore_radar from " +
|
||||
tableName + " where obstime='" + sdf.format(date) + "' and radid in(");
|
||||
System.out.println("Datestring actually passed in query to radar table: " + sdf.format(date));
|
||||
for (int i = 0; i < radarList.size(); i++) {
|
||||
sqlQuery.append("'");
|
||||
sqlQuery.append(radarList.get(i).getId());
|
||||
|
|
|
@ -29,6 +29,7 @@ import java.io.IOException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Scanner;
|
||||
|
||||
import com.raytheon.uf.common.ohd.AppsDefaults;
|
||||
import com.raytheon.viz.mpe.util.DailyQcUtils.Bad_Daily_Values;
|
||||
import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
||||
|
||||
|
@ -41,7 +42,8 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 9, 2009 snaples Initial creation
|
||||
* Feb 5, 2015 17101 snaples Fixed issue with writing zero length bad values file.
|
||||
* Jun 17, 2015 17388 ptilles added check on mpe_dqc_6hr_24hr_flag and
|
||||
* changed definition of max_stations variable
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -52,7 +54,31 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
public class BadValues {
|
||||
BufferedReader in = null;
|
||||
DailyQcUtils dqc = DailyQcUtils.getInstance();
|
||||
private int max_stations = dqc.precip_stations.size();
|
||||
ReadPrecipStationList rp = new ReadPrecipStationList();
|
||||
//private int max_stations = rp.getNumPstations();
|
||||
int max_stations = DailyQcUtils.precip_stations.size();
|
||||
|
||||
static int mpe_dqc_6hr_24hr_flag = 1;
|
||||
|
||||
static
|
||||
{
|
||||
//token name: mpe_dqc_6hr_24hr_set_bad
|
||||
// token value = OFF
|
||||
// mpe_dqc_6hr_24hr_flag = 0
|
||||
// if user sets 6hr value to Bad, then 24hr value is unaffected
|
||||
|
||||
// token value = ON
|
||||
// mpe_dqc_6hr_24hr_flag = 1
|
||||
// if user sets 6hr value to Bad, then 24hr value is set to Bad
|
||||
|
||||
String mpe_dqc_6hr_24hr_string = AppsDefaults.getInstance().getToken(
|
||||
"mpe_dqc_6hr_24hr_set_bad", "ON");
|
||||
|
||||
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("OFF"))
|
||||
{
|
||||
mpe_dqc_6hr_24hr_flag = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void read_bad_values(String precd, int m) {
|
||||
|
@ -76,7 +102,6 @@ public class BadValues {
|
|||
break;
|
||||
}
|
||||
|
||||
// ier=sscanf(ibuf,"%s %s %d %f",hb5,pc,&iquart,&fvalue);
|
||||
s = new Scanner(vals);
|
||||
|
||||
bad_values[i].used = 1;
|
||||
|
@ -183,18 +208,19 @@ public class BadValues {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (iday == bad_values[i].day) {
|
||||
if (iday == bad_values[i].day)
|
||||
{
|
||||
|
||||
if (bad_values[i].fvalue < 0) {
|
||||
if (bad_values[i].fvalue < 0)
|
||||
{
|
||||
|
||||
System.out.println("Attempt to write value < 0\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
// ier=sprintf(ibuf,"%s %s %d %f\n",bad_values[i].hb5,bad_values[i].parm,
|
||||
// bad_values[i].quart,bad_values[i].fvalue);
|
||||
|
||||
ibuf = String.format("%s %s %d %4.2f", bad_values[i].hb5,
|
||||
System.out.println("In write_bad_values method:" + bad_values[i].hb5 + bad_values[i].parm +
|
||||
bad_values[i].quart + bad_values[i].fvalue);
|
||||
ibuf = String.format("%s %s %d %f", bad_values[i].hb5,
|
||||
bad_values[i].parm, bad_values[i].quart,
|
||||
bad_values[i].fvalue);
|
||||
out.write(ibuf);
|
||||
|
@ -226,9 +252,9 @@ public class BadValues {
|
|||
int i, j, h, k;
|
||||
Bad_Daily_Values bad_values[] = dqc.bad_values;
|
||||
ArrayList<Station> station = dqc.precip_stations;
|
||||
// Pdata[] pdata = dqc.pdata;
|
||||
|
||||
for (i = 0; i < 6000; i++) {
|
||||
for (i = 0; i < 6000; i++)
|
||||
{
|
||||
|
||||
if (bad_values[i].used == 0) {
|
||||
continue;
|
||||
|
@ -242,17 +268,22 @@ public class BadValues {
|
|||
|
||||
}
|
||||
|
||||
for (j = 0; j < max_stations; j++) {
|
||||
for (j = 0; j < max_stations; j++)
|
||||
{
|
||||
|
||||
for (k = 0; k < 5; k++) {
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
|
||||
if (dqc.pdata[iday].stn[j].frain[k].qual != 1) {
|
||||
if (dqc.pdata[iday].stn[j].frain[k].qual != 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (h = 0; h < 6000; h++)
|
||||
{
|
||||
|
||||
for (h = 0; h < 6000; h++) {
|
||||
|
||||
if (bad_values[h].used != 0) {
|
||||
if (bad_values[h].used != 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -266,8 +297,6 @@ public class BadValues {
|
|||
|
||||
bad_values[h].fvalue = dqc.pdata[iday].stn[j].frain[k].data;
|
||||
|
||||
// bad_values[h].fvalue = pdata[iday].stn[j].rrain[k].data;
|
||||
|
||||
bad_values[h].hb5 = station.get(j).hb5;
|
||||
bad_values[h].parm = station.get(j).parm;
|
||||
bad_values[h].day = iday;
|
||||
|
@ -284,15 +313,16 @@ public class BadValues {
|
|||
|
||||
}
|
||||
|
||||
public void restore_bad_values(int iday,
|
||||
ArrayList<Station> precip_stations, int max_stations) {
|
||||
// Bad_Daily_Values bad_values[] = dqc.bad_values;
|
||||
public void restore_bad_values(int iday, ArrayList<Station> precip_stations, int max_stations)
|
||||
{
|
||||
|
||||
int i, j, k;
|
||||
|
||||
for (k = 0; k < 5; k++) {
|
||||
for (k = 0; k < 5; k++)
|
||||
{
|
||||
|
||||
for (i = 0; i < 6000; i++) {
|
||||
for (i = 0; i < 6000; i++)
|
||||
{
|
||||
|
||||
if (dqc.bad_values[i].used == 0) {
|
||||
continue;
|
||||
|
@ -302,24 +332,28 @@ public class BadValues {
|
|||
continue;
|
||||
}
|
||||
|
||||
for (j = 0; j < max_stations; j++) {
|
||||
for (j = 0; j < max_stations; j++)
|
||||
{
|
||||
|
||||
if ((dqc.bad_values[i].hb5.equalsIgnoreCase(precip_stations
|
||||
.get(j).hb5))
|
||||
&& dqc.bad_values[i].parm.charAt(4) == precip_stations
|
||||
.get(j).parm.charAt(4)) {
|
||||
if ((dqc.bad_values[i].hb5.equalsIgnoreCase(precip_stations.get(j).hb5))
|
||||
&& dqc.bad_values[i].parm.charAt(4) == precip_stations.get(j).parm.charAt(4))
|
||||
{
|
||||
|
||||
dqc.pdata[iday].stn[j].frain[k].data = dqc.bad_values[i].fvalue;
|
||||
dqc.pdata[iday].stn[j].frain[k].qual = 1;
|
||||
|
||||
/* fix for 6 hourly bad but 24 hour good */
|
||||
// 6hr qual code bad - check how to set 24hr qual code
|
||||
// added for DR 17388
|
||||
|
||||
if(mpe_dqc_6hr_24hr_flag == 1)
|
||||
{
|
||||
|
||||
if (k >= 0
|
||||
&& k <= 3
|
||||
&& dqc.pdata[iday].stn[j].rrain[4].data >= 0) {
|
||||
if (k >= 0 && k <= 3 && dqc.pdata[iday].stn[j].rrain[4].data >= 0)
|
||||
{
|
||||
|
||||
dqc.pdata[iday].stn[j].frain[4].qual = 1;
|
||||
dqc.pdata[iday].stn[j].frain[4].qual = 1;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -338,7 +372,6 @@ public class BadValues {
|
|||
public int is_bad(int iday, int iquart, String hb5, String parm)
|
||||
|
||||
{
|
||||
// Bad_Daily_Values bad_values[] = dqc.bad_values;
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < 6000; i++) {
|
||||
|
|
|
@ -59,6 +59,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Apr 20, 2009 snaples Initial creation
|
||||
* Mar 2, 2015 15660 snaples Fixed the disagg logging and corrected the procedure.
|
||||
* Jul 16, 2015 17561 snaples Updated to fix issues with QPE Grid.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -522,20 +523,27 @@ public class Disagg6Hr {
|
|||
disagg_station_6hr[index].lat = disagg_station_6hr[i].lat;
|
||||
disagg_station_6hr[index].lon = disagg_station_6hr[i].lon;
|
||||
|
||||
for (k = 0; k < max_stations; k++) {
|
||||
if (!(disagg_station_6hr[index].hb5
|
||||
.compareToIgnoreCase(station.get(k).hb5) == 0)) {
|
||||
for (k = 0; k < max_stations; k++)
|
||||
{
|
||||
//if (!(disagg_station_6hr[index].hb5.compareToIgnoreCase(station.get(k).hb5) == 0))
|
||||
if (disagg_station_6hr[index].hb5.compareToIgnoreCase(station.get(k).hb5) == 0) // fixed for DR 17561
|
||||
{
|
||||
values6hr[index].ID = disagg_station_6hr[index].hb5;
|
||||
//disagg_log_fd.write(String.format(" station.get(k).hb5 %s\t\n", station.get(k).hb5));
|
||||
for (ii = 0; ii < 4; ii++) // for 4 6hr values
|
||||
{
|
||||
// we treat "bad" 6hr stations as missing in
|
||||
// Disagg calculationa
|
||||
// note that "bad" stations have a quality
|
||||
// code of '1'
|
||||
if ((pdata[j].stn[k].frain[ii].data >= 0)
|
||||
&& (pdata[j].stn[k].frain[ii].data != 1)) {
|
||||
// we treat "bad" 6hr stations as missing in Disagg calculations
|
||||
// note that "bad" stations have a quality code of '1'
|
||||
if ((pdata[j].stn[k].frain[ii].data >= 0) && (pdata[j].stn[k].frain[ii].data != 1))
|
||||
{
|
||||
values6hr[index].value[ii] = pdata[j].stn[k].frain[ii].data;
|
||||
} else {
|
||||
|
||||
// print values
|
||||
//disagg_log_fd.write(String.format(" pdata[].stn[].frain[] %d\t%d\t%d\t%5.2f\n",
|
||||
// j, k, ii, pdata[j].stn[k].frain[ii].data ));
|
||||
}
|
||||
else
|
||||
{
|
||||
values6hr[index].value[ii] = -9999.f;
|
||||
}
|
||||
}
|
||||
|
@ -598,24 +606,26 @@ public class Disagg6Hr {
|
|||
|
||||
index = -1;
|
||||
|
||||
for (i = 0; i < num_disagg_stations; i++) {
|
||||
for (j = 0; j < num_days_to_qc; j++) {
|
||||
for (i = 0; i < num_disagg_stations; i++)
|
||||
{
|
||||
for (j = 0; j < num_days_to_qc; j++)
|
||||
{
|
||||
index = (j * num_disagg_stations) + i;
|
||||
|
||||
if (values6hr[index].ID
|
||||
.equals(DISAGG_MISSING_STATION_SYMBOL)) {
|
||||
if (values6hr[index].ID.equals(DISAGG_MISSING_STATION_SYMBOL))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (j == 0) {
|
||||
disagg_log_fd.write(String.format("%s \n",
|
||||
disagg_station_6hr[index].hb5));
|
||||
if (j == 0)
|
||||
{
|
||||
disagg_log_fd.write(String.format("%s \n", disagg_station_6hr[index].hb5));
|
||||
}
|
||||
|
||||
for (ii = 0; ii < 4; ii++) {
|
||||
disagg_log_fd.write(String.format(
|
||||
" %d\t%d\t%5.2f\n", j, ii,
|
||||
values6hr[index].value[ii]));
|
||||
for (ii = 0; ii < 4; ii++)
|
||||
{
|
||||
disagg_log_fd.write(String.format(" %d\t%d\t%5.2f\n", j, ii,
|
||||
values6hr[index].value[ii]));
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -672,15 +682,23 @@ public class Disagg6Hr {
|
|||
/* j = num of rows */
|
||||
QPEgrids = new double[6][disagg_maxy][disagg_maxx];
|
||||
|
||||
for (k = 0; k < 6; k++){
|
||||
for (i = 0; i < disagg_maxy; i++){
|
||||
for (j = 0; j < disagg_maxx; j++) {
|
||||
QPEgrids[k][i][j] = -9.0;
|
||||
// fixed for DR 17561
|
||||
for (k = 0; k < 6; k++)
|
||||
{
|
||||
|
||||
for (i = 0; i < disagg_maxy; i++)
|
||||
{
|
||||
|
||||
for (j = 0; j < disagg_maxx; j++)
|
||||
{
|
||||
QPEgrids[k][i][j] = -9.0;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
|
@ -43,6 +43,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Apr 20, 2009 snaples Initial creation
|
||||
* Jul 16, 2015 17561 snaples Updated to fix issues with QPE Grid.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -109,47 +110,45 @@ public class DisaggGridMethod {
|
|||
|
||||
try {
|
||||
|
||||
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
|
||||
for (j = 0; j < num_days_to_qc; j++) {
|
||||
for (j = 0; j < num_days_to_qc; j++)
|
||||
{
|
||||
for (k = 0; k < 4; k++)// loop on 4 6hr periods
|
||||
{
|
||||
/*-------------------------------------------*/
|
||||
/*
|
||||
* if 6hr value is missing, set all resulting 1hr values to
|
||||
* missing
|
||||
*/
|
||||
/*-------------------------------------------*/
|
||||
/*-------------------------------------------*/
|
||||
/* read QPE grids into QPEgrids array */
|
||||
/*-------------------------------------------*/
|
||||
|
||||
|
||||
out.write(String.format("\n -- 6hr Period %d -- \n", k));
|
||||
out.flush();
|
||||
|
||||
/*---------------------------------------------------*/
|
||||
/* read QPE grids from files into QPEgrids array */
|
||||
/* if QPE grids are missing then num_miss set to 99 */
|
||||
/*---------------------------------------------------*/
|
||||
num_miss = getQPEGrids(j, k);
|
||||
|
||||
if (num_miss > 0) {
|
||||
if (num_miss > 0)
|
||||
{
|
||||
/*---------------------------------------------------------*/
|
||||
/* case of missing QPE grid(s) */
|
||||
/* set all 1hr values to missing for all disagg stations */
|
||||
/* and take next 6hr period */
|
||||
/*---------------------------------------------------------*/
|
||||
|
||||
out.write(String
|
||||
.format("%d QPE grids missing -- all 1hr values set to missing\n",
|
||||
num_miss));
|
||||
out.write(String.format("QPE grids missing -- all 1hr values set to missing\n"));
|
||||
out.flush();
|
||||
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (i = 0; i < num_disagg_stations; i++) {
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6
|
||||
* k + l] = -9999;
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
for (i = 0; i < num_disagg_stations; i++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = -9999;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
continue;
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/*------------------------------------------------------------*/
|
||||
/* case of all 6 QPE grids available */
|
||||
|
@ -171,61 +170,73 @@ public class DisaggGridMethod {
|
|||
/* beyond the bounds of the area (array) */
|
||||
/*------------------------------------------------------------*/
|
||||
|
||||
for (i = 0; i < num_disagg_stations; i++) {
|
||||
for (i = 0; i < num_disagg_stations; i++)
|
||||
{
|
||||
index = j * num_disagg_stations + i;
|
||||
|
||||
if (values6hr[index].ID
|
||||
.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL)) {
|
||||
if (values6hr[index].ID.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
hrapx = values6hr[index].hrapx_local;
|
||||
hrapy = values6hr[index].hrapy_local;
|
||||
|
||||
|
||||
total_6hr[i] = 0.0;
|
||||
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
|
||||
total = 0;
|
||||
nbox = 0;
|
||||
|
||||
for (nn = -1; nn < 2; nn++) {
|
||||
for (nn = -1; nn < 2; nn++)
|
||||
{
|
||||
hynn = hrapy + nn;
|
||||
if (hynn >= Disagg6Hr.disagg_maxy) {
|
||||
if (hynn >= Disagg6Hr.disagg_maxy)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (hynn < 0) {
|
||||
|
||||
if (hynn < 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (mm = -1; mm < 2; mm++) {
|
||||
for (mm = -1; mm < 2; mm++)
|
||||
{
|
||||
hxmm = hrapx + mm;
|
||||
if (hxmm >= Disagg6Hr.disagg_maxx) {
|
||||
if (hxmm >= Disagg6Hr.disagg_maxx)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (hxmm < 0) {
|
||||
|
||||
if (hxmm < 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
nbox++;
|
||||
total = total
|
||||
+ QPEgrids[l][hrapy + nn][hrapx
|
||||
+ mm];
|
||||
|
||||
out.write(String.format("QPEgrids[%d][%d][%d] = %5.2f \n",
|
||||
l, hynn, hxmm,
|
||||
QPEgrids[l][hynn][hxmm]));
|
||||
|
||||
total = total + QPEgrids[l][hynn][hxmm];
|
||||
}
|
||||
}
|
||||
|
||||
if (nbox > 0) {
|
||||
if (nbox > 0)
|
||||
{
|
||||
totals_1hr[l][i] = total / 9.;
|
||||
total_6hr[i] = total_6hr[i] + total / 9.;
|
||||
out.write(String.format(
|
||||
" i=%d l=%d avg1hr=%5.2f\n", i,
|
||||
l, totals_1hr[l][i]));
|
||||
} else {
|
||||
out.write(String.format(" i=%d l=%d avg1hr=%5.2f\n", i, l, totals_1hr[l][i]));
|
||||
}
|
||||
else
|
||||
{
|
||||
totals_1hr[l][i] = -9999.;
|
||||
total_6hr[i] = -9999.;
|
||||
out.write(String.format(
|
||||
" i=%d l=%d avg1hr = missing\n",
|
||||
i, l));
|
||||
out.write(String.format(" i=%d l=%d avg1hr = missing\n", i, l));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -252,40 +263,47 @@ public class DisaggGridMethod {
|
|||
/* (future enhancement) */
|
||||
/*----------------------------------------------------------*/
|
||||
|
||||
for (i = 0; i < num_disagg_stations; i++) {
|
||||
for (i = 0; i < num_disagg_stations; i++)
|
||||
{
|
||||
index = j * num_disagg_stations + i;
|
||||
|
||||
if (values6hr[index].ID
|
||||
.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL)) {
|
||||
if (values6hr[index].ID.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
out.write(String.format("%s \n",
|
||||
disagg_station_6hr[i].hb5));
|
||||
out.write(String.format("%s \n", disagg_station_6hr[i].hb5));
|
||||
|
||||
if (values6hr[index].value[k] == -9999.) {
|
||||
for (l = 0; l < 6; l++) {
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6
|
||||
* k + l] = -9999.f;
|
||||
if (values6hr[index].value[k] == -9999.)
|
||||
{
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = -9999.f;
|
||||
|
||||
}
|
||||
|
||||
} else if (values6hr[index].value[k] == 0.0
|
||||
&& total_6hr[i] > 0.0) {
|
||||
}
|
||||
else if (values6hr[index].value[k] == 0.0 && total_6hr[i] > 0.0)
|
||||
{
|
||||
|
||||
if (val6hreq0 == 1) {
|
||||
if (val6hreq0 == 1)
|
||||
{
|
||||
out.write("case of 6hr value = 0.0, sum 1hr values > 0.0 -- ");
|
||||
out.write("ignore 1hr estimates, set all 1hr values = 0.0\n");
|
||||
for (l = 0; l < 6; l++) {
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] = 0.0f;
|
||||
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
out.write("case of 6hr value = 0.0, sum 1hr values > 0.0 -- ");
|
||||
out.write("ignore 6hr value, use 1hr values from grids\n");
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] = (float) (totals_1hr[l][i] * disagg_db_factor);
|
||||
|
||||
|
@ -293,18 +311,23 @@ public class DisaggGridMethod {
|
|||
|
||||
}
|
||||
|
||||
} else if (values6hr[index].value[k] > 0.0
|
||||
&& total_6hr[i] == 0.0) {
|
||||
if (val6hrgt0 == 1) {
|
||||
}
|
||||
else if (values6hr[index].value[k] > 0.0 && total_6hr[i] == 0.0)
|
||||
{
|
||||
if (val6hrgt0 == 1)
|
||||
{
|
||||
out.write("case of 6hr value > 0.0, sum 1hr values = 0.0 -- ");
|
||||
out.write("ignore 6hr gage value, set all 1hr values to 0.0\n");
|
||||
for (l = 0; l < 6; l++) {
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] = 0.0f;
|
||||
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* future enhancement - use nearest neighbor
|
||||
* method to estimate 1hr values
|
||||
|
@ -312,12 +335,15 @@ public class DisaggGridMethod {
|
|||
|
||||
out.write("case of 6hr value > 0.0, sum 1hr values = 0.0 -- ");
|
||||
out.write("ignore 6hr gage value, set all 1hr values to 0.0\n");
|
||||
for (l = 0; l < 6; l++) {
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] = 0.0f;
|
||||
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
/*-------------------------------------------------*/
|
||||
/*
|
||||
* compare 6hr value against sum of six 1hr
|
||||
|
@ -331,23 +357,22 @@ public class DisaggGridMethod {
|
|||
|
||||
diff_1hr = (values6hr[index].value[k] - total_6hr[i]) / 6.;
|
||||
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6
|
||||
* k + l] = (float) ((totals_1hr[l][i] + diff_1hr) * disagg_db_factor);
|
||||
if (disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] < 0.0) {
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l] = 0.0f;
|
||||
if (disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] < 0.0)
|
||||
{
|
||||
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
hour = (k * 6) + l;
|
||||
out.write(String.format(" %d %6.1f\n",
|
||||
hour,
|
||||
disaggValues[j * num_disagg_stations
|
||||
+ i].HourlyValues[6 * k + l]));
|
||||
hour, disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l]));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
|
@ -364,7 +389,6 @@ public class DisaggGridMethod {
|
|||
nt.setTime(end_time_temp);
|
||||
nt.add(Calendar.SECOND, 86400);
|
||||
end_time_temp = nt.getTime();
|
||||
// out.close();
|
||||
|
||||
} /* end loop on for(j=0;j<num_days_to_qc;j++) */
|
||||
|
||||
|
@ -373,7 +397,8 @@ public class DisaggGridMethod {
|
|||
}
|
||||
}
|
||||
|
||||
public int getQPEGrids(int j, int k) {
|
||||
public int getQPEGrids(int j, int k)
|
||||
{
|
||||
|
||||
/*------------------------------------------------*/
|
||||
/* function to read QPE grids for a 6hr period */
|
||||
|
@ -387,13 +412,12 @@ public class DisaggGridMethod {
|
|||
/* - format of date in filename */
|
||||
/* */
|
||||
/* Output: */
|
||||
/* 1) QPE grid values stored in QPEgrids array */
|
||||
/* 2) num_miss = number of missing 1hr QPE grids */
|
||||
/* 1) QPE grid values stored in QPEgrids array */
|
||||
/* 2) num_miss = number of missing QPE grids */
|
||||
/*------------------------------------------------*/
|
||||
|
||||
int i, l, jj, hour, num_miss;
|
||||
int i, ii, l, jj, hour, num_miss;
|
||||
String qpe_filename = "";
|
||||
String qpe_file_fd = "";
|
||||
double factor = 2540.;
|
||||
String qpe_files_dir = Disagg6Hr.qpe_files_dir;
|
||||
String date_form = Disagg6Hr.date_form;
|
||||
|
@ -409,9 +433,9 @@ public class DisaggGridMethod {
|
|||
/* loop on 6 hours in each period */
|
||||
/*----------------------------------------------*/
|
||||
try {
|
||||
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
|
||||
|
||||
for (l = 0; l < 6; l++) {
|
||||
for (l = 0; l < 6; l++)
|
||||
{
|
||||
/*----------------------------------------------*/
|
||||
/* create file name */
|
||||
/* filenames are of the form: */
|
||||
|
@ -420,17 +444,20 @@ public class DisaggGridMethod {
|
|||
/*----------------------------------------------*/
|
||||
|
||||
hour = 12 + (k * 6) + l + 1;
|
||||
if (hour == 24) {
|
||||
if (hour == 24)
|
||||
{
|
||||
hour = 0;
|
||||
jj = j;
|
||||
|
||||
} else if (hour > 23) {
|
||||
} else if (hour > 23)
|
||||
{
|
||||
hour = ((k - 2) * 6) + l + 1;
|
||||
jj = j;
|
||||
|
||||
}
|
||||
|
||||
if (date_form.charAt(0) == 'm') {
|
||||
if (date_form.charAt(0) == 'm')
|
||||
{
|
||||
qpe_filename = String.format(
|
||||
"%s/xmrg%c%c%c%c%c%c%c%c%02dz", qpe_files_dir,
|
||||
obsdate[jj].charAt(5), obsdate[jj].charAt(6),
|
||||
|
@ -438,7 +465,9 @@ public class DisaggGridMethod {
|
|||
obsdate[jj].charAt(0), obsdate[jj].charAt(1),
|
||||
obsdate[jj].charAt(2), obsdate[jj].charAt(3), hour);
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
qpe_filename = String.format(
|
||||
"%s/xmrg%c%c%c%c%c%c%c%c%02dz", qpe_files_dir,
|
||||
obsdate[jj].charAt(0), obsdate[jj].charAt(1),
|
||||
|
@ -452,66 +481,84 @@ public class DisaggGridMethod {
|
|||
/* attempt to open the file */
|
||||
/*----------------------------*/
|
||||
|
||||
out.write(String.format("attempting to open file %s\n",
|
||||
qpe_filename));
|
||||
out.write(String.format("attempting to open file %s\n", qpe_filename));
|
||||
out.flush();
|
||||
|
||||
in = new BufferedReader(new FileReader(qpe_file_fd));
|
||||
if (!in.ready()) {
|
||||
out.write(" could not open file\n");
|
||||
out.flush();
|
||||
num_miss++;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------*/
|
||||
/* read QPE file */
|
||||
/* format of file is xmrg */
|
||||
/* store values in QPEgrids array */
|
||||
/*--------------------------------------*/
|
||||
|
||||
int xor = (int) MPEDataManager.getInstance().getHRAPExtent()
|
||||
.getMinX();
|
||||
int yor = (int) MPEDataManager.getInstance().getHRAPExtent()
|
||||
.getMinY();
|
||||
XmrgFile xmFile = new XmrgFile(qpe_filename);
|
||||
Rectangle rec = new Rectangle();
|
||||
rec.setRect(xor, yor, disagg_maxx, disagg_maxy);
|
||||
short[][] tempg = xmFile.getData(rec);
|
||||
XmrgFile xmrgFile = new XmrgFile(qpe_filename);
|
||||
|
||||
if ( xmrgFile.getFile().length() > 0)
|
||||
{
|
||||
xmrgFile.load();
|
||||
|
||||
if (tempg.length <= 0) {
|
||||
out.write(" error reading file\n");
|
||||
Rectangle hrapExtent = xmrgFile.getHrapExtent();
|
||||
|
||||
short[][] hourlyShortData = xmrgFile.getData(hrapExtent);
|
||||
|
||||
|
||||
int maxCols = hrapExtent.width;
|
||||
int maxRows = hrapExtent.height;
|
||||
|
||||
double value = 0.0;
|
||||
|
||||
for (int row = 0; row < maxRows; row++)
|
||||
{
|
||||
int rowValue = maxRows - row - 1;
|
||||
|
||||
for (int col = 0; col < maxCols; col++)
|
||||
{
|
||||
|
||||
short shortValue = hourlyShortData[row][col];
|
||||
|
||||
if (shortValue >= 0)
|
||||
{
|
||||
//convert from hundredths of MM to inches
|
||||
value = ( ((double) shortValue) / ( 25.4 * 100.0) );
|
||||
|
||||
}
|
||||
else //keep special MISSING value
|
||||
{
|
||||
value = shortValue;
|
||||
}
|
||||
|
||||
QPEgrids[l][rowValue][col] = value;
|
||||
|
||||
//if (value > 0.99)
|
||||
//{
|
||||
// out.write(String.format(" in getQPEGrids -- QPEgrids[l][%d][%d] = %5.2f \n", rowValue, col, QPEgrids[l][rowValue][col]));
|
||||
//}
|
||||
|
||||
} //end for col
|
||||
} //end for row
|
||||
|
||||
}//end if length > 0
|
||||
else
|
||||
{
|
||||
out.write(" error reading file\n" + qpe_filename + "\n" );
|
||||
num_miss++;
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} // end for (l = 0; l < 6; l++)
|
||||
|
||||
for (i = 0; i < disagg_maxy; i++) {
|
||||
for (j = 0; j < disagg_maxx; j++) {
|
||||
QPEgrids[l][i][j] = tempg[i][j] * 1.0 / factor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in.close();
|
||||
|
||||
return num_miss;
|
||||
} catch (IOException e) {
|
||||
return 0;
|
||||
} //end try
|
||||
catch (IOException e)
|
||||
{
|
||||
return 99;
|
||||
|
||||
}
|
||||
// finally {
|
||||
// try {
|
||||
// // if (out != null) {
|
||||
// // out.close();
|
||||
//
|
||||
// }
|
||||
//
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
//
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,8 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 31, 2009 snaples Initial creation
|
||||
* Dec 22, 2014 #16952 lbousaidi fixed the eratic estimate values.
|
||||
* Dec 22, 2014 #16952 lbousaidi fixed the eratic estimate values.
|
||||
* Jun 26, 2015 17397 snaples fixed another instance of erratic estimates.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -208,8 +209,8 @@ public class EstMissingStations {
|
|||
padj = pdata[j].stn[i].frain[h].data;
|
||||
}
|
||||
|
||||
fdist = 1 / (testdist + fdist);
|
||||
fdata = padj / (testdist + fdata);
|
||||
fdist += 1 / testdist;
|
||||
fdata += padj / testdist;
|
||||
|
||||
l++;
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 5, 2009 snaples Initial creation
|
||||
* Nov 26, 2014 16889 snaples Updated to fix SNOTEL display
|
||||
* Jun 30, 2015 17229 snaples Fixed error in parsing snow water value.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -164,7 +165,7 @@ public class ReadSnowData {
|
|||
}
|
||||
|
||||
else {
|
||||
String qbuf = buf.substring(0, buf.indexOf('.')+3);
|
||||
String qbuf = buf.substring(0, buf.indexOf('.')+2);
|
||||
|
||||
dqc.pdata[i].stn[j].srain[kk].data = Float.parseFloat(qbuf);
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx2560M</vmArgsWin>
|
||||
</launcherArgs>
|
||||
|
||||
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
|
||||
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
|
||||
|
||||
<splash
|
||||
location="com.raytheon.viz.ui.personalities.awips"
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<vmArgsWin>-Dfile.encoding=UTF-8</vmArgsWin>
|
||||
</launcherArgs>
|
||||
|
||||
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
|
||||
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
|
||||
|
||||
<splash
|
||||
location="com.raytheon.viz.ui.personalities.awips"
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 622 B |
Before Width: | Height: | Size: 842 B After Width: | Height: | Size: 842 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
@ -59,7 +59,7 @@
|
|||
</property>
|
||||
<property
|
||||
name="windowImages"
|
||||
value="platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_16x16.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_32x32.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_48x48.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_64x64.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_128x128.png">
|
||||
value="icons/cave_16x16.png,icons/cave_32x32.png,icons/cave_48x48.png,icons/cave_64x64.png,icons/cave_128x128.png">
|
||||
</property>
|
||||
</product>
|
||||
</extension>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx2560M</vmArgsWin>
|
||||
</launcherArgs>
|
||||
|
||||
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
|
||||
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
|
||||
|
||||
<splash
|
||||
location="com.raytheon.viz.ui.personalities.awips"
|
||||
|
|
|
@ -36,12 +36,12 @@ import org.eclipse.swt.widgets.Event;
|
|||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct;
|
||||
import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct.ProductType;
|
||||
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
|
||||
/**
|
||||
|
@ -476,9 +476,8 @@ public class NewAlarmDlg extends CaveSWTDialog {
|
|||
buildAlarmAlertObject();
|
||||
shell.dispose();
|
||||
} else {
|
||||
MessageBox m = new MessageBox(getShell(), SWT.ERROR);
|
||||
m.setMessage("ProductID must contain an entry.");
|
||||
m.open();
|
||||
TextWSMessageBox.open(getShell(), "",
|
||||
"ProductID must contain an entry.");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -47,7 +47,6 @@ import org.eclipse.swt.widgets.Combo;
|
|||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.text.AfosWmoIdDataContainer;
|
||||
|
@ -665,14 +664,14 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements
|
|||
// CaveSWTDialog in a similar manner to
|
||||
// WarnGenConfirmationDlg. Better solution if possible
|
||||
// change AlermAlertBell so modal MessagBox can be used..
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
|
||||
| SWT.NO);
|
||||
mb.setMessage("Product Designator " + wsfoIdTF.getText()
|
||||
+ prodCatTF.getText() + prodDesignatorTF.getText()
|
||||
+ " is not in the list of valid products. Use it anyway?");
|
||||
if (mb.open() == SWT.NO) {
|
||||
return;
|
||||
}
|
||||
String message = "Product Designator " + wsfoIdTF.getText()
|
||||
+ prodCatTF.getText() + prodDesignatorTF.getText()
|
||||
+ " is not in the list of valid products. Use it anyway?";
|
||||
int response = TextWSMessageBox.open(shell, "", message,
|
||||
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
|
||||
if (response == SWT.NO) {
|
||||
return;
|
||||
}
|
||||
parentEditor.enableSend(false);
|
||||
sendEnabled = false;
|
||||
if(isAfosPilComplete()) {
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.eclipse.swt.widgets.Button;
|
|||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
|
@ -307,10 +306,8 @@ public class SearchReplaceDlg extends CaveSWTDialog {
|
|||
checkForUpdates();
|
||||
int searchTextLength = searchForTF.getText().length();
|
||||
if (searchTextLength == 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Search Warning");
|
||||
mb.setMessage("You do not have text in the 'Search For' field.");
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, "Search Warning",
|
||||
"You do not have text in the 'Search For' field.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -319,12 +316,10 @@ public class SearchReplaceDlg extends CaveSWTDialog {
|
|||
.toUpperCase(), searchOffset++);
|
||||
|
||||
if (foundIndex == -1) {
|
||||
MessageBox searchTopMB = new MessageBox(shell, SWT.ICON_ERROR
|
||||
int result = TextWSMessageBox.open(shell, "Warning", "\""
|
||||
+ searchForTF.getText() + "\"" + " not found.\n"
|
||||
+ "Start from the top of the product?", SWT.ICON_ERROR
|
||||
| SWT.YES | SWT.NO);
|
||||
searchTopMB.setText("Warning");
|
||||
searchTopMB.setMessage("\"" + searchForTF.getText() + "\""
|
||||
+ " not found.\n" + "Start from the top of the product?");
|
||||
int result = searchTopMB.open();
|
||||
|
||||
if (result == SWT.NO) {
|
||||
foundIndex = tmpIndex;
|
||||
|
@ -337,11 +332,8 @@ public class SearchReplaceDlg extends CaveSWTDialog {
|
|||
.toUpperCase(), searchOffset++);
|
||||
|
||||
if (foundIndex == -1) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Warning");
|
||||
mb.setMessage("\"" + searchForTF.getText() + "\""
|
||||
+ " not found.");
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, "Warning",
|
||||
"\"" + searchForTF.getText() + "\"" + " not found.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -358,10 +350,9 @@ public class SearchReplaceDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private boolean replaceText() {
|
||||
if (textEditor.getSelectionCount() == 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
|
||||
mb.setText("Sorry!");
|
||||
mb.setMessage("Please select 'search' before 'replace.'");
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, "Sorry!",
|
||||
"Please select 'search' before 'replace.'",
|
||||
SWT.ICON_INFORMATION | SWT.OK);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ import org.eclipse.swt.widgets.Button;
|
|||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
|
@ -212,10 +211,7 @@ public class TextCharWrapDlg extends CaveSWTDialog {
|
|||
}
|
||||
|
||||
private void userInformation(String information) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Sorry!");
|
||||
mb.setMessage(information);
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, "Sorry!", information);
|
||||
}
|
||||
|
||||
private boolean isColWidthValid() {
|
||||
|
|
|
@ -106,7 +106,6 @@ import org.eclipse.swt.widgets.Layout;
|
|||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.MenuItem;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
@ -347,8 +346,9 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox;
|
|||
* 15Feb2015 4001 dgilling Ensure all fields are set in SendPracticeProductRequest.
|
||||
* 05Mar2015 RM 15025 kshrestha Fix to maintain the headers that they are saved with
|
||||
* 10Mar2015 RM 14866 kshrestha Disable QC GUI pop up for TextWS
|
||||
* 06Apr2015 RM14968 mgamazaychikov Fix formatting for pathcast section
|
||||
* 6Apr2015 RM14968 mgamazaychikov Fix formatting for pathcast section
|
||||
* 15Jun2015 4441 randerso Unconditionally convert text to upper case for QC
|
||||
* 8Jul2015 DR 15044 dhuffman Implemented tabbing and tabs to spaces.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -3839,10 +3839,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
|
||||
});
|
||||
|
||||
// TODO - Use this to convert tabs to spaces and extra spaces in the
|
||||
// middle of a line to a single space?
|
||||
// textEditor.addVerifyListener(new VerifyListener() {
|
||||
//
|
||||
// @Override
|
||||
// public void verifyText(VerifyEvent e) {
|
||||
// // TODO Auto-generated method stub
|
||||
|
@ -3969,7 +3965,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
}
|
||||
isTemplateOverwriteModeSet = true;
|
||||
}
|
||||
|
||||
event.doit = false;
|
||||
int currentPos = textEditor.getCaretOffset();
|
||||
String textUpToCaret = textEditor.getText().substring(
|
||||
|
@ -3982,6 +3977,24 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
|| ((event.keyCode >= 48) && (event.keyCode <= 57))) {
|
||||
event.doit = true;
|
||||
}
|
||||
} else { // (!AFOSParser.isTemplate)
|
||||
if (event.keyCode == SWT.TAB) {
|
||||
int lineStartOffset = textEditor
|
||||
.getOffsetAtLine(textEditor
|
||||
.getLineAtOffset(textEditor
|
||||
.getCaretOffset()));
|
||||
int caretOffsetOnLine = textEditor.getCaretOffset()
|
||||
- lineStartOffset;
|
||||
int numberOfSpaces = (textEditor.getTabs() - caretOffsetOnLine
|
||||
% textEditor.getTabs());
|
||||
String spaces = "";
|
||||
for (int x = 0; x < numberOfSpaces; x++)
|
||||
spaces += ' ';
|
||||
textEditor.insert(spaces);
|
||||
textEditor.setCaretOffset(textEditor.getCaretOffset()
|
||||
+ numberOfSpaces);
|
||||
event.doit = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -4554,11 +4567,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
*/
|
||||
private void cutText() {
|
||||
if (textEditor.getSelectionCount() == 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Cut Error");
|
||||
mb.setMessage("You must first select text to\n"
|
||||
userInformation("Cut Error", "You must first select text to\n"
|
||||
+ "cut (by dragging, for example).");
|
||||
mb.open();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -4573,11 +4583,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
*/
|
||||
private void copyText() {
|
||||
if (textEditor.getSelectionCount() == 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Copy Error");
|
||||
mb.setMessage("You must first select text to\n"
|
||||
userInformation("Copy Error", "You must first select text to\n"
|
||||
+ "copy (by dragging, for example).");
|
||||
mb.open();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -4601,18 +4608,16 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
*/
|
||||
private void printSelectedText() {
|
||||
if (textEditor.getSelectionCount() == 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Print Selection Error");
|
||||
mb.setMessage("You must first select text to\n"
|
||||
+ "print (by dragging, for example).");
|
||||
mb.open();
|
||||
userInformation("Print Selection Error",
|
||||
"You must first select text to\n"
|
||||
+ "print (by dragging, for example).");
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
|
||||
| SWT.NO);
|
||||
mb.setMessage("Do you want to print the current selection?");
|
||||
if (mb.open() == SWT.YES) {
|
||||
int response = TextWSMessageBox.open(shell, "",
|
||||
"Do you want to print the current selection?",
|
||||
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
|
||||
if (response == SWT.YES) {
|
||||
String tmpText = textEditor.getText();
|
||||
Point point = textEditor.getSelection();
|
||||
FontData fontData = textEditor.getFont().getFontData()[0];
|
||||
|
@ -4740,8 +4745,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
.lastIndexOf(File.separator) + 1);
|
||||
statusBarLabel.setText("Attachment: " + fn);
|
||||
} else {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR
|
||||
| SWT.OK);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (!file.exists()) {
|
||||
sb.append("File does NOT exist!\n\n");
|
||||
|
@ -4750,9 +4753,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
} else {
|
||||
sb.append("File is NOT a text file!\n\n");
|
||||
}
|
||||
mb.setText("Notice");
|
||||
mb.setMessage(sb.toString() + fn);
|
||||
mb.open();
|
||||
userInformation(sb.toString() + fn);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM, "Error attaching file",
|
||||
|
@ -4871,10 +4872,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
// when functionality has not been implemented...
|
||||
//
|
||||
private void notImplementedYet(String information) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Notice");
|
||||
mb.setMessage("Functionality not implemented yet:\n\n" + information);
|
||||
mb.open();
|
||||
userInformation("Functionality not implemented yet:\n\n" + information);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4884,10 +4882,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
* @param information
|
||||
*/
|
||||
private void userInformation(String title, String information) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText(title);
|
||||
mb.setMessage(information);
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, title, information);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4946,10 +4941,9 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
int startIndex = "Attachment:".length() + 1;
|
||||
sb.append(statusBarLabel.getText().substring(startIndex));
|
||||
sb.append(") will be transmitted with this message.");
|
||||
MessageBox mb = new MessageBox(shell, SWT.OK | SWT.CANCEL);
|
||||
mb.setText("Notice");
|
||||
mb.setMessage(sb.toString());
|
||||
if (SWT.OK != mb.open()) {
|
||||
int response = TextWSMessageBox.open(shell, "Notice", sb.toString(),
|
||||
SWT.OK | SWT.CANCEL);
|
||||
if (SWT.OK != response) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
package com.raytheon.viz.texteditor.dialogs;
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
/**
|
||||
* A message box that is PRIMARY_MODAL. The SWT MessageBox class is
|
||||
* APPLICATION_MODAL so a message box for a given text window will interfere
|
||||
* with other text windows. (Namely, the WarnGen text window.) This should be
|
||||
* replaced with com.raytheon.viz.ui.dialogs.SWTMessageBox once the code has
|
||||
* been refactored to not depend on the blocking behavior of open().
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ---------- ---------- ----------- --------------------------
|
||||
* 2015-07-22 ASM #17534 D. Friedman Initial Creation.
|
||||
* </pre>
|
||||
*
|
||||
* @author David Friedman
|
||||
* @version 1
|
||||
*/
|
||||
public class TextWSMessageBox extends Dialog {
|
||||
String title;
|
||||
String information;
|
||||
int iconAndButtonStyle;
|
||||
|
||||
public TextWSMessageBox(Shell parentShell, String title,
|
||||
String information, int iconAndButtonStyle) {
|
||||
super(parentShell);
|
||||
this.title = title;
|
||||
this.information = information;
|
||||
this.iconAndButtonStyle = iconAndButtonStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setShellStyle(int newShellStyle) {
|
||||
final int mask = SWT.SYSTEM_MODAL | SWT.APPLICATION_MODAL
|
||||
| SWT.PRIMARY_MODAL;
|
||||
super.setShellStyle((newShellStyle & ~mask) | SWT.PRIMARY_MODAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureShell(Shell newShell) {
|
||||
super.configureShell(newShell);
|
||||
newShell.setText(title);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createButtonsForButtonBar(Composite parent) {
|
||||
if ((iconAndButtonStyle & SWT.YES) != 0) {
|
||||
createButton(parent, IDialogConstants.YES_ID,
|
||||
IDialogConstants.YES_LABEL, true);
|
||||
}
|
||||
if ((iconAndButtonStyle & SWT.NO) != 0) {
|
||||
createButton(parent, IDialogConstants.NO_ID,
|
||||
IDialogConstants.NO_LABEL, true);
|
||||
}
|
||||
if ((iconAndButtonStyle & SWT.OK) != 0) {
|
||||
createButton(parent, IDialogConstants.OK_ID,
|
||||
IDialogConstants.OK_LABEL, true);
|
||||
}
|
||||
if ((iconAndButtonStyle & SWT.CANCEL) != 0) {
|
||||
createButton(parent, IDialogConstants.CANCEL_ID,
|
||||
IDialogConstants.CANCEL_LABEL, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
Composite composite = (Composite) super.createDialogArea(parent);
|
||||
Layout layout = composite.getLayout();
|
||||
if (layout instanceof GridLayout) {
|
||||
((GridLayout) layout).numColumns = 2;
|
||||
}
|
||||
Label l;
|
||||
l = new Label(composite, SWT.LEFT);
|
||||
int mask = SWT.ICON_ERROR | SWT.ICON_INFORMATION | SWT.ICON_QUESTION
|
||||
| SWT.ICON_WARNING;
|
||||
int icon = iconAndButtonStyle & mask;
|
||||
if (icon == 0) {
|
||||
icon = SWT.ICON_INFORMATION;
|
||||
}
|
||||
l.setImage(l.getDisplay().getSystemImage(icon));
|
||||
l = new Label(composite, SWT.LEFT);
|
||||
l.setText(information);
|
||||
return composite;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buttonPressed(int buttonId) {
|
||||
int returnCode;
|
||||
switch (buttonId) {
|
||||
case IDialogConstants.OK_ID:
|
||||
returnCode = SWT.OK;
|
||||
break;
|
||||
case IDialogConstants.CANCEL_ID:
|
||||
returnCode = SWT.CANCEL;
|
||||
break;
|
||||
case IDialogConstants.YES_ID:
|
||||
returnCode = SWT.YES;
|
||||
break;
|
||||
case IDialogConstants.NO_ID:
|
||||
returnCode = SWT.NO;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
setReturnCode(returnCode);
|
||||
close();
|
||||
}
|
||||
|
||||
public static int open(Shell parentShell, String title, String message) {
|
||||
return open(parentShell, title, message, SWT.ICON_ERROR | SWT.OK);
|
||||
}
|
||||
|
||||
public static int open(Shell parentShell, String title, String message,
|
||||
int iconAndButtonStyle) {
|
||||
TextWSMessageBox mb = new TextWSMessageBox(parentShell, title, message,
|
||||
iconAndButtonStyle);
|
||||
return mb.open();
|
||||
}
|
||||
}
|
|
@ -41,13 +41,13 @@ import org.eclipse.swt.widgets.FileDialog;
|
|||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.MenuItem;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.viz.texteditor.dialogs.SearchReplaceDlg;
|
||||
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
|
||||
import com.raytheon.viz.texteditor.scripting.dialogs.HelpRequestDlg.EnumHelpTypes;
|
||||
import com.raytheon.viz.texteditor.scripting.dialogs.util.FileUtilities;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
|
@ -896,12 +896,10 @@ public class ScriptEditorDialog extends CaveSWTDialog implements IScriptEditor {
|
|||
private void dirtyFileHelper(String condition) {
|
||||
boolean newFile = FILE_DEFAULT.equalsIgnoreCase(this.fileName);
|
||||
if (scriptEditorDirty || (newFile && !scriptEditor.getText().isEmpty())) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
|
||||
| SWT.NO);
|
||||
mb.setText("File Open");
|
||||
mb.setMessage("Save the changes to document\n\"" + this.fileName
|
||||
+ "\" " + condition + "?");
|
||||
int response = mb.open();
|
||||
int response = TextWSMessageBox.open(shell, "File Open",
|
||||
"Save the changes to document\n\"" + this.fileName + "\" "
|
||||
+ condition + "?",
|
||||
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
|
||||
if (response == SWT.YES) {
|
||||
handleFileSave(newFile);
|
||||
}
|
||||
|
|
|
@ -30,13 +30,13 @@ import org.eclipse.swt.layout.GridData;
|
|||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
|
||||
import com.raytheon.uf.common.python.PythonLocalizationPathBuilder;
|
||||
import com.raytheon.viz.texteditor.command.ICommand;
|
||||
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
|
||||
|
||||
/**
|
||||
* Text Editor Utilities.
|
||||
|
@ -172,9 +172,6 @@ public class TextEditorUtil {
|
|||
}
|
||||
|
||||
public static void userInformation(Shell shell, String information) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Notice");
|
||||
mb.setMessage(information);
|
||||
mb.open();
|
||||
TextWSMessageBox.open(shell, "Notice", information);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<!-- <capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/> -->
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -244,7 +244,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -79,7 +79,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -152,7 +152,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -227,7 +227,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<perspectiveProperty xsi:type="d2dLoadProperties" timeMatchBasis="true" loadMode="VALID_TIME_SEQ"/>
|
||||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters colorMapName="SITE/ARX/Radar/Ref/ARX-Radar-Ref X-Section">
|
||||
<persisted/>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</capability>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="green"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
|
||||
|
@ -95,7 +95,7 @@
|
|||
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="coral"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
|
||||
|
@ -136,7 +136,7 @@
|
|||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="cyan"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
|
||||
|
@ -174,7 +174,7 @@
|
|||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="burlywood"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
|
||||
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
|
||||
|
|
|
@ -318,7 +318,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -353,7 +353,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -388,7 +388,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -423,7 +423,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR">
|
||||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -85,7 +85,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -163,7 +163,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -232,7 +232,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -221,7 +221,7 @@
|
|||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters colorMapName="HRRR Reflectivity"/>
|
||||
</capability>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -57,7 +57,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -530,7 +530,7 @@ ModFamD| |N|Winter: Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -562,7 +562,7 @@ ModFamD| |N|Winter: Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -89,7 +89,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -197,7 +197,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -239,7 +239,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -380,7 +380,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -448,7 +448,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -55,7 +55,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -108,7 +108,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -148,7 +148,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -186,7 +186,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -224,7 +224,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -262,7 +262,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -306,7 +306,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -341,7 +341,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -356,7 +356,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -394,7 +394,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -434,7 +434,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -472,7 +472,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -510,7 +510,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -548,7 +548,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -592,7 +592,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -627,7 +627,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -642,7 +642,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -680,7 +680,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -720,7 +720,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -758,7 +758,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -796,7 +796,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -834,7 +834,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -878,7 +878,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -913,7 +913,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -928,7 +928,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -966,7 +966,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -1006,7 +1006,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -1044,7 +1044,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -1082,7 +1082,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -1120,7 +1120,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="blendedCapability"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -128,7 +128,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -205,7 +205,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -353,7 +353,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -387,7 +387,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -529,7 +529,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -28,7 +28,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -63,7 +63,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
|
@ -96,7 +96,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
|
@ -129,7 +129,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
|
@ -507,7 +507,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -692,7 +692,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -982,7 +982,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -26,7 +26,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -61,7 +61,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
|
@ -94,7 +94,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
|
@ -127,7 +127,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
||||
|
@ -505,7 +505,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -690,7 +690,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -977,7 +977,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -106,7 +106,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -373,7 +373,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -640,7 +640,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
@ -909,7 +909,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
|
|
|
@ -31,7 +31,7 @@ ModFamV | | N|Conv: Severe Type Family| | OTHER| | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -66,7 +66,7 @@ ModFamV | | N|Conv: Severe Type Family| | OTHER| | \
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -64,7 +64,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR">
|
||||
<capabilities>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0" />
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -83,7 +83,7 @@
|
|||
displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0"
|
||||
interpolationState="true" brightness="1.0" contrast="1.0" />
|
||||
interpolationState="true" brightness="0.5" contrast="1.0" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -165,7 +165,7 @@
|
|||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0" />
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
@ -209,7 +209,7 @@
|
|||
displayType="IMAGE" loadWithoutData="false">
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0"
|
||||
interpolationState="true" brightness="1.0" contrast="1.0" />
|
||||
interpolationState="true" brightness="0.5" contrast="1.0" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<resourceType>PLAN_VIEW</resourceType>
|
||||
<perspectiveProperty xsi:type="d2dLoadProperties" timeMatchBasis="true" loadMode="VALID_TIME_SEQ"/>
|
||||
<capabilities>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="white"/>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
</capabilities>
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
</colorMapParameters>
|
||||
</capability>
|
||||
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
|
||||
<capability xsi:type="magnificationCapability" magnification="1.0"/>
|
||||
<capability xsi:type="colorableCapability" colorAsString="violet"/>
|
||||
<capability xsi:type="outlineCapability" lineStyle="DEFAULT" outlineOn="true" outlineWidth="1"/>
|
||||
|
|
|
@ -6,6 +6,8 @@ import java.util.Arrays;
|
|||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -56,6 +58,7 @@ import com.vividsolutions.jts.geom.Point;
|
|||
* Mar 5, 2013 1600 jsanchez Used AdjustAngle instead of AbstractStormTrackResource to handle angle adjusting.
|
||||
* Mar 26, 2013 1819 jsanchez Allowed points to be not be based on point source inclusion constraints.
|
||||
* May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging.
|
||||
* Jul 9, 2015 ASM #16769 mgamazaychikov Add filtering out pathcast data features based on the inclusion criteria.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -71,7 +74,7 @@ abstract public class AbstractDbSourceDataAdaptor {
|
|||
|
||||
private static final String GEOM_FIELD = "the_geom";
|
||||
|
||||
private static UnitConverter meterSqToKmSq = SI.METRE.times(SI.METRE)
|
||||
protected static UnitConverter meterSqToKmSq = SI.METRE.times(SI.METRE)
|
||||
.getConverterTo(SI.KILOMETRE.times(SI.KILOMETRE));
|
||||
|
||||
protected Set<String> undatabasedSortableFields = new HashSet<String>(
|
||||
|
@ -240,7 +243,7 @@ abstract public class AbstractDbSourceDataAdaptor {
|
|||
* @param geom
|
||||
* @return
|
||||
*/
|
||||
private boolean includeArea(PointSourceConfiguration pointConfig,
|
||||
protected boolean includeArea(PointSourceConfiguration pointConfig,
|
||||
Geometry geom) {
|
||||
String inclusionAndOr = pointConfig.getInclusionAndOr();
|
||||
double inclusionPercent = pointConfig.getInclusionPercent();
|
||||
|
@ -296,6 +299,18 @@ abstract public class AbstractDbSourceDataAdaptor {
|
|||
}
|
||||
}
|
||||
|
||||
// filter out features based on the inclusion criteria
|
||||
List<SpatialQueryResult> ptFeaturesList = new LinkedList<SpatialQueryResult>(
|
||||
Arrays.asList(this.ptFeatures));
|
||||
Iterator<SpatialQueryResult> iter = ptFeaturesList.iterator();
|
||||
while (iter.hasNext()) {
|
||||
SpatialQueryResult pf = iter.next();
|
||||
if (!includeArea(pathcastConfiguration, pf.geometry)) {
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
SpatialQueryResult[] ptFeaturesFiltered = ptFeaturesList.toArray(new SpatialQueryResult[ptFeaturesList.size()]);
|
||||
|
||||
Geometry localPCGeom = null;
|
||||
if (pcGeom != null) {
|
||||
localPCGeom = JTS.transform(pcGeom, latLonToLocal);
|
||||
|
@ -303,8 +318,8 @@ abstract public class AbstractDbSourceDataAdaptor {
|
|||
|
||||
// Find closest points
|
||||
List<ClosestPoint> points = new ArrayList<ClosestPoint>(
|
||||
ptFeatures.length);
|
||||
for (SpatialQueryResult pointRslt : ptFeatures) {
|
||||
ptFeaturesFiltered.length);
|
||||
for (SpatialQueryResult pointRslt : ptFeaturesFiltered) {
|
||||
Geometry localPt = (Geometry) pointRslt.attributes
|
||||
.get(transformedKey);
|
||||
double minDist = Double.MAX_VALUE;
|
||||
|
|
|
@ -90,6 +90,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
|||
* Apr 28, 2015 RODO #4027 randerso Expunged Calendar from ActiveTableRecord
|
||||
* May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging.
|
||||
* Jun 04, 2015 RODO #4522 randerso Added proper primary key to ActiveTableRecord
|
||||
* Jul 16, 2015 ASM #17741 D. Friedman Use acceptable timestamp format in query
|
||||
* </pre>
|
||||
*
|
||||
* @author jsanchez
|
||||
|
@ -280,10 +281,10 @@ public class WatchUtil {
|
|||
DbQueryRequest request = new DbQueryRequest();
|
||||
request.setEntityClass(entityClass);
|
||||
request.addConstraint(START_TIME_FIELD,
|
||||
new RequestConstraint(TimeUtil.formatDate(startConstraintTime),
|
||||
new RequestConstraint(TimeUtil.formatToSqlTimestamp(startConstraintTime),
|
||||
ConstraintType.LESS_THAN_EQUALS));
|
||||
request.addConstraint(END_TIME_FIELD,
|
||||
new RequestConstraint(TimeUtil.formatDate(simulatedTime),
|
||||
new RequestConstraint(TimeUtil.formatToSqlTimestamp(simulatedTime),
|
||||
ConstraintType.GREATER_THAN_EQUALS));
|
||||
request.addConstraint("phensig",
|
||||
new RequestConstraint(phenSig.toString(), ConstraintType.IN));
|
||||
|
|
|
@ -58,6 +58,8 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
|||
* May 1, 2014 DR 16627 Qinglu Lin Added hasStateAbbrev(), isOtherType(), lockListOfNames(), and updated lock().
|
||||
* May 13, 2014 DR 17177 Qinglu Lin Updated secondBullet().
|
||||
* May 29, 2015 4442 randerso Fixed WarnGen text locking to work with mixed case
|
||||
* Jul 10, 2015 DR 17314 Qinglu Lin Updated firstBullet().
|
||||
* Jul 17, 2015 DR 17314 D. Friedman Fix string replacement in firstBullet().
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -213,9 +215,15 @@ abstract public class AbstractLockingBehavior {
|
|||
// should not be locked. For some reason, this differs from followups as
|
||||
// stated in DR 15110. Need verification from NWS. This is a variance?
|
||||
if (!isMarineProduct()) {
|
||||
StringBuilder newText = new StringBuilder(firstBulletText.length() + 1024);
|
||||
Matcher m = null;
|
||||
for (String line : firstBulletText.split("\\n")) {
|
||||
|
||||
boolean first = true;
|
||||
for (String line : firstBulletText.split("\\n", -1)) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
newText.append('\n');
|
||||
}
|
||||
if (immediateCausePtrn != null) {
|
||||
// immediate cause
|
||||
m = immediateCausePtrn.matcher(line);
|
||||
|
@ -223,17 +231,23 @@ abstract public class AbstractLockingBehavior {
|
|||
String i = line.replace(line,
|
||||
WarnGenPatterns.LOCK_START + line
|
||||
+ WarnGenPatterns.LOCK_END);
|
||||
firstBulletText = firstBulletText.replace(line, i);
|
||||
newText.append(i);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
int endIndex = line.indexOf(" IN ");
|
||||
String textForSearch = null;
|
||||
if (endIndex == -1)
|
||||
textForSearch = line;
|
||||
else
|
||||
textForSearch = line.substring(0, endIndex);
|
||||
for (AffectedAreas affectedArea : affectedAreas) {
|
||||
String name = affectedArea.getName();
|
||||
String areaNotation = affectedArea.getAreaNotation();
|
||||
String parentRegion = affectedArea.getParentRegion();
|
||||
if ((name != null) && (name.trim().length() != 0)
|
||||
&& line.contains(name)) {
|
||||
&& textForSearch.contains(name)) {
|
||||
String t = line;
|
||||
if (!hasBeenLocked(line, name)) {
|
||||
t = t.replace(name, WarnGenPatterns.LOCK_START
|
||||
|
@ -261,18 +275,20 @@ abstract public class AbstractLockingBehavior {
|
|||
}
|
||||
|
||||
if (validate(t)) {
|
||||
firstBulletText = firstBulletText.replace(line, t);
|
||||
line = t;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
newText.append(line);
|
||||
}
|
||||
firstBulletText = newText.toString();
|
||||
}
|
||||
|
||||
Matcher m = WarnGenPatterns.firstBulletPtrn.matcher(firstBulletText);
|
||||
firstBulletText = m.replaceAll(WarnGenPatterns.REPLACEMENT);
|
||||
|
||||
this.text = text.replace(text.substring(start, end), firstBulletText);
|
||||
this.text = new StringBuffer(text).replace(start, end, firstBulletText).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,11 +9,15 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.uf.viz.core,
|
||||
com.raytheon.viz.ui,
|
||||
com.raytheon.viz.hydrocommon;bundle-version="1.10.13",
|
||||
org.postgres;bundle-version="9.3.5"
|
||||
org.postgres;bundle-version="9.3.5",
|
||||
com.raytheon.uf.viz.application;bundle-version="1.14.0",
|
||||
com.raytheon.uf.viz.personalities.cave;bundle-version="1.15.0",
|
||||
com.raytheon.viz.ui.personalities.awips;bundle-version="1.12.1174"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: com.raytheon.uf.common.ohd,
|
||||
com.raytheon.uf.common.time,
|
||||
com.raytheon.uf.common.time.util,
|
||||
com.raytheon.uf.common.util
|
||||
com.raytheon.uf.common.util,
|
||||
com.raytheon.viz.ui.personalities.awips
|
||||
Bundle-ClassPath: com.raytheon.viz.xdat.jar
|
||||
|
|