Merge branch 'master_14.3.1' into master_14.3.2
Conflicts: edexOsgi/com.raytheon.uf.edex.activetable/src/com/raytheon/uf/edex/activetable/ActiveTable.java Former-commit-id:07076f91aa
[formerly 155801c3d418b6deb7e17ffb04c963a80d092c5a] Former-commit-id:1e4522ddd2
This commit is contained in:
commit
3c6247522e
32 changed files with 1872 additions and 1151 deletions
|
@ -58,6 +58,7 @@ import com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Aug 10, 2011 randerso Initial creation
|
* Aug 10, 2011 randerso Initial creation
|
||||||
* Apr 17, 2014 #2997 randerso Moved buildBoundingGeometry up from DbMapResource
|
* Apr 17, 2014 #2997 randerso Moved buildBoundingGeometry up from DbMapResource
|
||||||
|
* Jan 29, 2015 #4062 randerso Added a buffer to bounding Geometry
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -272,6 +273,10 @@ public abstract class AbstractDbMapResource<T extends AbstractDbMapResourceData,
|
||||||
.handle(Priority.PROBLEM, e1.getLocalizedMessage(), e1);
|
.handle(Priority.PROBLEM, e1.getLocalizedMessage(), e1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add just a little buffer to get past EnvelopeIntersection limiting
|
||||||
|
// us to 179.99999 instead of going clear to 180
|
||||||
|
g = g.buffer(0.0001);
|
||||||
|
|
||||||
// long t1 = System.currentTimeMillis();
|
// long t1 = System.currentTimeMillis();
|
||||||
// System.out.println("buildBoundingGeometry took: " + (t1 - t0));
|
// System.out.println("buildBoundingGeometry took: " + (t1 - t0));
|
||||||
return g;
|
return g;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
package com.raytheon.viz.core.rsc.jts;
|
package com.raytheon.viz.core.rsc.jts;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
import org.geotools.referencing.operation.projection.ProjectionException;
|
||||||
import org.opengis.referencing.FactoryException;
|
import org.opengis.referencing.FactoryException;
|
||||||
|
|
||||||
import com.raytheon.uf.common.geospatial.ReferencedGeometry;
|
import com.raytheon.uf.common.geospatial.ReferencedGeometry;
|
||||||
|
@ -54,6 +55,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
|
||||||
* Oct 24, 2006 chammack Initial Creation.
|
* Oct 24, 2006 chammack Initial Creation.
|
||||||
* Feb 14, 2014 2804 mschenke Rewrote to move clipping from GLWireframeShape2D to here
|
* Feb 14, 2014 2804 mschenke Rewrote to move clipping from GLWireframeShape2D to here
|
||||||
* Apr 21, 2014 2997 randerso Improved error handling in handle(ReferencedGeometry, JTSGeometryData)
|
* Apr 21, 2014 2997 randerso Improved error handling in handle(ReferencedGeometry, JTSGeometryData)
|
||||||
|
* Jan 29, 2015 4062 randerso Don't throw errors for ProjectionExceptions
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -476,6 +478,8 @@ public class JTSCompiler {
|
||||||
corrector.correct(geom.asLatLon()));
|
corrector.correct(geom.asLatLon()));
|
||||||
} catch (FactoryException e) {
|
} catch (FactoryException e) {
|
||||||
throw new VizException("Error creating transform to Lat/Lon", e);
|
throw new VizException("Error creating transform to Lat/Lon", e);
|
||||||
|
} catch (ProjectionException e) {
|
||||||
|
// ignore this exception so it doesn't cause pop ups
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new VizException(
|
throw new VizException(
|
||||||
"Error transforming geometry into Lat/Lon", e);
|
"Error transforming geometry into Lat/Lon", e);
|
||||||
|
@ -487,6 +491,8 @@ public class JTSCompiler {
|
||||||
} catch (FactoryException e) {
|
} catch (FactoryException e) {
|
||||||
throw new VizException(
|
throw new VizException(
|
||||||
"Error creating transform to descriptor pixel space", e);
|
"Error creating transform to descriptor pixel space", e);
|
||||||
|
} catch (ProjectionException e) {
|
||||||
|
// ignore this exception so it doesn't cause pop ups
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new VizException(
|
throw new VizException(
|
||||||
"Error transforming geometry into descriptor pixel space",
|
"Error transforming geometry into descriptor pixel space",
|
||||||
|
|
|
@ -43,6 +43,7 @@ import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 31, 2009 snaples Initial creation
|
* Mar 31, 2009 snaples Initial creation
|
||||||
|
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -72,13 +73,9 @@ public class GroupEditCalls {
|
||||||
|
|
||||||
int pcpn_time = dqc.pcpn_time;
|
int pcpn_time = dqc.pcpn_time;
|
||||||
|
|
||||||
ReadPrecipStationList rp = new ReadPrecipStationList();
|
int max_stations = dqc.precip_stations.size();
|
||||||
|
|
||||||
ReadTemperatureStationList rt = new ReadTemperatureStationList();
|
int max_tstations = dqc.temperature_stations.size();
|
||||||
|
|
||||||
int max_stations = rp.getNumPstations();
|
|
||||||
|
|
||||||
int max_tstations = rt.getNumTstations();
|
|
||||||
|
|
||||||
public void apply_group()
|
public void apply_group()
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
|
* Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
|
||||||
|
* Feb 4, 2015 17094 cgobs Fix for fieldType being too long for mapx_field_type column in RWResult table.
|
||||||
* </pre>
|
* </pre>
|
||||||
**/
|
**/
|
||||||
package com.raytheon.viz.mpe.ui.actions;
|
package com.raytheon.viz.mpe.ui.actions;
|
||||||
|
@ -33,8 +34,10 @@ import java.io.IOException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.imageio.ImageWriter;
|
import javax.imageio.ImageWriter;
|
||||||
|
@ -337,7 +340,10 @@ public class SaveBestEstimate {
|
||||||
Rwresult pRWResultNode = pRWResultHead.get(0);
|
Rwresult pRWResultNode = pRWResultHead.get(0);
|
||||||
|
|
||||||
/* Update the elements in the RWResult node. */
|
/* Update the elements in the RWResult node. */
|
||||||
pRWResultNode.setMapxFieldType(fldtype);
|
|
||||||
|
fldtype = checkAndModifyMapxFieldType(fldtype);
|
||||||
|
|
||||||
|
pRWResultNode.setMapxFieldType(fldtype.toLowerCase());
|
||||||
pRWResultNode.setAutoSave(asave);
|
pRWResultNode.setAutoSave(asave);
|
||||||
pRWResultNode.setDrawPrecip(drpr);
|
pRWResultNode.setDrawPrecip(drpr);
|
||||||
pRWResultNode.setLastSaveTime(SimulatedTime.getSystemTime()
|
pRWResultNode.setLastSaveTime(SimulatedTime.getSystemTime()
|
||||||
|
@ -359,4 +365,32 @@ public class SaveBestEstimate {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String checkAndModifyMapxFieldType(String fieldType) {
|
||||||
|
|
||||||
|
// This method changes fieldType to lowercase.
|
||||||
|
// It also shortens fieldTypes as needed to fit into the mapx_field_type column in the RWResult table.
|
||||||
|
// Note: the mapx_field_type column is informational only. It is not used by the code
|
||||||
|
// other than reading and writing from and to the database.
|
||||||
|
|
||||||
|
String newFieldType = null;
|
||||||
|
String lowerCaseFieldType = fieldType.toLowerCase();
|
||||||
|
|
||||||
|
final Map<String,String> conversionTable = new HashMap<String , String>();
|
||||||
|
|
||||||
|
conversionTable.put("localfield1", "localfld1");
|
||||||
|
conversionTable.put("localfield2", "localfld2");
|
||||||
|
conversionTable.put("localfield3", "localfld3");
|
||||||
|
|
||||||
|
conversionTable.put("avgrdmosaic", "avgrdmos");
|
||||||
|
conversionTable.put("maxrdmosaic", "maxrdmos");
|
||||||
|
|
||||||
|
|
||||||
|
newFieldType = conversionTable.get(lowerCaseFieldType);
|
||||||
|
if (newFieldType == null)
|
||||||
|
{
|
||||||
|
newFieldType = lowerCaseFieldType;
|
||||||
|
}
|
||||||
|
return newFieldType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 9, 2009 snaples Initial creation
|
* Mar 9, 2009 snaples Initial creation
|
||||||
|
* Feb 5, 2015 17101 snaples Fixed issue with writing zero length bad values file.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -51,8 +52,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
||||||
public class BadValues {
|
public class BadValues {
|
||||||
BufferedReader in = null;
|
BufferedReader in = null;
|
||||||
DailyQcUtils dqc = DailyQcUtils.getInstance();
|
DailyQcUtils dqc = DailyQcUtils.getInstance();
|
||||||
ReadPrecipStationList rp = new ReadPrecipStationList();
|
private int max_stations = dqc.precip_stations.size();
|
||||||
private int max_stations = rp.getNumPstations();
|
|
||||||
|
|
||||||
|
|
||||||
public void read_bad_values(String precd, int m) {
|
public void read_bad_values(String precd, int m) {
|
||||||
|
@ -194,7 +194,7 @@ public class BadValues {
|
||||||
// ier=sprintf(ibuf,"%s %s %d %f\n",bad_values[i].hb5,bad_values[i].parm,
|
// ier=sprintf(ibuf,"%s %s %d %f\n",bad_values[i].hb5,bad_values[i].parm,
|
||||||
// bad_values[i].quart,bad_values[i].fvalue);
|
// bad_values[i].quart,bad_values[i].fvalue);
|
||||||
|
|
||||||
ibuf = String.format("%s %s %d %f", bad_values[i].hb5,
|
ibuf = String.format("%s %s %d %4.2f", bad_values[i].hb5,
|
||||||
bad_values[i].parm, bad_values[i].quart,
|
bad_values[i].parm, bad_values[i].quart,
|
||||||
bad_values[i].fvalue);
|
bad_values[i].fvalue);
|
||||||
out.write(ibuf);
|
out.write(ibuf);
|
||||||
|
|
|
@ -41,6 +41,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 11, 2009 snaples Initial creation
|
* Mar 11, 2009 snaples Initial creation
|
||||||
|
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -68,8 +69,7 @@ public class GetBadSnotel {
|
||||||
/* Retrieve the number of days to QC data for. */
|
/* Retrieve the number of days to QC data for. */
|
||||||
num_qc_days = dqc.qcDays;
|
num_qc_days = dqc.qcDays;
|
||||||
|
|
||||||
ReadPrecipStationList pl = new ReadPrecipStationList();
|
int max_stations = dqc.precip_stations.size();
|
||||||
int max_stations = pl.getNumPstations();
|
|
||||||
// Pdata[] pdata = DailyQcUtils.pdata;
|
// Pdata[] pdata = DailyQcUtils.pdata;
|
||||||
|
|
||||||
for (j = 0; j < num_qc_days; j++) {
|
for (j = 0; j < num_qc_days; j++) {
|
||||||
|
|
|
@ -36,6 +36,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Feb 23, 2009 snaples Initial creation
|
* Feb 23, 2009 snaples Initial creation
|
||||||
|
* Feb 3, 2015 16993 snaples Fixed if condition on cparm.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -133,8 +134,8 @@ public class InitPrecipClimo {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokens[1].equalsIgnoreCase("PPMPBCM")
|
if (!(tokens[1].equalsIgnoreCase("PPMPBCM"))
|
||||||
&& tokens[1].equalsIgnoreCase("PPMRZCM")) {
|
&& !(tokens[1].equalsIgnoreCase("PPMRZCM"))) {
|
||||||
line = in.readLine();
|
line = in.readLine();
|
||||||
++record_count;
|
++record_count;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Feb 24, 2009 snaples Initial creation
|
* Feb 24, 2009 snaples Initial creation
|
||||||
* April , 2012 8672 lbousaidi fixed the reading of the PRISM data.
|
* April , 2012 8672 lbousaidi fixed the reading of the PRISM data.
|
||||||
|
* Feb 3, 2015 16993 snaples fixed color scale data conversion issue.
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author snaples
|
* @author snaples
|
||||||
|
@ -90,9 +91,8 @@ public class MeanMonthlyPrecip {
|
||||||
displayUnit = NonSI.INCH;
|
displayUnit = NonSI.INCH;
|
||||||
dataUnit = SI.MILLIMETER;
|
dataUnit = SI.MILLIMETER;
|
||||||
cmc.setDisplayUnit(displayUnit);
|
cmc.setDisplayUnit(displayUnit);
|
||||||
cmc.setColorMapUnit(SI.MILLIMETER);
|
|
||||||
cmc.setDataUnit(dataUnit);
|
cmc.setDataUnit(dataUnit);
|
||||||
UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter();
|
UnitConverter dataToImage = cmc.getDataToImageConverter();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loop over the months. Determine for which months PRISM data are
|
* Loop over the months. Determine for which months PRISM data are
|
||||||
|
|
|
@ -73,8 +73,7 @@ public class ReadPrecipStationList {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadPrecipStationList.max_pstations = dqc.precip_stations
|
max_pstations = dqc.precip_stations.size();
|
||||||
.size();
|
|
||||||
|
|
||||||
return dqc.precip_stations;
|
return dqc.precip_stations;
|
||||||
|
|
||||||
|
|
71
edexOsgi/build.edex/esb/bin/ndmMenuIngester.sh
Normal file
71
edexOsgi/build.edex/esb/bin/ndmMenuIngester.sh
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
#!/bin/bash
|
||||||
|
##
|
||||||
|
# This software was developed and / or modified by Raytheon Company,
|
||||||
|
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
|
#
|
||||||
|
# U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
|
# This software product contains export-restricted data whose
|
||||||
|
# export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
|
# to non-U.S. persons whether in the United States or abroad requires
|
||||||
|
# an export license or other authorization.
|
||||||
|
#
|
||||||
|
# Contractor Name: Raytheon Company
|
||||||
|
# Contractor Address: 6825 Pine Street, Suite 340
|
||||||
|
# Mail Stop B8
|
||||||
|
# Omaha, NE 68106
|
||||||
|
# 402.291.0100
|
||||||
|
#
|
||||||
|
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
|
# further licensing information.
|
||||||
|
##
|
||||||
|
# NDM Menu File Ingester
|
||||||
|
|
||||||
|
if [ "$1" == "-help" ];
|
||||||
|
then
|
||||||
|
echo ""
|
||||||
|
echo "ndmMenuIngester.sh <ndmFileDirectory> <ndmMenuFileName>"
|
||||||
|
echo " ndmFileDirectory is the directory holding the ndm files"
|
||||||
|
echo " ndmMenuFileName is the name of the ndm menu file to convert"
|
||||||
|
echo ""
|
||||||
|
echo " Required files: redbookDataKeys.txt, redbookDepictKeys.txt,"
|
||||||
|
echo " redbookProductButtons.txt, and the menu file to convert"
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
if [ ! -d "$1" ];
|
||||||
|
then
|
||||||
|
echo "Directory [$1] does not exist!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$1/$2" ];
|
||||||
|
then
|
||||||
|
echo "File [$2] does not exist!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
SRC_DIR=$1
|
||||||
|
MENU_FILE=$2
|
||||||
|
path_to_script=`readlink -f $0`
|
||||||
|
dir=$(dirname $path_to_script)
|
||||||
|
dir=$(dirname $dir)
|
||||||
|
AWIPS_HOME=$(dirname $dir)
|
||||||
|
|
||||||
|
# Search for jars
|
||||||
|
EDEX_PLUGINS="$AWIPS_HOME/edex/lib/"
|
||||||
|
JARS=$(find $EDEX_PLUGINS -name "*.jar")
|
||||||
|
|
||||||
|
# Add jars to classpath
|
||||||
|
addSep=false
|
||||||
|
for i in $JARS
|
||||||
|
do
|
||||||
|
if [[ "$addSep" == true ]];
|
||||||
|
then
|
||||||
|
LOCAL_CLASSPATH=$LOCAL_CLASSPATH":"$i
|
||||||
|
else
|
||||||
|
LOCAL_CLASSPATH=$i
|
||||||
|
addSep=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
JAVA_INSTALL=/awips2/java/
|
||||||
|
${JAVA_INSTALL}/bin/java -classpath $LOCAL_CLASSPATH com.raytheon.uf.edex.plugin.redbook.menu.NdmMenuConverter $SRC_DIR $MENU_FILE
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
</model>
|
</model>
|
||||||
|
|
||||||
<model>
|
<model>
|
||||||
<name>MPE-Local</name>
|
<name>MPE-Mosaic</name>
|
||||||
<center>9</center>
|
<center>9</center>
|
||||||
<subcenter>0</subcenter>
|
<subcenter>0</subcenter>
|
||||||
<grid>304</grid>
|
<grid>304</grid>
|
||||||
|
@ -50,7 +50,6 @@
|
||||||
</process>
|
</process>
|
||||||
</model>
|
</model>
|
||||||
|
|
||||||
|
|
||||||
<!-- END SUBCENTER 0 -->
|
<!-- END SUBCENTER 0 -->
|
||||||
|
|
||||||
<!-- SUBCENTER 105: San Juan PR WFO -->
|
<!-- SUBCENTER 105: San Juan PR WFO -->
|
||||||
|
|
|
@ -1201,7 +1201,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
||||||
<parameter>PLI</parameter>
|
<parameter>PLI</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<contourStyle>
|
<contourStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<contourLabeling labelSpacing="4">
|
<contourLabeling labelSpacing="4">
|
||||||
<increment>2</increment>
|
<increment>2</increment>
|
||||||
</contourLabeling>
|
</contourLabeling>
|
||||||
|
@ -1212,7 +1212,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
||||||
<parameter>SLI</parameter>
|
<parameter>SLI</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<contourStyle>
|
<contourStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<displayFlags>NoPlane</displayFlags>
|
<displayFlags>NoPlane</displayFlags>
|
||||||
<contourLabeling labelSpacing="4">
|
<contourLabeling labelSpacing="4">
|
||||||
<increment>2</increment>
|
<increment>2</increment>
|
||||||
|
@ -1229,7 +1229,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,900| 0 | 2
|
||||||
<creatingEntity>Laps</creatingEntity>
|
<creatingEntity>Laps</creatingEntity>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<contourStyle>
|
<contourStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<displayFlags>NoPlane</displayFlags>
|
<displayFlags>NoPlane</displayFlags>
|
||||||
<contourLabeling labelSpacing="4">
|
<contourLabeling labelSpacing="4">
|
||||||
<increment>2</increment>
|
<increment>2</increment>
|
||||||
|
@ -1244,7 +1244,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
||||||
<parameter>BLI</parameter>
|
<parameter>BLI</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<contourStyle>
|
<contourStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<contourLabeling labelSpacing="4">
|
<contourLabeling labelSpacing="4">
|
||||||
<increment>2</increment>
|
<increment>2</increment>
|
||||||
</contourLabeling>
|
</contourLabeling>
|
||||||
|
@ -2771,7 +2771,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,,,80 | 0 | 2
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<contourStyle>
|
<contourStyle>
|
||||||
<smoothingDistance>80</smoothingDistance>
|
<smoothingDistance>80</smoothingDistance>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<displayFlags>NoPlane</displayFlags>
|
<displayFlags>NoPlane</displayFlags>
|
||||||
<contourLabeling labelSpacing="4">
|
<contourLabeling labelSpacing="4">
|
||||||
<increment>2</increment>
|
<increment>2</increment>
|
||||||
|
|
|
@ -347,7 +347,7 @@
|
||||||
<parameter>shWlt</parameter>
|
<parameter>shWlt</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<graphStyle>
|
<graphStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
</graphStyle>
|
</graphStyle>
|
||||||
</styleRule>
|
</styleRule>
|
||||||
|
|
||||||
|
|
|
@ -1780,7 +1780,7 @@
|
||||||
<parameter>PLI</parameter>
|
<parameter>PLI</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<imageStyle>
|
<imageStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<range scale="LINEAR">
|
<range scale="LINEAR">
|
||||||
<minValue>-15</minValue>
|
<minValue>-15</minValue>
|
||||||
<maxValue>15</maxValue>
|
<maxValue>15</maxValue>
|
||||||
|
@ -1800,7 +1800,7 @@
|
||||||
<parameter>BLI</parameter>
|
<parameter>BLI</parameter>
|
||||||
</paramLevelMatches>
|
</paramLevelMatches>
|
||||||
<imageStyle>
|
<imageStyle>
|
||||||
<displayUnits label="C">K</displayUnits>
|
<displayUnits>C</displayUnits>
|
||||||
<range scale="LINEAR">
|
<range scale="LINEAR">
|
||||||
<minValue>-15</minValue>
|
<minValue>-15</minValue>
|
||||||
<maxValue>15</maxValue>
|
<maxValue>15</maxValue>
|
||||||
|
|
|
@ -92,6 +92,11 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
||||||
* Added performance logging
|
* Added performance logging
|
||||||
* Nov 14, 2014 4953 randerso Moved dumpProductToTempFile into PracticeVtecDecoder
|
* Nov 14, 2014 4953 randerso Moved dumpProductToTempFile into PracticeVtecDecoder
|
||||||
* since it had no reason to be in this class
|
* since it had no reason to be in this class
|
||||||
|
* Feb 05, 2015 16942 ryu Fix update of records for sites other than
|
||||||
|
* the home site and its neighbors.
|
||||||
|
* Pass issuance site id to getActiveTable()
|
||||||
|
* in updateActiveTable() so records will
|
||||||
|
* be updated correctly.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -286,11 +291,13 @@ public class ActiveTable {
|
||||||
mode = ActiveTableMode.OPERATIONAL;
|
mode = ActiveTableMode.OPERATIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String issueSiteId = newRecords.get(0).getOfficeid();
|
||||||
|
|
||||||
IPerformanceStatusHandler perfStat = PerformanceStatus
|
IPerformanceStatusHandler perfStat = PerformanceStatus
|
||||||
.getHandler("ActiveTable");
|
.getHandler("ActiveTable");
|
||||||
ITimer timer = TimeUtil.getTimer();
|
ITimer timer = TimeUtil.getTimer();
|
||||||
timer.start();
|
timer.start();
|
||||||
List<ActiveTableRecord> activeTable = getActiveTable(siteId, mode);
|
List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId, mode);
|
||||||
timer.stop();
|
timer.stop();
|
||||||
perfStat.logDuration("getActiveTable", timer.getElapsedTime());
|
perfStat.logDuration("getActiveTable", timer.getElapsedTime());
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
* Dec 12, 2013 2624 rferrel Document Julian time stamp.
|
* Dec 12, 2013 2624 rferrel Document Julian time stamp.
|
||||||
* May 14, 2014 2881 rferrel Change retention times and data set modifications.
|
* May 14, 2014 2881 rferrel Change retention times and data set modifications.
|
||||||
* Aug 25, 2014 3537 rferrel Fixed dirPattern in Category Local.
|
* Aug 25, 2014 3537 rferrel Fixed dirPattern in Category Local.
|
||||||
|
* Feb 02, 2015 4066 rferrel Added lightning to Observation category.
|
||||||
*
|
*
|
||||||
* @author rferrel
|
* @author rferrel
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
|
@ -208,7 +209,7 @@
|
||||||
<name>Observation</name>
|
<name>Observation</name>
|
||||||
<extRetentionHours>168</extRetentionHours>
|
<extRetentionHours>168</extRetentionHours>
|
||||||
<dataSet>
|
<dataSet>
|
||||||
<dirPattern>(airep|binlightning|bufrascat|bufrhdw|bufrmthdw|bufrssmi|lsr|MAROB|maritime|metar|misc_sfc_obs|pirep|sfcobs|shef|svrwx|synoptic)/(\d{4})(\d{2})(\d{2})/(\d{2})</dirPattern>
|
<dirPattern>(airep|binlightning|bufrascat|bufrhdw|bufrmthdw|bufrssmi|entlightning|lsr|MAROB|maritime|metar|misc_sfc_obs|pirep|sfcobs|shef|svrwx|synoptic)/(\d{4})(\d{2})(\d{2})/(\d{2})</dirPattern>
|
||||||
<displayLabel>{1}</displayLabel>
|
<displayLabel>{1}</displayLabel>
|
||||||
<dateGroupIndices>2,3,4,5</dateGroupIndices>
|
<dateGroupIndices>2,3,4,5</dateGroupIndices>
|
||||||
</dataSet>
|
</dataSet>
|
||||||
|
|
|
@ -12,7 +12,8 @@ Require-Bundle: com.raytheon.edex.common,
|
||||||
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.edex.ndm;bundle-version="1.14.0",
|
com.raytheon.uf.edex.ndm;bundle-version="1.14.0",
|
||||||
com.raytheon.uf.edex.menus;bundle-version="1.0.0",
|
com.raytheon.uf.edex.menus;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.dataplugin.redbook;bundle-version="1.14.0"
|
com.raytheon.uf.common.dataplugin.redbook;bundle-version="1.14.0",
|
||||||
|
org.apache.commons.lang;bundle-version="2.3.0"
|
||||||
Export-Package: com.raytheon.uf.edex.plugin.redbook,
|
Export-Package: com.raytheon.uf.edex.plugin.redbook,
|
||||||
com.raytheon.uf.edex.plugin.redbook.decoder
|
com.raytheon.uf.edex.plugin.redbook.decoder
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
|
|
|
@ -47,6 +47,7 @@ import com.raytheon.uf.edex.plugin.redbook.menu.RedbookUaMenuUtil;
|
||||||
* Mar 19, 2014 2857 mpduff Implement NCO.
|
* Mar 19, 2014 2857 mpduff Implement NCO.
|
||||||
* Mar 19, 2014 2859 mpduff Implement MPC.
|
* Mar 19, 2014 2859 mpduff Implement MPC.
|
||||||
* Mar 19, 2014 2860 mpduff Implement Upper Air.
|
* Mar 19, 2014 2860 mpduff Implement Upper Air.
|
||||||
|
* Jan 28, 2015 4030 mpduff Changed constants to public.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -60,22 +61,22 @@ public class RedbookMenuSubscriber implements INationalDatasetSubscriber {
|
||||||
.getHandler(RedbookMenuSubscriber.class);
|
.getHandler(RedbookMenuSubscriber.class);
|
||||||
|
|
||||||
/** Hazard menu file */
|
/** Hazard menu file */
|
||||||
private static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml";
|
public static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml";
|
||||||
|
|
||||||
/** HPC menu file */
|
/** HPC menu file */
|
||||||
private static final String HPC_MENU_FILE = "RedbookHPCMenus.xml";
|
public static final String HPC_MENU_FILE = "RedbookHPCMenus.xml";
|
||||||
|
|
||||||
/** CPC menu file */
|
/** CPC menu file */
|
||||||
private static final String CPC_MENU_FILE = "RedbookCPCMenus.xml";
|
public static final String CPC_MENU_FILE = "RedbookCPCMenus.xml";
|
||||||
|
|
||||||
/** MPC menu file */
|
/** MPC menu file */
|
||||||
private static final String MPC_MENU_FILE = "RedbookMPCMenus.xml";
|
public static final String MPC_MENU_FILE = "RedbookMPCMenus.xml";
|
||||||
|
|
||||||
/** NCO menu file */
|
/** NCO menu file */
|
||||||
private static final String NCO_MENU_FILE = "RedbookNCOMenus.xml";
|
public static final String NCO_MENU_FILE = "RedbookNCOMenus.xml";
|
||||||
|
|
||||||
/** Upper air menu file */
|
/** Upper air menu file */
|
||||||
private static final String UA_MENU_FILE = "RedbookUAMenus.xml";
|
public static final String UA_MENU_FILE = "RedbookUAMenus.xml";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|
|
@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlElements;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 12, 2014 2855 mpduff Initial creation
|
* Mar 12, 2014 2855 mpduff Initial creation
|
||||||
* Mar 19, 2014 2860 mpduff Added DataUri.
|
* Mar 19, 2014 2860 mpduff Added DataUri.
|
||||||
|
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -208,7 +209,7 @@ public class MenuEntry {
|
||||||
* @param menuEntryList
|
* @param menuEntryList
|
||||||
* the menuEntryList to set
|
* the menuEntryList to set
|
||||||
*/
|
*/
|
||||||
public void setMenuEntryyList(List<MenuEntry> menuEntryList) {
|
public void setMenuEntryList(List<MenuEntry> menuEntryList) {
|
||||||
this.menuEntryList = menuEntryList;
|
this.menuEntryList = menuEntryList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,6 +228,18 @@ public class MenuEntry {
|
||||||
this.dataUri = dataUri;
|
this.dataUri = dataUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a {@link MenuEntry}
|
||||||
|
*
|
||||||
|
* @param entry
|
||||||
|
*/
|
||||||
|
public void addMenuEntry(MenuEntry entry) {
|
||||||
|
if (this.menuEntryList == null) {
|
||||||
|
menuEntryList = new ArrayList<MenuEntry>();
|
||||||
|
}
|
||||||
|
menuEntryList.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|
|
@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 07, 2014 2858 mpduff Initial creation.
|
* Mar 07, 2014 2858 mpduff Initial creation.
|
||||||
* Mar 17, 2014 2855 mpduff Renamed to RedbookMenusXML.java.
|
* Mar 17, 2014 2855 mpduff Renamed to RedbookMenusXML.java.
|
||||||
|
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -78,6 +79,10 @@ public class RedbookMenusXML {
|
||||||
this.menuEntryList = menuEntryList;
|
this.menuEntryList = menuEntryList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addMenuEntry(MenuEntry entry) {
|
||||||
|
menuEntryList.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,360 @@
|
||||||
|
/**
|
||||||
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
|
*
|
||||||
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
|
* This software product contains export-restricted data whose
|
||||||
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
|
* an export license or other authorization.
|
||||||
|
*
|
||||||
|
* Contractor Name: Raytheon Company
|
||||||
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
|
* Mail Stop B8
|
||||||
|
* Omaha, NE 68106
|
||||||
|
* 402.291.0100
|
||||||
|
*
|
||||||
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
|
* further licensing information.
|
||||||
|
**/
|
||||||
|
package com.raytheon.uf.edex.plugin.redbook.menu;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.Marshaller;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
|
import com.raytheon.uf.edex.plugin.redbook.ingest.RedbookMenuSubscriber;
|
||||||
|
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.MenuEntry;
|
||||||
|
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.MenuEntryType;
|
||||||
|
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.RedbookMenusXML;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is called from /awips2/edex/bin/ndmMenuIngester.sh.
|
||||||
|
*
|
||||||
|
* It reads in the NDM menu files and outputs an A2 version into the NDM
|
||||||
|
* endpoint on edex.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Jan 30, 2015 4030 mpduff Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author mpduff
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class NdmMenuConverter {
|
||||||
|
private static final String WMO = "wmo";
|
||||||
|
|
||||||
|
private static final String OUTPUT_PATH = File.separator + "awips2"
|
||||||
|
+ File.separator + "edex" + File.separator + "data"
|
||||||
|
+ File.separator + "ndm" + File.separator;
|
||||||
|
|
||||||
|
private static final String HPC_FILE = "redbookHPCMenus.txt";
|
||||||
|
|
||||||
|
private static final String CPC_FILE = "redbookCPCMenus.txt";
|
||||||
|
|
||||||
|
private static final String NCO_FILE = "redbookNCOMenus.txt";
|
||||||
|
|
||||||
|
private static final String HAZARDS_FILE = "redbookHazardMenus.txt";
|
||||||
|
|
||||||
|
private static final String MARINE_FILE = "redbookMarineMenus.txt";
|
||||||
|
|
||||||
|
private static final String UPPER_AIR_FILE = "redbookUpperAirMenus.txt";
|
||||||
|
|
||||||
|
private String dataKeysPath;
|
||||||
|
|
||||||
|
private String depictKeysPath;
|
||||||
|
|
||||||
|
private String menuFilePath;
|
||||||
|
|
||||||
|
private String productButtonPath;
|
||||||
|
|
||||||
|
private JAXBContext jax;
|
||||||
|
|
||||||
|
private Marshaller marshaller;
|
||||||
|
|
||||||
|
private File depictFile;
|
||||||
|
|
||||||
|
public NdmMenuConverter() {
|
||||||
|
createContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void convert() {
|
||||||
|
RedbookMenusXML menuXml = new RedbookMenusXML();
|
||||||
|
MenuEntry titleMenuEntry;
|
||||||
|
int sepCounter = 0;
|
||||||
|
List<MenuEntry> subMenuList = new ArrayList<MenuEntry>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
File dataFile = new File(this.dataKeysPath);
|
||||||
|
File menuFile = new File(this.menuFilePath);
|
||||||
|
depictFile = new File(this.depictKeysPath);
|
||||||
|
File productButtonFile = new File(this.productButtonPath);
|
||||||
|
|
||||||
|
List<String> dataKeys = Files.readAllLines(dataFile.toPath(),
|
||||||
|
Charset.defaultCharset());
|
||||||
|
List<String> depictKeys = Files.readAllLines(depictFile.toPath(),
|
||||||
|
Charset.defaultCharset());
|
||||||
|
List<String> lines = Files.readAllLines(menuFile.toPath(),
|
||||||
|
Charset.defaultCharset());
|
||||||
|
List<String> productButtonKeys = Files.readAllLines(
|
||||||
|
productButtonFile.toPath(), Charset.defaultCharset());
|
||||||
|
Map<String, String> menuTextMap = getMenuTextMap(productButtonKeys);
|
||||||
|
Map<String, String> dataKeyMap = getSubstitutionMap(dataKeys);
|
||||||
|
|
||||||
|
MenuEntry subMenuEntry = null;
|
||||||
|
|
||||||
|
int subMenuCount = -1;
|
||||||
|
for (String line : lines) {
|
||||||
|
line = line.trim();
|
||||||
|
if (line.startsWith("submenu")) {
|
||||||
|
subMenuCount++;
|
||||||
|
if (line.contains("&")) {
|
||||||
|
line = line.replace("&", "&&");
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] parts = line.split(":");
|
||||||
|
String text = parts[1].replace("\"", "");
|
||||||
|
|
||||||
|
subMenuEntry = new MenuEntry();
|
||||||
|
subMenuEntry.setFile(null);
|
||||||
|
subMenuEntry.setType(MenuEntryType.Submenu);
|
||||||
|
subMenuEntry.setText(text.trim());
|
||||||
|
|
||||||
|
subMenuList.add(subMenuEntry);
|
||||||
|
} else if (line.startsWith("title")) {
|
||||||
|
String[] parts = line.split(":");
|
||||||
|
String text = parts[1].replace("\"", "");
|
||||||
|
titleMenuEntry = new MenuEntry();
|
||||||
|
titleMenuEntry.setFile(null);
|
||||||
|
titleMenuEntry.setType(MenuEntryType.Title);
|
||||||
|
titleMenuEntry.setText(text);
|
||||||
|
titleMenuEntry.setId(text);
|
||||||
|
subMenuList.get(subMenuCount).addMenuEntry(titleMenuEntry);
|
||||||
|
} else if (line.startsWith("productButton")) {
|
||||||
|
String[] parts = line.split(":");
|
||||||
|
MenuEntry me = new MenuEntry();
|
||||||
|
me.setFile(null);
|
||||||
|
me.setType(MenuEntryType.ProductButton);
|
||||||
|
/*
|
||||||
|
* There are certain productButtons in the NCO menu data
|
||||||
|
* keys in the (25000 range) that have data keys that don't
|
||||||
|
* map to anything. This results in those menu items not
|
||||||
|
* being created. The site will need to fix this after
|
||||||
|
* generating the new menus.
|
||||||
|
*/
|
||||||
|
String dataKey = parts[1].trim().substring(0, 4);
|
||||||
|
StringBuilder subValue = new StringBuilder();
|
||||||
|
// Find the matching value
|
||||||
|
for (String depictKeyLine : depictKeys) {
|
||||||
|
if (depictKeyLine.trim().startsWith(dataKey)) {
|
||||||
|
String[] depictKeyParts = depictKeyLine
|
||||||
|
.split("\\|");
|
||||||
|
me.setText(menuTextMap.get(dataKey));
|
||||||
|
me.setId(depictKeyParts[6].trim());
|
||||||
|
subMenuList.get(subMenuCount).addMenuEntry(me);
|
||||||
|
|
||||||
|
String[] subParts = depictKeyParts[2].split(",");
|
||||||
|
MenuEntry subEntry = new MenuEntry();
|
||||||
|
subEntry.setFile(null);
|
||||||
|
subEntry.setType(MenuEntryType.Substitute);
|
||||||
|
subEntry.setKey(WMO);
|
||||||
|
|
||||||
|
for (String subPart : subParts) {
|
||||||
|
for (String key : dataKeyMap.keySet()) {
|
||||||
|
if (key.startsWith(subPart)) {
|
||||||
|
subValue.append(dataKeyMap.get(key))
|
||||||
|
.append(",");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String subValueStr = subValue.toString();
|
||||||
|
subValueStr = StringUtils.removeEnd(subValueStr,
|
||||||
|
",");
|
||||||
|
subEntry.setValue(subValueStr);
|
||||||
|
me.addMenuEntry(subEntry);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (line.startsWith("endSubmenu")) {
|
||||||
|
// subMenuList.add(subMenuEntry);
|
||||||
|
MenuEntry closedSubMenu = subMenuList.remove(subMenuCount);
|
||||||
|
subMenuCount--;
|
||||||
|
if (subMenuCount == -1) {
|
||||||
|
menuXml.addMenuEntry(closedSubMenu);
|
||||||
|
} else {
|
||||||
|
subMenuList.get(subMenuCount).addMenuEntry(
|
||||||
|
closedSubMenu);
|
||||||
|
}
|
||||||
|
} else if (line.startsWith("separator")) {
|
||||||
|
MenuEntry sep = new MenuEntry();
|
||||||
|
sep.setFile(null);
|
||||||
|
sep.setType(MenuEntryType.Separator);
|
||||||
|
sep.setId("Separator" + sepCounter++);
|
||||||
|
subMenuList.get(subMenuCount).addMenuEntry(sep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set output file name
|
||||||
|
String inputFileName = menuFile.getName();
|
||||||
|
String outputFileName = null;
|
||||||
|
if (inputFileName.equals(CPC_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.CPC_MENU_FILE;
|
||||||
|
} else if (inputFileName.equals(HPC_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.HPC_MENU_FILE;
|
||||||
|
} else if (inputFileName.equals(NCO_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.NCO_MENU_FILE;
|
||||||
|
} else if (inputFileName.equals(HAZARDS_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.HAZARD_MENU_FILE;
|
||||||
|
} else if (inputFileName.equals(MARINE_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.MPC_MENU_FILE;
|
||||||
|
} else if (inputFileName.equals(UPPER_AIR_FILE)) {
|
||||||
|
outputFileName = RedbookMenuSubscriber.UA_MENU_FILE;
|
||||||
|
} else {
|
||||||
|
throw new IOException("Error processing file");
|
||||||
|
}
|
||||||
|
|
||||||
|
marshaller.marshal(menuXml, new File(OUTPUT_PATH + outputFileName));
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Error occurred processing file: "
|
||||||
|
+ menuFilePath);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a map of menu keys to menu text.
|
||||||
|
*
|
||||||
|
* @param productButtonKeys
|
||||||
|
* List of strings from redbookProductButtons.txt
|
||||||
|
*
|
||||||
|
* @return Map for key -> menu text
|
||||||
|
*/
|
||||||
|
private Map<String, String> getMenuTextMap(List<String> productButtonKeys) {
|
||||||
|
Map<String, String> menuTextMap = new HashMap<String, String>();
|
||||||
|
for (String line : productButtonKeys) {
|
||||||
|
line = line.trim();
|
||||||
|
// Skip comment lines
|
||||||
|
if (line.startsWith("#") || line.trim().length() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] parts = line.split("\\|");
|
||||||
|
menuTextMap.put(parts[0].trim(), parts[2].trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
return menuTextMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a map of key to substitution values.
|
||||||
|
*
|
||||||
|
* @param dataKeys
|
||||||
|
* List of strings from the redbookDataKeys.txt file
|
||||||
|
* @returnMap for key -> substitution string
|
||||||
|
*/
|
||||||
|
private Map<String, String> getSubstitutionMap(List<String> dataKeys) {
|
||||||
|
Map<String, String> dataKeyMap = new HashMap<String, String>();
|
||||||
|
for (String line : dataKeys) {
|
||||||
|
line = line.trim();
|
||||||
|
// Skip comment lines
|
||||||
|
if (line.startsWith("#") || line.trim().length() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String[] parts = line.split("\\|");
|
||||||
|
dataKeyMap.put(parts[0].trim(), parts[10].substring(0, 6));
|
||||||
|
}
|
||||||
|
|
||||||
|
return dataKeyMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDataKeysPath() {
|
||||||
|
return dataKeysPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataKeysPath(String dataKeysPath) {
|
||||||
|
this.dataKeysPath = dataKeysPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDepictKeysPath() {
|
||||||
|
return depictKeysPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepictKeysPath(String depictKeysPath) {
|
||||||
|
this.depictKeysPath = depictKeysPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMenuFilePath() {
|
||||||
|
return menuFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMenuFilePath(String menuFilePath) {
|
||||||
|
this.menuFilePath = menuFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductButtonPath(String productButtonPath) {
|
||||||
|
this.productButtonPath = productButtonPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProductButtonPath() {
|
||||||
|
return this.productButtonPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createContext() {
|
||||||
|
Class[] classes = new Class[] { MenuEntry.class, MenuEntryType.class,
|
||||||
|
RedbookMenusXML.class };
|
||||||
|
|
||||||
|
try {
|
||||||
|
jax = JAXBContext.newInstance(classes);
|
||||||
|
this.marshaller = jax.createMarshaller();
|
||||||
|
this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
if (args.length != 2) {
|
||||||
|
System.err.println("Unexpected Arguments");
|
||||||
|
System.err
|
||||||
|
.println("Expecting local NDM directory and NDM File Menu Name");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String dirPath = args[0];
|
||||||
|
if (!dirPath.endsWith(File.separator)) {
|
||||||
|
dirPath = dirPath.concat(File.separator);
|
||||||
|
}
|
||||||
|
String menuFile = dirPath + args[1];
|
||||||
|
String dataKeysFile = dirPath + "redbookDataKeys.txt";
|
||||||
|
String depictKeysFile = dirPath + "redbookDepictKeys.txt";
|
||||||
|
String productButtonFile = dirPath + "redbookProductButtons.txt";
|
||||||
|
|
||||||
|
NdmMenuConverter converter = new NdmMenuConverter();
|
||||||
|
converter.setDataKeysPath(dataKeysFile);
|
||||||
|
converter.setMenuFilePath(menuFile);
|
||||||
|
converter.setDepictKeysPath(depictKeysFile);
|
||||||
|
converter.setProductButtonPath(productButtonFile);
|
||||||
|
converter.convert();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,7 @@
|
||||||
# ------------ ---------- ----------- --------------------------
|
# ------------ ---------- ----------- --------------------------
|
||||||
# 03/20/14 #2933 randerso Changed PRDDIR and LOGDIR to use
|
# 03/20/14 #2933 randerso Changed PRDDIR and LOGDIR to use
|
||||||
# Backup site's configuration
|
# Backup site's configuration
|
||||||
|
# 01/30/15 #17081 lshi Added backup vtec
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
import_file=${1}
|
import_file=${1}
|
||||||
|
@ -175,6 +176,9 @@ log_msg 80
|
||||||
cp -r GFEconfig/edex_static/site/smartinit ${edex_site_si_dest}
|
cp -r GFEconfig/edex_static/site/smartinit ${edex_site_si_dest}
|
||||||
log_msg 90
|
log_msg 90
|
||||||
cp -r GFEconfig/cave_static/site/* ${cave_site_dest}
|
cp -r GFEconfig/cave_static/site/* ${cave_site_dest}
|
||||||
|
# DR 17081
|
||||||
|
log_msg 91
|
||||||
|
cp -r GFEconfig/common_static/site/vtec ${common_site_dest}
|
||||||
log_msg 93
|
log_msg 93
|
||||||
# DR 16464
|
# DR 16464
|
||||||
cp -a GFEConfig/site/rsync_parms.${SITE_CAPS} ${rsync_parms_dest}.${SITE_CAPS}
|
cp -a GFEConfig/site/rsync_parms.${SITE_CAPS} ${rsync_parms_dest}.${SITE_CAPS}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
198d9e1b995f9fcf55686c0992f4bb0612f429e0
|
409f53ec4cfa407ad0854b18dafce4521e2bb99a
|
|
@ -1 +1 @@
|
||||||
198d9e1b995f9fcf55686c0992f4bb0612f429e0
|
409f53ec4cfa407ad0854b18dafce4521e2bb99a
|
|
@ -30,6 +30,7 @@
|
||||||
* new local fields to
|
* new local fields to
|
||||||
* mpe_qpe_fields and
|
* mpe_qpe_fields and
|
||||||
* mpe_qpe_dependencies
|
* mpe_qpe_dependencies
|
||||||
|
* 2/4/2015 C Gobs DR 17069 - mpe_generate_list - token value too short
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
*/
|
*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -130,6 +131,7 @@ const static char * mpe_qpe_dependencies [ NUM_BEST_PRODUCTS ] =
|
||||||
/* GageOnly Generation rule in case mpe_del_gage_zeros token is OFF. */
|
/* GageOnly Generation rule in case mpe_del_gage_zeros token is OFF. */
|
||||||
const static char * gageonly_del_gages_off = "" ;
|
const static char * gageonly_del_gages_off = "" ;
|
||||||
|
|
||||||
|
#define MPE_GENERATE_LIST_REPLY_LEN 512
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* MODULE NUMBER: 1
|
* MODULE NUMBER: 1
|
||||||
|
@ -514,7 +516,7 @@ void get_mpe_product_state ( const char * product , const int * product_len ,
|
||||||
char mpe_del_gage_zeros_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
|
char mpe_del_gage_zeros_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
|
||||||
char mpe_generate_areal_qpe_reply [ MPE_PRODUCT_REPLY_LEN ] = {'\0'};
|
char mpe_generate_areal_qpe_reply [ MPE_PRODUCT_REPLY_LEN ] = {'\0'};
|
||||||
static char * mpe_generate_list_token = MPE_GENERATE_LIST_TOKEN ;
|
static char * mpe_generate_list_token = MPE_GENERATE_LIST_TOKEN ;
|
||||||
char mpe_generate_list_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
|
char mpe_generate_list_reply [ MPE_GENERATE_LIST_REPLY_LEN ] = { '\0' } ;
|
||||||
static char mpe_qpe_fieldtype [ BESTFIELD_LEN] = { '\0' } ;
|
static char mpe_qpe_fieldtype [ BESTFIELD_LEN] = { '\0' } ;
|
||||||
char * pChar = NULL ;
|
char * pChar = NULL ;
|
||||||
char * pString = NULL ;
|
char * pString = NULL ;
|
||||||
|
@ -598,9 +600,10 @@ void get_mpe_product_state ( const char * product , const int * product_len ,
|
||||||
"empty.\n" , mpe_generate_list_token ) ;
|
"empty.\n" , mpe_generate_list_token ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset ( mpe_generate_list_reply , '\0' , MPE_PRODUCT_REPLY_LEN ) ;
|
memset ( mpe_generate_list_reply , '\0' , MPE_GENERATE_LIST_REPLY_LEN ) ;
|
||||||
}
|
}
|
||||||
printf("get_mpe_product_state(): mpe_generate_list_reply = :%s: \n", mpe_generate_list_reply);
|
printf("get_mpe_product_state(): mpe_generate_list_reply = :%s: characters in mpe_generate_list_reply = %d max = %d\n", mpe_generate_list_reply,
|
||||||
|
strlen(mpe_generate_list_reply), MPE_GENERATE_LIST_REPLY_LEN);
|
||||||
|
|
||||||
/* Get the value of the mpe_del_gage_zeros token. */
|
/* Get the value of the mpe_del_gage_zeros token. */
|
||||||
request_len = strlen ( mpe_del_gage_zeros_token ) ;
|
request_len = strlen ( mpe_del_gage_zeros_token ) ;
|
||||||
|
|
|
@ -33,6 +33,7 @@ Import-Package: com.raytheon.uf.common.dataplugin.bufrua,
|
||||||
com.raytheon.uf.common.dataplugin.level,
|
com.raytheon.uf.common.dataplugin.level,
|
||||||
com.raytheon.uf.common.pointdata,
|
com.raytheon.uf.common.pointdata,
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
com.raytheon.uf.common.pointdata.spatial,
|
||||||
|
com.raytheon.uf.common.topo,
|
||||||
com.raytheon.uf.edex.pointdata,
|
com.raytheon.uf.edex.pointdata,
|
||||||
gov.noaa.nws.ncep.common.tools,
|
gov.noaa.nws.ncep.common.tools,
|
||||||
gov.noaa.nws.ncep.edex.common.metparameters,
|
gov.noaa.nws.ncep.edex.common.metparameters,
|
||||||
|
|
|
@ -20,6 +20,7 @@ package gov.noaa.nws.ncep.edex.uengine.tasks.profile;
|
||||||
* 03/2014 1116 T. Lee Added DpD
|
* 03/2014 1116 T. Lee Added DpD
|
||||||
* 01/2015 DR#16959 Chin Chen Added DpT support to fix DR 16959 NSHARP freezes when loading a sounding from
|
* 01/2015 DR#16959 Chin Chen Added DpT support to fix DR 16959 NSHARP freezes when loading a sounding from
|
||||||
* HiRes-ARW/NMM models
|
* HiRes-ARW/NMM models
|
||||||
|
* 02/03/2015 DR#17084 Chin Chen Model soundings being interpolated below the surface for elevated sites
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Chin Chen
|
* @author Chin Chen
|
||||||
|
@ -53,6 +54,7 @@ import com.raytheon.uf.common.dataplugin.grid.GridRecord;
|
||||||
import com.raytheon.uf.common.geospatial.ISpatialObject;
|
import com.raytheon.uf.common.geospatial.ISpatialObject;
|
||||||
import com.raytheon.uf.common.geospatial.MapUtil;
|
import com.raytheon.uf.common.geospatial.MapUtil;
|
||||||
import com.raytheon.uf.common.geospatial.PointUtil;
|
import com.raytheon.uf.common.geospatial.PointUtil;
|
||||||
|
import com.raytheon.uf.common.topo.TopoQuery;
|
||||||
import com.raytheon.uf.edex.database.DataAccessLayerException;
|
import com.raytheon.uf.edex.database.DataAccessLayerException;
|
||||||
import com.raytheon.uf.edex.database.dao.CoreDao;
|
import com.raytheon.uf.edex.database.dao.CoreDao;
|
||||||
import com.raytheon.uf.edex.database.dao.DaoConfig;
|
import com.raytheon.uf.edex.database.dao.DaoConfig;
|
||||||
|
@ -585,7 +587,7 @@ public class MdlSoundingQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the value of surface pressure for a specified location, time, and
|
* Returns the value of surface layer for a specified location, time, and
|
||||||
* model for grib or ncgrib data.
|
* model for grib or ncgrib data.
|
||||||
*
|
*
|
||||||
* @param pnt
|
* @param pnt
|
||||||
|
@ -595,45 +597,145 @@ public class MdlSoundingQuery {
|
||||||
* @param modelName
|
* @param modelName
|
||||||
* the name of the model
|
* the name of the model
|
||||||
* @return surface pressure
|
* @return surface pressure
|
||||||
|
*
|
||||||
|
* DR17084
|
||||||
*/
|
*/
|
||||||
public static Float getModelSfcPressure(Point pnt, String refTime,
|
@SuppressWarnings("unchecked")
|
||||||
String validTime, String pluginName, String modelName) {
|
public static NcSoundingLayer getModelSfcLayer(Point pnt, String refTime,
|
||||||
|
String validTime, String pluginName, String modelName, Coordinate coordinate) {
|
||||||
|
|
||||||
if (pluginName.equalsIgnoreCase(GRID_TBL_NAME)) {
|
if (pluginName.equalsIgnoreCase(GRID_TBL_NAME)) {
|
||||||
CoreDao dao = new CoreDao(DaoConfig.forClass(GridRecord.class));
|
NcSoundingLayer soundingLy = new NcSoundingLayer();
|
||||||
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
|
TableQuery query;
|
||||||
|
|
||||||
query.addQueryParam(GridConstants.LEVEL_ONE, "0.0");
|
|
||||||
query.addQueryParam(GridConstants.LEVEL_TWO, "-999999.0");
|
|
||||||
query.addQueryParam(GridConstants.MASTER_LEVEL_NAME, "MSL");
|
|
||||||
query.addQueryParam(GridConstants.PARAMETER_ABBREVIATION, "PMSL");
|
|
||||||
query.addQueryParam(GridConstants.DATASET_ID, modelName);
|
|
||||||
query.addQueryParam("dataTime.refTime", refTime);
|
|
||||||
query.addQueryParam("dataTime.validPeriod.start", validTime);
|
|
||||||
|
|
||||||
GridRecord rec = null;
|
|
||||||
try {
|
try {
|
||||||
List<GridRecord> recList = ((List<GridRecord>) dao
|
query = new TableQuery("metadata", GridRecord.class.getName());
|
||||||
.queryByCriteria(query));
|
query.addParameter(GridConstants.LEVEL_ONE, "0.0");
|
||||||
if (recList.size() == 0) {
|
query.addParameter(GridConstants.LEVEL_TWO, "-999999.0");
|
||||||
return null;
|
query.addParameter(GridConstants.MASTER_LEVEL_NAME, "SFC");
|
||||||
} else {
|
query.addList(GridConstants.PARAMETER_ABBREVIATION, "P, GH");
|
||||||
rec = recList.get(0);
|
query.addParameter(GridConstants.DATASET_ID, modelName);
|
||||||
PointIn pointIn = new PointIn(pluginName, rec, pnt.x, pnt.y);
|
query.addParameter("dataTime.refTime", refTime);
|
||||||
try {
|
query.addParameter("dataTime.validPeriod.start", validTime);
|
||||||
float fdata = pointIn.getPointData();
|
List<GridRecord> recList = (List<GridRecord>) query.execute();
|
||||||
return new Float(fdata);
|
boolean presureAvailable=false, heightAvailable=false;
|
||||||
} catch (PluginException e) {
|
if (recList!=null && recList.size() > 0) {
|
||||||
// TODO Auto-generated catch block
|
for(GridRecord rec:recList ){
|
||||||
e.printStackTrace();
|
PointIn pointIn = new PointIn(pluginName, rec, pnt.x, pnt.y);
|
||||||
return null;
|
try {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
float fdata = pointIn.getPointData();
|
||||||
|
String parm = rec.getParameter().getAbbreviation();
|
||||||
|
if(parm.equals("P")){
|
||||||
|
soundingLy.setPressure(fdata/100);
|
||||||
|
presureAvailable = true;
|
||||||
|
} if(parm.equals("GH")){
|
||||||
|
soundingLy.setGeoHeight(fdata);
|
||||||
|
heightAvailable = true;
|
||||||
|
}
|
||||||
|
//System.out.println("prm="+rec.getParameter().getAbbreviation()+" value="+fdata);
|
||||||
|
|
||||||
|
} catch (PluginException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
recList.clear();
|
||||||
|
}
|
||||||
|
query = new TableQuery("metadata", GridRecord.class.getName());
|
||||||
|
query.addParameter(GridConstants.LEVEL_ONE, "2.0");
|
||||||
|
query.addParameter(GridConstants.LEVEL_TWO, "-999999.0");
|
||||||
|
query.addParameter(GridConstants.MASTER_LEVEL_NAME, "FHAG");
|
||||||
|
query.addList(GridConstants.PARAMETER_ABBREVIATION, "T, RH");
|
||||||
|
query.addParameter(GridConstants.DATASET_ID, modelName);
|
||||||
|
query.addParameter("dataTime.refTime", refTime);
|
||||||
|
query.addParameter("dataTime.validPeriod.start", validTime);
|
||||||
|
recList = (List<GridRecord>) query.execute();
|
||||||
|
if (recList!=null && recList.size() > 0) {
|
||||||
|
for(GridRecord rec:recList ){
|
||||||
|
PointIn pointIn = new PointIn(pluginName, rec, pnt.x, pnt.y);
|
||||||
|
try {
|
||||||
|
|
||||||
|
float fdata = pointIn.getPointData();
|
||||||
|
String parm = rec.getParameter().getAbbreviation();
|
||||||
|
if(parm.equals("T")){
|
||||||
|
soundingLy.setTemperature((float) kelvinToCelsius
|
||||||
|
.convert(fdata));
|
||||||
|
} if(parm.equals("RH")){
|
||||||
|
soundingLy.setRelativeHumidity(fdata);
|
||||||
|
}
|
||||||
|
//System.out.println("prm="+rec.getParameter().getAbbreviation()+" value="+fdata);
|
||||||
|
|
||||||
|
} catch (PluginException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
recList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
query = new TableQuery("metadata", GridRecord.class.getName());
|
||||||
|
query.addParameter(GridConstants.LEVEL_ONE, "10.0");
|
||||||
|
query.addParameter(GridConstants.LEVEL_TWO, "-999999.0");
|
||||||
|
query.addParameter(GridConstants.MASTER_LEVEL_NAME, "FHAG");
|
||||||
|
query.addList(GridConstants.PARAMETER_ABBREVIATION, "vW, uW");
|
||||||
|
query.addParameter(GridConstants.DATASET_ID, modelName);
|
||||||
|
query.addParameter("dataTime.refTime", refTime);
|
||||||
|
query.addParameter("dataTime.validPeriod.start", validTime);
|
||||||
|
recList = (List<GridRecord>) query.execute();
|
||||||
|
if (recList!=null && recList.size() > 0) {
|
||||||
|
for(GridRecord rec:recList ){
|
||||||
|
PointIn pointIn = new PointIn(pluginName, rec, pnt.x, pnt.y);
|
||||||
|
try {
|
||||||
|
|
||||||
|
float fdata = pointIn.getPointData();
|
||||||
|
String parm = rec.getParameter().getAbbreviation();
|
||||||
|
if(parm.equals("vW")){
|
||||||
|
soundingLy.setWindV((float) metersPerSecondToKnots
|
||||||
|
.convert(fdata));
|
||||||
|
} if(parm.equals("uW")){
|
||||||
|
soundingLy.setWindU((float) metersPerSecondToKnots
|
||||||
|
.convert(fdata));
|
||||||
|
}
|
||||||
|
//System.out.println("prm="+rec.getParameter().getAbbreviation()+" value="+fdata);
|
||||||
|
|
||||||
|
} catch (PluginException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (presureAvailable==false || heightAvailable==false) {
|
||||||
|
float surfaceElevation = NcSoundingProfile.MISSING;
|
||||||
|
TopoQuery topoQuery = TopoQuery.getInstance();
|
||||||
|
if (topoQuery != null) {
|
||||||
|
//System.out.println("Nsharp coordinate.x="+coordinate.x);
|
||||||
|
surfaceElevation = (float) topoQuery
|
||||||
|
.getHeight(coordinate);
|
||||||
|
if(surfaceElevation >=0)
|
||||||
|
soundingLy.setGeoHeight(surfaceElevation);
|
||||||
|
else {
|
||||||
|
if (presureAvailable==false)
|
||||||
|
//no pressure and no height, no hope to continue.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (presureAvailable==false)
|
||||||
|
//no pressure and no height, no hope to continue.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return soundingLy;
|
||||||
} catch (DataAccessLayerException e) {
|
} catch (DataAccessLayerException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
|
} catch (Exception e1) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -766,23 +868,48 @@ public class MdlSoundingQuery {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
// System.out.println(" point coord.y="+coord.y+ " coord.x="+
|
//System.out.println(" point coord.y="+coord.y+ " coord.x="+
|
||||||
// coord.x);
|
// coord.x);
|
||||||
pf.setStationLatitude(coord.y);
|
pf.setStationLatitude(coord.y);
|
||||||
pf.setStationLongitude(coord.x);
|
pf.setStationLongitude(coord.x);
|
||||||
// Float sfcPressure = getModelSfcPressure(pnt, refTime,
|
// DR17084
|
||||||
// validTime,
|
NcSoundingLayer sfcLayer = getModelSfcLayer(pnt, refTime,
|
||||||
// pluginName, modelName);
|
validTime,pluginName, modelName, coord);
|
||||||
// System.out.println("getModelSfcPressure took "+
|
if (sfcLayer != null) {
|
||||||
// (System.currentTimeMillis()-t013) + " ms");
|
if(sfcLayer.getPressure()== NcSoundingLayer.MISSING &&
|
||||||
// /if (sfcPressure == null) {
|
sfcLayer.getGeoHeight()!= NcSoundingLayer.MISSING){
|
||||||
pf.setSfcPress(-9999.f);
|
//surface layer does not have pressure, but surface height is available
|
||||||
// }
|
//see if we can interpolate surface pressure from upper and lower layer pressure
|
||||||
// else {
|
for (int i = 0; i < soundLyList.size(); i++) {
|
||||||
// pf.setSfcPress(sfcPressure/100F);
|
if (soundLyList.get(i).getGeoHeight() > sfcLayer.getGeoHeight()) {
|
||||||
// }
|
if (i > 0) {
|
||||||
// System.out.println("surface pressure ="+pf.getSfcPress()+
|
float p1 = soundLyList.get(i - 1).getPressure();
|
||||||
// " lat= "+lat+ " lon="+lon);
|
float p2 = soundLyList.get(i).getPressure();
|
||||||
|
float h1 = soundLyList.get(i - 1).getGeoHeight();
|
||||||
|
float h2 = soundLyList.get(i).getGeoHeight();
|
||||||
|
float h = sfcLayer.getGeoHeight();
|
||||||
|
float p = p1 + (h - h1) * (p1 - p2) / (h1 - h2);
|
||||||
|
sfcLayer.setPressure(p);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(sfcLayer.getPressure()!= NcSoundingLayer.MISSING){
|
||||||
|
// cut sounding layer under ground, i.e. below surface layer
|
||||||
|
for(int i= soundLyList.size()-1; i>=0 ; i--){
|
||||||
|
NcSoundingLayer ly = soundLyList.get(i);
|
||||||
|
if(ly.getPressure() >= sfcLayer.getPressure()){
|
||||||
|
soundLyList.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
soundLyList.add(0, sfcLayer);
|
||||||
|
}
|
||||||
|
pf.setSfcPress(sfcLayer.getPressure());
|
||||||
|
pf.setStationElevation(sfcLayer.getGeoHeight());
|
||||||
|
}
|
||||||
|
//System.out.println("surface pressure ="+pf.getSfcPress());
|
||||||
|
//end DR17084
|
||||||
// calculate dew point if necessary
|
// calculate dew point if necessary
|
||||||
MergeSounding ms = new MergeSounding();
|
MergeSounding ms = new MergeSounding();
|
||||||
// ms.spfhToDewpoint(layerList);
|
// ms.spfhToDewpoint(layerList);
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
* 01/27/2015 DR#17006,
|
* 01/27/2015 DR#17006,
|
||||||
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
||||||
* in Volume Browser
|
* in Volume Browser
|
||||||
|
* 02/03/2015 DR#17079 Chin Chen Soundings listed out of order if frames go into new month
|
||||||
|
* 02/05/2015 DR16888 CHin Chen merge 12/11/2014 fixes at version 14.2.2 and check in again to 14.3.1
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Chin Chen
|
* @author Chin Chen
|
||||||
|
@ -581,12 +583,14 @@ public class NsharpResourceHandler {
|
||||||
* The following code is to create a list of stns within the range
|
* The following code is to create a list of stns within the range
|
||||||
* of user defined radius (minimum distance) to "current" station
|
* of user defined radius (minimum distance) to "current" station
|
||||||
* and also has data loaded with same time line as "current" time
|
* and also has data loaded with same time line as "current" time
|
||||||
* line. Note that we have two time line formats, MM.DDVxxx(day)
|
* line. Note that we have two time line formats, YYMMDD/HHVxxx(day)
|
||||||
* and MM.DD(day). A same time line is compared by MM.DD
|
* and YYMMDD/HH(day) saved in NsharpSoundingElementStateProperty.
|
||||||
* only. All qualified stations, including current station, found
|
* A same time line is compared by "YYMMDD/HH" only. All qualified
|
||||||
* will be listed and used for SND comparison.
|
* stations, including current station, found will be listed and used
|
||||||
|
* for SND comparison.
|
||||||
*/
|
*/
|
||||||
String TIME_COMPARE_STRING = "MM.DD";
|
//DR#17079
|
||||||
|
String TIME_COMPARE_STRING = "YYMMDD/HH";
|
||||||
compSndSelectedElemList.clear();
|
compSndSelectedElemList.clear();
|
||||||
// CompSndSelectedElem curStnTimeIndexCouple = new
|
// CompSndSelectedElem curStnTimeIndexCouple = new
|
||||||
// CompSndSelectedElem(currentStnElementListIndex,currentTimeElementListIndex,currentSndElementListIndex);
|
// CompSndSelectedElem(currentStnElementListIndex,currentTimeElementListIndex,currentSndElementListIndex);
|
||||||
|
@ -1074,13 +1078,14 @@ public class NsharpResourceHandler {
|
||||||
|
|
||||||
private class NsharpOperationElementComparator implements
|
private class NsharpOperationElementComparator implements
|
||||||
Comparator<NsharpOperationElement> {
|
Comparator<NsharpOperationElement> {
|
||||||
@Override
|
|
||||||
|
@Override
|
||||||
public int compare(NsharpOperationElement o1, NsharpOperationElement o2) {
|
public int compare(NsharpOperationElement o1, NsharpOperationElement o2) {
|
||||||
|
|
||||||
String s1tok1 = "";// , s1tok2="";
|
String s1tok1 = "";// , s1tok2="";
|
||||||
String s2tok1 = "";// , s2tok2="";
|
String s2tok1 = "";// , s2tok2="";
|
||||||
StringTokenizer st1 = new StringTokenizer(
|
String o1Desc = o1.getElementDescription();
|
||||||
o1.getElementDescription());
|
StringTokenizer st1 = new StringTokenizer(o1Desc);
|
||||||
int tkCount1 = st1.countTokens();
|
int tkCount1 = st1.countTokens();
|
||||||
// System.out.println("ElementComparatorTimeLine o1="+o1.elementDescription+"c1 = "+tkCount1);
|
// System.out.println("ElementComparatorTimeLine o1="+o1.elementDescription+"c1 = "+tkCount1);
|
||||||
if (tkCount1 >= 1) {
|
if (tkCount1 >= 1) {
|
||||||
|
@ -1090,8 +1095,8 @@ public class NsharpResourceHandler {
|
||||||
|
|
||||||
}
|
}
|
||||||
// System.out.println("t1="+s1tok1+" t2="+s2tok1);
|
// System.out.println("t1="+s1tok1+" t2="+s2tok1);
|
||||||
StringTokenizer st2 = new StringTokenizer(
|
String o2Desc = o2.getElementDescription();
|
||||||
o2.getElementDescription());
|
StringTokenizer st2 = new StringTokenizer(o2Desc);
|
||||||
int tkCount2 = st2.countTokens();
|
int tkCount2 = st2.countTokens();
|
||||||
// System.out.println("ElementComparatorTimeLine o2="+o2.elementDescription+"c2 = "+tkCount2);
|
// System.out.println("ElementComparatorTimeLine o2="+o2.elementDescription+"c2 = "+tkCount2);
|
||||||
if (tkCount2 >= 1) {
|
if (tkCount2 >= 1) {
|
||||||
|
@ -1890,21 +1895,22 @@ public class NsharpResourceHandler {
|
||||||
Map<String, List<NcSoundingLayer>> soundMap,
|
Map<String, List<NcSoundingLayer>> soundMap,
|
||||||
NsharpStationInfo stnInfo, boolean fromArchive) {
|
NsharpStationInfo stnInfo, boolean fromArchive) {
|
||||||
|
|
||||||
// // testing code // stnInfo.setStnId("KUKI");
|
/*
|
||||||
// Set<String> keysettest = new HashSet<String>(soundMap.keySet());
|
* testing code : this is helpful code. do not remove.
|
||||||
// for (String key : keysettest) {
|
*
|
||||||
// List<NcSoundingLayer> sndLy = soundMap.remove(key); // String
|
Set<String> keysettest = new HashSet<String>(soundMap.keySet());
|
||||||
// // newkey=
|
for (String key : keysettest) {
|
||||||
// String newkey =key.replace("NCUAIR", "gpduair"); // String newkey =
|
List<NcSoundingLayer> sndLy = soundMap.remove(key);
|
||||||
// String newkey= key.replace("NAMS", "SSS");
|
String newkey= key.replace("NAMS", "SSS");
|
||||||
// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000");
|
//String newkey = key.replace("130925", "150102");
|
||||||
// soundMap.put(newkey, sndLy);
|
soundMap.put(newkey, sndLy);
|
||||||
// }
|
}
|
||||||
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
|
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
|
||||||
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
|
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
|
||||||
// // "NAMS","SSS"));
|
// // "NAMS","SSS"));
|
||||||
// //
|
*
|
||||||
|
* END testing code
|
||||||
|
*/
|
||||||
if (stnInfo.getStnId() != null && stnInfo.getStnId().indexOf(" ") >= 0) {
|
if (stnInfo.getStnId() != null && stnInfo.getStnId().indexOf(" ") >= 0) {
|
||||||
// take care stnId with SPACE case.
|
// take care stnId with SPACE case.
|
||||||
String stnId = stnInfo.getStnId();
|
String stnId = stnInfo.getStnId();
|
||||||
|
@ -2022,10 +2028,18 @@ public class NsharpResourceHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As of 2014 April 9, current time description string is
|
* Chin: 04092014, current time description string is
|
||||||
* defined as "YYMMDD/HH(DOW)" or "YYMMDD/HH(DOW)Vxxx". Convert
|
* defined as "YYMMDD/HH(DOW)" or "YYMMDD/HH(DOW)Vxxx". Convert
|
||||||
* them to "DD.HH(DOW)" or "DD.HHVxxx(DOW)" for GUI display.
|
* them to "DD.HH(DOW)" or "DD.HHVxxx(DOW)" for GUI display.
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
* Chin: 02032015
|
||||||
|
* "DR17079: Soundings listed out of order if frames go into new month"
|
||||||
|
* To fix DR17079, keep time line format as yymmdd/hh(day)Vxxx to be saved
|
||||||
|
* in NsharpSoundingElementStateProperty.
|
||||||
|
* We will convert display string while drawing.
|
||||||
|
* This chunk code is to convert time line format from yymmdd/hh(day)Vxxx to dd.hh(day)Vxxx
|
||||||
|
*
|
||||||
timeLine = timeLine.substring(4); // get rid of YYMM
|
timeLine = timeLine.substring(4); // get rid of YYMM
|
||||||
if (timeLine.contains("V")) {
|
if (timeLine.contains("V")) {
|
||||||
String[] s1Str = timeLine.split("V"); // split
|
String[] s1Str = timeLine.split("V"); // split
|
||||||
|
@ -2042,6 +2056,9 @@ public class NsharpResourceHandler {
|
||||||
// "DD/HHVxxx(DOW)"
|
// "DD/HHVxxx(DOW)"
|
||||||
}
|
}
|
||||||
timeLine = timeLine.replace("/", "."); // replace "/" with "."
|
timeLine = timeLine.replace("/", "."); // replace "/" with "."
|
||||||
|
*
|
||||||
|
* end DR17079
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
// recreate stnId_timeLine_sndType
|
// recreate stnId_timeLine_sndType
|
||||||
stnId_timeLine_sndType = stnId + " " + timeLine + " " + sndType;
|
stnId_timeLine_sndType = stnId + " " + timeLine + " " + sndType;
|
||||||
|
@ -2657,7 +2674,10 @@ public class NsharpResourceHandler {
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (compareSndIsOn) {
|
||||||
|
handleUserPickNewTimeLine(currentTimeElementListIndex) ;
|
||||||
|
return;
|
||||||
|
}
|
||||||
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
|
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
|
||||||
+ 1;
|
+ 1;
|
||||||
setCurSndProfileProp();
|
setCurSndProfileProp();
|
||||||
|
@ -2794,7 +2814,10 @@ public class NsharpResourceHandler {
|
||||||
// we should get out of here
|
// we should get out of here
|
||||||
break;
|
break;
|
||||||
} else if (compareSndIsOn) {
|
} else if (compareSndIsOn) {
|
||||||
boolean found = false;
|
handleUserPickNewTimeLine(targetIndex) ;
|
||||||
|
return;
|
||||||
|
/* DR16888 02052015
|
||||||
|
* boolean found = false;
|
||||||
if (currentStnElementListIndex >= 0
|
if (currentStnElementListIndex >= 0
|
||||||
&& currentSndElementListIndex >= 0
|
&& currentSndElementListIndex >= 0
|
||||||
&& stnTimeSndTable
|
&& stnTimeSndTable
|
||||||
|
@ -2839,6 +2862,7 @@ public class NsharpResourceHandler {
|
||||||
// not
|
// not
|
||||||
// we should get out of here
|
// we should get out of here
|
||||||
break;
|
break;
|
||||||
|
*/
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
||||||
* 01/27/2015 DR#17006,
|
* 01/27/2015 DR#17006,
|
||||||
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
||||||
* in Volume Browser
|
* in Volume Browser
|
||||||
*
|
* 02/03/2015 DR#17084 Chin Chen Model soundings being interpolated below the surface for elevated sites
|
||||||
|
* 02/05/2015 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
|
||||||
|
* merged 12/11/2014 fixes at version 14.2.2 and check in again to 14.3.1
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Chin Chen
|
* @author Chin Chen
|
||||||
|
@ -38,6 +40,7 @@ import gov.noaa.nws.ncep.ui.nsharp.background.NsharpSkewTPaneBackground;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.background.NsharpTurbulencePaneBackground;
|
import gov.noaa.nws.ncep.ui.nsharp.background.NsharpTurbulencePaneBackground;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor;
|
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative;
|
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative;
|
||||||
|
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._lplvalues;
|
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._lplvalues;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._parcel;
|
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._parcel;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNativeConstants;
|
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNativeConstants;
|
||||||
|
@ -1256,32 +1259,40 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
double p_mb = c.y;
|
double p_mb = c.y;
|
||||||
double temp = c.x;
|
double temp = c.x;
|
||||||
float htFt, htM, relh = -1;
|
float htFt, htM, relh = -1;
|
||||||
String curStrFormat, curStrFormat1;
|
String curStrFormat, curStrFormat1, htMStr, htFtStr;
|
||||||
String curStr, curStr1;// , curStr2,curStr3;
|
String curStr, curStr1;// , curStr2,curStr3;
|
||||||
VerticalAlignment vAli;
|
VerticalAlignment vAli;
|
||||||
HorizontalAlignment hAli;
|
HorizontalAlignment hAli;
|
||||||
|
|
||||||
// curStr3 = rscHandler.getPickedStnInfoStr()+"\n";
|
// curStr3 = rscHandler.getPickedStnInfoStr()+"\n";
|
||||||
|
//Chin, DR17084
|
||||||
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib
|
if(soundingLys.get(0).getGeoHeight() <0){
|
||||||
|
htMStr="M";
|
||||||
|
htFtStr="M";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib
|
||||||
.ihght((float) p_mb));
|
.ihght((float) p_mb));
|
||||||
htFt = nsharpNative.nsharpLib.mtof(htM);
|
htFt = nsharpNative.nsharpLib.mtof(htM);
|
||||||
|
htMStr = Integer.toString(Math.round(htM));
|
||||||
|
htFtStr = Integer.toString(Math.round(htFt));
|
||||||
|
}
|
||||||
if (nsharpNative.nsharpLib.itemp((float) p_mb) > -9998.0
|
if (nsharpNative.nsharpLib.itemp((float) p_mb) > -9998.0
|
||||||
&& nsharpNative.nsharpLib.idwpt((float) p_mb) > -9998.0) {
|
&& nsharpNative.nsharpLib.idwpt((float) p_mb) > -9998.0) {
|
||||||
FloatByReference parm = new FloatByReference(0);
|
FloatByReference parm = new FloatByReference(0);
|
||||||
relh = nsharpNative.nsharpLib.relh((float) p_mb, parm);
|
relh = nsharpNative.nsharpLib.relh((float) p_mb, parm);
|
||||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %5.0fft/%.0fm agl %2.0f%%\n";
|
curStrFormat = "%4.0f/%.0fkt %4.0fmb %sft/%sm agl %2.0f%%\n";
|
||||||
curStr = String.format(curStrFormat,
|
curStr = String.format(curStrFormat,
|
||||||
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
||||||
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFt,
|
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFtStr,
|
||||||
htM, relh);
|
htMStr, relh);
|
||||||
} else {
|
} else {
|
||||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %5.0fft/%.0fm agl\n";
|
curStrFormat = "%4.0f/%.0fkt %4.0fmb %sft/%sm agl\n";
|
||||||
curStr = String
|
curStr = String
|
||||||
.format(curStrFormat,
|
.format(curStrFormat,
|
||||||
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
||||||
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb,
|
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb,
|
||||||
htFt, htM);
|
htFtStr, htMStr);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* curStrFormat1 = "%s/%s %4.1f/%4.1f%cC %4.0f/%.0f kt\n"; curStr1 =
|
* curStrFormat1 = "%s/%s %4.1f/%4.1f%cC %4.0f/%.0f kt\n"; curStr1 =
|
||||||
|
@ -1866,7 +1877,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
boolean overlayIsOn = rscHandler.isOverlayIsOn();
|
boolean overlayIsOn = rscHandler.isOverlayIsOn();
|
||||||
if (graphConfigProperty != null) {
|
if (graphConfigProperty != null) {
|
||||||
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
|
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
|
||||||
&& !compareTmIsOn) {
|
&& !compareTmIsOn && !compareSndIsOn) {
|
||||||
if (editGraphOn)
|
if (editGraphOn)
|
||||||
plotPressureTempEditPoints(target, world,
|
plotPressureTempEditPoints(target, world,
|
||||||
NsharpConstants.color_red, TEMP_TYPE,
|
NsharpConstants.color_red, TEMP_TYPE,
|
||||||
|
@ -1874,7 +1885,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
// dew point curve
|
// dew point curve
|
||||||
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
|
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
|
||||||
&& !compareTmIsOn) {
|
&& !compareTmIsOn && !compareSndIsOn) {
|
||||||
if (editGraphOn)
|
if (editGraphOn)
|
||||||
plotPressureTempEditPoints(target, world,
|
plotPressureTempEditPoints(target, world,
|
||||||
NsharpConstants.color_green, DEWPOINT_TYPE,
|
NsharpConstants.color_green, DEWPOINT_TYPE,
|
||||||
|
@ -1882,7 +1893,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
// plot wet bulb trace
|
// plot wet bulb trace
|
||||||
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
|
||||||
&& !compareStnIsOn && !compareTmIsOn) {
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
NsharpLineProperty lp = linePropertyMap
|
NsharpLineProperty lp = linePropertyMap
|
||||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
|
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
|
||||||
target.drawWireframeShape(wetBulbTraceRscShape,
|
target.drawWireframeShape(wetBulbTraceRscShape,
|
||||||
|
@ -1891,7 +1902,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
// plot virtual temperature trace
|
// plot virtual temperature trace
|
||||||
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
|
||||||
&& !compareStnIsOn && !compareTmIsOn) {
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
NsharpLineProperty lp = linePropertyMap
|
NsharpLineProperty lp = linePropertyMap
|
||||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
|
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
|
||||||
target.drawWireframeShape(vtempTraceCurveRscShape,
|
target.drawWireframeShape(vtempTraceCurveRscShape,
|
||||||
|
@ -1900,7 +1911,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
// virtual temperature parcel trace curve
|
// virtual temperature parcel trace curve
|
||||||
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
|
||||||
&& !compareStnIsOn && !compareTmIsOn
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
|
||||||
&& !overlayIsOn) {
|
&& !overlayIsOn) {
|
||||||
if (soundingLys.size() > 0) {
|
if (soundingLys.size() > 0) {
|
||||||
NsharpLineProperty lp = linePropertyMap
|
NsharpLineProperty lp = linePropertyMap
|
||||||
|
@ -1912,7 +1923,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
|
||||||
&& dacpeTraceRscShape != null && !compareStnIsOn
|
&& dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
|
||||||
&& !compareTmIsOn && !overlayIsOn) {
|
&& !compareTmIsOn && !overlayIsOn) {
|
||||||
if (soundingLys.size() > 0) {
|
if (soundingLys.size() > 0) {
|
||||||
NsharpLineProperty lp = linePropertyMap
|
NsharpLineProperty lp = linePropertyMap
|
||||||
|
@ -1924,7 +1935,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
|
||||||
&& !compareStnIsOn && !compareTmIsOn) {
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
// draw effective layer lines
|
// draw effective layer lines
|
||||||
// drawEffectiveLayerLines(target);
|
// drawEffectiveLayerLines(target);
|
||||||
target.drawWireframeShape(effectiveLayerLineShape,
|
target.drawWireframeShape(effectiveLayerLineShape,
|
||||||
|
@ -1933,7 +1944,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
// cloud
|
// cloud
|
||||||
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
|
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
|
||||||
&& !compareStnIsOn && !compareTmIsOn) {
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
if (cloudFMShape != null)
|
if (cloudFMShape != null)
|
||||||
target.drawShadedShape(cloudFMShape, 1f);
|
target.drawShadedShape(cloudFMShape, 1f);
|
||||||
if (cloudFMLabelShape != null)
|
if (cloudFMLabelShape != null)
|
||||||
|
@ -1944,7 +1955,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
target.drawShadedShape(cloudCEShape, 1f);
|
target.drawShadedShape(cloudCEShape, 1f);
|
||||||
}
|
}
|
||||||
if (graphConfigProperty.isOmega() == true
|
if (graphConfigProperty.isOmega() == true
|
||||||
&& !compareStnIsOn && !compareTmIsOn) {
|
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
if (NsharpLoadDialog.getAccess() != null
|
if (NsharpLoadDialog.getAccess() != null
|
||||||
&& (NsharpLoadDialog.getAccess()
|
&& (NsharpLoadDialog.getAccess()
|
||||||
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
|
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
|
||||||
|
@ -1956,7 +1967,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// by default, draw everything
|
// by default, draw everything
|
||||||
if (!compareStnIsOn && !compareTmIsOn) {
|
if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||||
if (editGraphOn)
|
if (editGraphOn)
|
||||||
plotPressureTempEditPoints(target, world,
|
plotPressureTempEditPoints(target, world,
|
||||||
NsharpConstants.color_red, TEMP_TYPE,
|
NsharpConstants.color_red, TEMP_TYPE,
|
||||||
|
@ -2695,11 +2706,11 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
||||||
// Chin 08/04/2014, fixed surface height plotting bug
|
// Chin 08/04/2014, fixed surface height plotting bug
|
||||||
// also fixed to draw height mraker based on AGL (i.e. above surface
|
// also fixed to draw height mraker based on AGL (i.e. above surface
|
||||||
// level)
|
// level)
|
||||||
int sfcIndex = nsharpNative.nsharpLib.sfc();
|
int sfcIndex = 0; ////DR#17084 nnsharpNative.nsharpLib.sfc();
|
||||||
int sfcAsl = 0;
|
int sfcAsl = 0;
|
||||||
if (sfcIndex >= 0
|
if (//DR#17084 sfcIndex >= 0
|
||||||
&& sfcIndex < soundingLys.size()
|
//DR#17084 && sfcIndex < soundingLys.size()
|
||||||
&& soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) {
|
soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) {
|
||||||
double y = world.mapY(NsharpWxMath.getSkewTXY(
|
double y = world.mapY(NsharpWxMath.getSkewTXY(
|
||||||
soundingLys.get(sfcIndex).getPressure(), 0).y);
|
soundingLys.get(sfcIndex).getPressure(), 0).y);
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -11,6 +11,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------- ------- -------- -----------
|
* ------- ------- -------- -----------
|
||||||
* 04/23/2012 229 Chin Chen Initial coding
|
* 04/23/2012 229 Chin Chen Initial coding
|
||||||
|
* 02/03/2015 DR#17079 Chin Chen Soundings listed out of order if frames go into new month
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -244,6 +245,32 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
|
||||||
target.clearClippingPlane();
|
target.clearClippingPlane();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Chin 02032015 - DR17079
|
||||||
|
* currently time line description is YYMMDD/HHVxxx(day) or
|
||||||
|
* YYMMDD/HH(day) saved in NsharpSoundingElementStateProperty
|
||||||
|
* convert it to DD.HH for displaying
|
||||||
|
*/
|
||||||
|
private String convertTimeLineForDisplay(String tl){
|
||||||
|
String timeLine = tl;
|
||||||
|
timeLine = timeLine.substring(4); // get rid of YYMM
|
||||||
|
if (timeLine.contains("V")) {
|
||||||
|
String[] s1Str = timeLine.split("V"); // split
|
||||||
|
// DD/HH(DOW)Vxxx to
|
||||||
|
// "DD/HH(DOW)" and
|
||||||
|
// "xxx"
|
||||||
|
String[] s2Str = s1Str[0].split("\\("); // split
|
||||||
|
// "DD/HH(DOW)" to
|
||||||
|
// "DD/HH" and
|
||||||
|
// "DOW)"
|
||||||
|
timeLine = s2Str[0] + "V" + s1Str[1] + "(" + s2Str[1]; // put
|
||||||
|
// together
|
||||||
|
// to
|
||||||
|
// "DD/HHVxxx(DOW)"
|
||||||
|
}
|
||||||
|
timeLine = timeLine.replace("/", "."); // replace "/" with "."
|
||||||
|
return timeLine;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private void drawNsharpTimelinBox(IGraphicsTarget target, Rectangle rect)
|
private void drawNsharpTimelinBox(IGraphicsTarget target, Rectangle rect)
|
||||||
|
@ -344,8 +371,8 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
|
||||||
x = x + xGap;
|
x = x + xGap;
|
||||||
RGB tmLnColor = rscHandler.getElementColorMap().get(sta.name());
|
RGB tmLnColor = rscHandler.getElementColorMap().get(sta.name());
|
||||||
String tmDesStr = elm.getElementDescription();
|
String tmDesStr = elm.getElementDescription();
|
||||||
// d2dlite - convert timeDesStr for GUI display
|
// DR17079: convert timeDesStr for GUI display
|
||||||
|
tmDesStr = convertTimeLineForDisplay(tmDesStr);
|
||||||
double tmX = x;
|
double tmX = x;
|
||||||
|
|
||||||
if (compareTmIsOn
|
if (compareTmIsOn
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
* 01/13/2014 Chin Chen TTR829- when interpolation, edit graph is allowed
|
* 01/13/2014 Chin Chen TTR829- when interpolation, edit graph is allowed
|
||||||
* 01/22/2014 Chin Chen DR17003 issue: NSHARP sounding display throws errors when swapping into main pane when show text is turned on.
|
* 01/22/2014 Chin Chen DR17003 issue: NSHARP sounding display throws errors when swapping into main pane when show text is turned on.
|
||||||
* 10/20/2014 Chin Chen DR16864, D2D does not use unload button. Check to make sure not D2D instance before access unload button.
|
* 10/20/2014 Chin Chen DR16864, D2D does not use unload button. Check to make sure not D2D instance before access unload button.
|
||||||
|
* 02/04/2015 DR16888 Chin Chen do not allow swap between Skewt and hodo when comparison is on, check in with DR17079
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Chin Chen
|
* @author Chin Chen
|
||||||
|
@ -185,10 +186,13 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
graphModeBtnSkew.setEnabled(true);
|
graphModeBtnSkew.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null)
|
||||||
|
graphModeBtnHodo.setEnabled(true);
|
||||||
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
|
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
|
||||||
graphModeBtnSkew.setBackground(colorBlue);
|
graphModeBtnSkew.setBackground(colorBlue);
|
||||||
graphModeBtnTurb.setBackground(colorGrey);
|
graphModeBtnTurb.setBackground(colorGrey);
|
||||||
graphModeBtnIcing.setBackground(colorGrey);
|
graphModeBtnIcing.setBackground(colorGrey);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setBackground(colorGrey);
|
||||||
graphEditBtn.setEnabled(true);
|
graphEditBtn.setEnabled(true);
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
compareTmBtn.setEnabled(true);
|
compareTmBtn.setEnabled(true);
|
||||||
|
@ -219,6 +223,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
compareStnBtn.setEnabled(false);
|
compareStnBtn.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||||
|
@ -232,6 +237,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||||
} else if (compareSndIsOn) {
|
} else if (compareSndIsOn) {
|
||||||
|
@ -243,6 +249,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
overlayBtn.setEnabled(false);
|
overlayBtn.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||||
|
@ -255,6 +262,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
overlayBtn.setEnabled(false);
|
overlayBtn.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||||
|
@ -268,6 +276,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||||
}
|
}
|
||||||
|
@ -707,6 +716,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
|
||||||
graphEditBtn.setText(EDIT_GRAPH_OFF);
|
graphEditBtn.setText(EDIT_GRAPH_OFF);
|
||||||
currentGraphMode = NsharpConstants.GRAPH_SKEWT;
|
currentGraphMode = NsharpConstants.GRAPH_SKEWT;
|
||||||
NsharpEditor editor = NsharpEditor.getActiveNsharpEditor();
|
NsharpEditor editor = NsharpEditor.getActiveNsharpEditor();
|
||||||
|
@ -948,6 +958,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(false);
|
dataEditBtn.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
cfgBtn.setEnabled(false);
|
cfgBtn.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -962,6 +973,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
|
||||||
interpBtn.setEnabled(true);
|
interpBtn.setEnabled(true);
|
||||||
cfgBtn.setEnabled(true);
|
cfgBtn.setEnabled(true);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1006,6 +1018,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(false);
|
dataEditBtn.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
cfgBtn.setEnabled(false);
|
cfgBtn.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1020,6 +1033,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||||
interpBtn.setEnabled(true);
|
interpBtn.setEnabled(true);
|
||||||
cfgBtn.setEnabled(true);
|
cfgBtn.setEnabled(true);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1066,6 +1080,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(false);
|
dataEditBtn.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
cfgBtn.setEnabled(false);
|
cfgBtn.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1080,6 +1095,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||||
interpBtn.setEnabled(true);
|
interpBtn.setEnabled(true);
|
||||||
cfgBtn.setEnabled(true);
|
cfgBtn.setEnabled(true);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1124,6 +1140,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(false);
|
dataEditBtn.setEnabled(false);
|
||||||
graphModeBtnTurb.setEnabled(false);
|
graphModeBtnTurb.setEnabled(false);
|
||||||
graphModeBtnIcing.setEnabled(false);
|
graphModeBtnIcing.setEnabled(false);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||||
interpBtn.setEnabled(false);
|
interpBtn.setEnabled(false);
|
||||||
cfgBtn.setEnabled(false);
|
cfgBtn.setEnabled(false);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
@ -1138,6 +1155,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
||||||
dataEditBtn.setEnabled(true);
|
dataEditBtn.setEnabled(true);
|
||||||
graphModeBtnTurb.setEnabled(true);
|
graphModeBtnTurb.setEnabled(true);
|
||||||
graphModeBtnIcing.setEnabled(true);
|
graphModeBtnIcing.setEnabled(true);
|
||||||
|
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||||
interpBtn.setEnabled(true);
|
interpBtn.setEnabled(true);
|
||||||
cfgBtn.setEnabled(true);
|
cfgBtn.setEnabled(true);
|
||||||
if (!imD2d)
|
if (!imD2d)
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#20130624 1966 rferrel The acars pattern changed to place files in the proper subdirectories.
|
#20130624 1966 rferrel The acars pattern changed to place files in the proper subdirectories.
|
||||||
# Name changes to reflect plugin names for modelsounding, goessounding, poessounding.
|
# Name changes to reflect plugin names for modelsounding, goessounding, poessounding.
|
||||||
#20140424 3068 dgilling Add pattern for MetOp-B ASCAT T winds.
|
#20140424 3068 dgilling Add pattern for MetOp-B ASCAT T winds.
|
||||||
|
#20150202 4066 rferrel Add pattern form Earth Networks Total Lightning: SFPA42
|
||||||
#***************************************************************
|
#***************************************************************
|
||||||
# AWIPS 1 PATTERN GRAPHIC ^[PQ].* /redbook/Raw
|
# AWIPS 1 PATTERN GRAPHIC ^[PQ].* /redbook/Raw
|
||||||
# PGNA00 KWNS 010001 !redbook 1_1/NMCGPHMCD/MCDSUM/PXSF001CN/20110201 0001
|
# PGNA00 KWNS 010001 !redbook 1_1/NMCGPHMCD/MCDSUM/PXSF001CN/20110201 0001
|
||||||
|
@ -384,6 +385,11 @@ HDS ^(IUS(Z[0-9]|Y4)[0-9]) ([A-Z]{4}) (..)(..)(..)
|
||||||
HDS ^(SF(US|PA)41) ([A-Z]{4}) (..)(..)(..)
|
HDS ^(SF(US|PA)41) ([A-Z]{4}) (..)(..)(..)
|
||||||
FILE -overwrite -log -edex -close /data_store/binlightning/(\4:yyyy)(\4:mm)\4/\5/\1_\3_\4\5\6_(seq).nldn.%Y%m%d%H
|
FILE -overwrite -log -edex -close /data_store/binlightning/(\4:yyyy)(\4:mm)\4/\5/\1_\3_\4\5\6_(seq).nldn.%Y%m%d%H
|
||||||
|
|
||||||
|
# WMO Heading for Earth Networks Total Lightning
|
||||||
|
|
||||||
|
HDS ^(SF(US|PA)42) ([A-Z]{4}) (..)(..)(..)
|
||||||
|
FILE -overwrite -log -edex -close /data_store/entlightning/(\4:yyyy)(\4:mm)\4/\5/\1_\3_\4\5\6_(seq).nldn.%Y%m%d%H
|
||||||
|
|
||||||
# AWIPS1: TEXT ^[ABCFMNRSUVW]......[KPTMC] /text/NO_STORE
|
# AWIPS1: TEXT ^[ABCFMNRSUVW]......[KPTMC] /text/NO_STORE
|
||||||
# TEXT ^[ABCFMNRSUVW].....[KPTMC] /text/NO_STORE
|
# TEXT ^[ABCFMNRSUVW].....[KPTMC] /text/NO_STORE
|
||||||
# TEXT ^DF.* /text/NO_STORE
|
# TEXT ^DF.* /text/NO_STORE
|
||||||
|
|
Loading…
Add table
Reference in a new issue