Merge branch 'master_14.3.1' into master_14.3.2

Conflicts:
	edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/doConfig.py

Former-commit-id: 307e986b8e9ce89ad1eb7b28f88afe82c2596f30
This commit is contained in:
Fay.Liang 2015-02-02 10:06:58 -05:00
commit 15f28c0245
27 changed files with 1559 additions and 1653 deletions

View file

@ -175,11 +175,11 @@
<ini-substitutions>
<max-memory>
<value>256M</value>
<value>384M</value>
</max-memory>
<max-perm>
<value>64M</value>
<value>96M</value>
</max-perm>
</ini-substitutions>
</memory-setting>

View file

@ -6,5 +6,5 @@
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Set the initial top level menu -->
<contribute xsi:type="titleItem" titleText="---Multiple-Radar/Multiple-Sensor---" id="MRMS-SVR"/>
<contribute xsi:type="subinclude" fileName="menus/mrms/mrmsProducts.xml"/>
<!-- <contribute xsi:type="subinclude" fileName="menus/mrms/mrmsProducts.xml"/> -->
</menuTemplate>

View file

@ -85,8 +85,6 @@ public class DrawDQCStations {
private static DrawDQCStations instance = null;
private DailyQcUtils dqc = DailyQcUtils.getInstance();
private static final List<NamedColorUseSet> pColorSetGroup = MPEColors
.build_mpe_colors();
@ -101,13 +99,13 @@ public class DrawDQCStations {
int points_flag;
boolean qpf_on = MPEDisplayManager.getCurrent().isQpf();
boolean qpf_on = false;
boolean flf_on = false;
boolean maxmin_on = false;
int isom = dqc.isom;
int isom = DailyQcUtils.isom;
int pcpn_time_step = 0;
@ -119,7 +117,7 @@ public class DrawDQCStations {
public static int grids_flag = 0;
int dflag[] = dqc.dflag;
int dflag[] = DailyQcUtils.dflag;
int pcpn_time = 0;
@ -298,25 +296,25 @@ public class DrawDQCStations {
time_pos = 0;
display_flag = 0;
hed = 0;
plot_view = dqc.plot_view;
contour_flag = dqc.contour_flag;
points_flag = dqc.points_flag;
plot_view = DailyQcUtils.plot_view;
contour_flag = DailyQcUtils.contour_flag;
points_flag = DailyQcUtils.points_flag;
qpf_on = MPEDisplayManager.getCurrent().isQpf();
flf_on = MPEDisplayManager.getCurrent().isZflag();
maxmin_on = MPEDisplayManager.getCurrent().isMaxmin();
tbuf = new StringBuilder();
isom = dqc.isom;
isom = DailyQcUtils.isom;
pcpn_time_step = MPEDisplayManager.pcpn_time_step;
map_flag = dqc.map_flag;
pcp_flag = dqc.pcp_flag;
pcpn_day = dqc.pcpn_day;
grids_flag = dqc.grids_flag;
dflag = dqc.dflag;
pcpn_time = dqc.pcpn_time;
// pdata = DailyQcUtils.pdata;
old_isom = dqc.old_isom;
// tdata = DailyQcUtils.tdata;
// zdata = DailyQcUtils.zdata;
map_flag = DailyQcUtils.map_flag;
pcp_flag = DailyQcUtils.pcp_flag;
pcpn_day = DailyQcUtils.pcpn_day;
grids_flag = DailyQcUtils.grids_flag;
dflag = DailyQcUtils.dflag;
pcpn_time = DailyQcUtils.pcpn_time;
// pdata = DailyQcUtils.pdata;
old_isom = DailyQcUtils.old_isom;
// tdata = DailyQcUtils.tdata;
// zdata = DailyQcUtils.zdata;
/*
* get the token dqc_preprocessor_basetime, the default value is 12Z
@ -431,14 +429,17 @@ public class DrawDQCStations {
if (contour_flag == 1) {
Set<DisplayMode> mode = mpd.getDisplayMode();
if (md.getResourceList().containsRsc(pgp)) {
md.getResourceList().removeRsc(pgp);
if (display.getDescriptor().getResourceList()
.containsRsc(pgp)) {
display.getDescriptor().getResourceList()
.removeRsc(pgp);
pgp.dispose();
}
if (mode.contains(DisplayMode.Contour)) {
// we are ok
} else {
mpd.toggleDisplayMode(DisplayMode.Contour);
mode = mpd.getDisplayMode();
if (mode.contains(DisplayMode.Image)) {
mpd.toggleDisplayMode(DisplayMode.Image);
}
@ -717,7 +718,7 @@ public class DrawDQCStations {
Calendar ltime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
StringBuilder mbuf = new StringBuilder();
int dqcEndingObsTime = dqc.getEnding6HourObsTime();
int dqcEndingObsTime = DailyQcUtils.getEnding6HourObsTime();
tbuf = new StringBuilder();
if (qpf_on == true) {
@ -731,10 +732,10 @@ public class DrawDQCStations {
/* Precipitation period is always 12z-12z. */
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
ltime.setTime(dqc.pdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(dqc.pdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
}
tbuf.append("Precipitation ");
@ -784,18 +785,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
if (dqc.pdata[pcpn_day].level == 1) {
if (DailyQcUtils.pdata[pcpn_day].level == 1) {
tbuf.append(" - Level 1");
} else if (dqc.pdata[pcpn_day].level == 2) {
} else if (DailyQcUtils.pdata[pcpn_day].level == 2) {
tbuf.append(" - Level 2");
}
if (dqc.pdata[pcpn_day].used[ptime_pos] == 4) {
if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((dqc.pdata[pcpn_day].used[ptime_pos] == 3)
|| (dqc.pdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (dqc.pdata[pcpn_day].used[ptime_pos] == 1) {
} else if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@ -810,19 +811,19 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
/* Times: 18, 00, 06, 12 */
if (pcpn_time < 1) {
ltime.setTime(dqc.zdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(dqc.zdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
} else {
/* Times 12, 18, 00, 06 */
if (pcpn_time < 2) {
ltime.setTime(dqc.zdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(dqc.zdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
}
@ -882,20 +883,20 @@ public class DrawDQCStations {
}
if (dqc.zdata[pcpn_day].level[ptime_pos] == 1) {
if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
} else if (dqc.zdata[pcpn_day].level[ptime_pos] == 2) {
} else if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
if (dqc.zdata[pcpn_day].used[ptime_pos] == 6) {
if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 6) {
tbuf.append(" Calculated");
} else if (dqc.zdata[pcpn_day].used[ptime_pos] == 4) {
} else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((dqc.zdata[pcpn_day].used[ptime_pos] == 3)
|| (dqc.zdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (dqc.zdata[pcpn_day].used[ptime_pos] == 1) {
} else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@ -915,18 +916,18 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
if ((pcpn_time < 1) && (pcpn_time_step == 0)) {
ltime.setTime(dqc.tdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(dqc.tdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
} else {
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
ltime.setTime(dqc.tdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(dqc.tdata[pcpn_day].data_time);
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
}
@ -994,18 +995,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
if (dqc.tdata[pcpn_day].level[ptime_pos] == 1) {
if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
} else if (dqc.tdata[pcpn_day].level[ptime_pos] == 2) {
} else if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
if (dqc.tdata[pcpn_day].used[ptime_pos] == 4) {
if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((dqc.tdata[pcpn_day].used[ptime_pos] == 3)
|| (dqc.tdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (dqc.tdata[pcpn_day].used[ptime_pos] == 1) {
} else if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");

View file

@ -36,7 +36,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- --------------------------
* Jun 17, 2009 snaples Initial creation
* May 06, 2011 #8994 jpiatt Added set precipitation value as zero
*
* Sep 04, 2014 283 cgobs Fixed possible selection of filtered-out gages
* </pre>
*
* @author snaples
@ -45,15 +45,13 @@ import com.vividsolutions.jts.geom.Coordinate;
public class GroupEditPrecipStns {
private DailyQcUtils dqc = DailyQcUtils.getInstance();
public void group_edit_precip_stations(ReferencedCoordinate rcoord) {
int time_pos;
int i, m, k;
float lat, lon;
double testdist, maxdist;
int isave;
int max_stations = dqc.precip_stations.size();
int max_stations = DailyQcUtils.precip_stations.size();
Coordinate coord = new Coordinate();
try {
@ -64,7 +62,7 @@ public class GroupEditPrecipStns {
}
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcpn_time;
time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
@ -78,47 +76,61 @@ public class GroupEditPrecipStns {
* mouse click point.
*/
for (i = 0; i < max_stations; i++) {
if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < 0) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < 0) {
continue;
}
if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
//precip filter
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
.getPointFilterValue()) {
continue;
}
//reverse precip filter
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data > QcPrecipOptionsDialog
.getPointFilterReverseValue()) {
continue;
}
//elevation filter
if (DailyQcUtils.precip_stations.get(i).elev < DailyQcUtils.elevation_filter_value)
{
continue;
}
/* Retrieve the latitude and longitude of this station. */
lat = dqc.precip_stations.get(i).lat;
lon = dqc.precip_stations.get(i).lon;
lat = DailyQcUtils.precip_stations.get(i).lat;
lon = DailyQcUtils.precip_stations.get(i).lon;
if (dqc.precip_stations.get(i).tip == 0
&& dqc.gage_char[0] == -1) {
if (DailyQcUtils.precip_stations.get(i).tip == 0
&& DailyQcUtils.gage_char[0] == -1) {
continue;
}
if (dqc.precip_stations.get(i).tip == 1
&& dqc.gage_char[1] == -1) {
if (DailyQcUtils.precip_stations.get(i).tip == 1
&& DailyQcUtils.gage_char[1] == -1) {
continue;
}
for (m = 0; m < dqc.tsmax; m++) {
for (m = 0; m < DailyQcUtils.tsmax; m++) {
if ((dqc.precip_stations.get(i).parm.substring(3, 5)
.equalsIgnoreCase(dqc.ts[m].abr))
&& dqc.dflag[m + 1] == 1) {
if ((DailyQcUtils.precip_stations.get(i).parm.substring(3, 5)
.equalsIgnoreCase(DailyQcUtils.ts[m].abr))
&& DailyQcUtils.dflag[m + 1] == 1) {
break;
}
}
if (m == dqc.tsmax) {
if (m == DailyQcUtils.tsmax) {
continue;
}
for (m = 0; m < 9; m++) {
if (m == dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].qual
&& dqc.qflag[m] == 1) {
if (m == DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].qual
&& DailyQcUtils.qflag[m] == 1) {
break;
}
@ -143,19 +155,19 @@ public class GroupEditPrecipStns {
return;
}
if (dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
QcPrecipOptionsDialog.renderGridsBtn.setEnabled(true);
}
dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
if (GroupEditStationsDialog.group_qual == 1
&& time_pos == 4
&& dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] == 1) {
&& DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] == 1) {
dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = dqc.pdata[dqc.pcpn_day].stn[isave].rrain[time_pos].data;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].rrain[time_pos].data;
dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] = -1;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] = -1;
}
@ -164,7 +176,7 @@ public class GroupEditPrecipStns {
|| GroupEditStationsDialog.group_qual == 0 || GroupEditStationsDialog.group_qual == 8)) {
for (k = 0; k < 4; k++) {
dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
}
}
@ -176,12 +188,12 @@ public class GroupEditPrecipStns {
* and QC codes to "Manual"
*/
if (GroupEditStationsDialog.group_qual == 2) {
dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = 2;
if ((dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = 2;
if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
for (k = 0; k < 4; k++) {
dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].data = 0.0f;
dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = 2;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].data = 0.0f;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = 2;
}
}
}
@ -190,23 +202,23 @@ public class GroupEditPrecipStns {
if (time_pos != 4
&& GroupEditStationsDialog.group_qual == 1
&& dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 5
&& dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 4) {
dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
&& DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 5
&& DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 4) {
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
}
for (k = 0; k < 5; k++) {
if (k < 4) {
time_pos = dqc.pcpn_day * 4 + k;
time_pos = DailyQcUtils.pcpn_day * 4 + k;
} else {
time_pos = 40 + dqc.pcpn_day;
time_pos = 40 + DailyQcUtils.pcpn_day;
}
dqc.pcp_in_use[time_pos] = -1;
DailyQcUtils.pcp_in_use[time_pos] = -1;
if (dqc.pdata[dqc.pcpn_day].used[k] != 0) {
dqc.pdata[dqc.pcpn_day].used[k] = 2;
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] != 0) {
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] = 2;
}
}
return;

View file

@ -1032,7 +1032,7 @@ public class SaveLevel2Data {
/* build map file */
System.out.println("Building MAP .");
found: for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
found: for (m = 0; mean_areal_precip_global[m] != null; m++) {
for (k = 0; k < 4; k++) {
num = j * 4 + 3 - k;
@ -1047,9 +1047,11 @@ public class SaveLevel2Data {
}
if (mean_areal_precip_global[m].hb5 == "") {
if (mean_areal_precip_global[m] != null) {
if (mean_areal_precip_global[m].hb5 == "") {
System.out.println("MAP.hb5 is empty, continuing. ");
continue;
}
}
gm.setTime(dqc.pdata[j].data_time);

View file

@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
@ -63,6 +64,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* Jan 29, 2014 16561 snaples Updated processDrawPrecipValue to remove polygon wireframe after setting value.
* Feb 2, 2014 16201 snaples Added saved data flag support
* Apr 28, 2014 16707 snaples Added code to save and set location of dialog box when moved.
* Jan 12, 2015 16993 snaples Restored code for Substitute Field Combo box.
*
*
* </pre>
@ -78,6 +80,9 @@ public class DrawPolygonDlg extends CaveSWTDialog {
private static final String MAKE_PERSISTENT = "Make Persistent";
private DisplayFieldData[] displayFieldDataArray;
private String[] displayTypeNameArray;
/**
* Bold Font.
*/
@ -88,6 +93,11 @@ public class DrawPolygonDlg extends CaveSWTDialog {
*/
private Font font = null;
/**
* The field type selection Combo control.
*/
private Combo fieldTypeCombo = null;
/**
* The precip value spinner control.
*/
@ -227,7 +237,7 @@ public class DrawPolygonDlg extends CaveSWTDialog {
GridData gd = new GridData(345, SWT.DEFAULT);
subGroup.setLayoutData(gd);
getSubChecks(subGroup);
createFieldCombo(subGroup);
// Create Substitute button
final Button subBtn = new Button(subGroup, SWT.PUSH);
@ -349,399 +359,81 @@ public class DrawPolygonDlg extends CaveSWTDialog {
* @param groupComp
* The group composite
*/
private void getSubChecks(Group groupComp) {
private void createFieldCombo(Group groupComp) {
// Spacer
Label spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button radarMosaicChk = new Button(groupComp, SWT.RADIO);
GridData gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
radarMosaicChk.setLayoutData(gd);
radarMosaicChk.setText("Radar Mosaic");
radarMosaicChk.setFont(font);
radarMosaicChk.setLayoutData(gd);
// Default to radar mosaic on dialog creation
radarMosaicChk.setSelection(true);
subType = DisplayFieldData.rMosaic;
radarMosaicChk.addSelectionListener(new SelectionAdapter() {
// Create a container to hold the label and the combo box.
GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
Composite prodListComp = new Composite(shell, SWT.NONE);
GridLayout prodListCompLayout = new GridLayout(2, false);
prodListComp.setLayout(prodListCompLayout);
prodListComp.setLayoutData(gd);
gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
Label fieldTypeLabel = new Label(prodListComp, SWT.CENTER);
fieldTypeLabel.setText(SUBSTITUTE_VALUE_TEXT);
fieldTypeLabel.setLayoutData(gd);
gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
fieldTypeCombo = new Combo(groupComp, SWT.LEFT | SWT.DROP_DOWN
| SWT.READ_ONLY);
if (displayFieldDataArray == null)
{
displayFieldDataArray = MPEDisplayManager.mpe_qpe_fields;
}
// Label spaceLabel = new Label(groupComp, SWT.NONE);
// spaceLabel.setText("***** ");
int selectedFieldIndex = 0;
//find the index of the selected field
for (selectedFieldIndex = 0; selectedFieldIndex < displayFieldDataArray.length; selectedFieldIndex++)
{
if (displayFieldDataArray[selectedFieldIndex] == subType)
{
break;
}
}
//create and initialize the display field type name array
displayTypeNameArray = new String[displayFieldDataArray.length];
for (int i = 0; i < displayFieldDataArray.length; i++) {
String fieldName = displayFieldDataArray[i].toString();
// System.out.println("DrawPolygon.createFieldCombo(): FieldName = :" + fieldName + ":");
displayTypeNameArray[i] = fieldName;
}
//select the field
fieldTypeCombo.setTextLimit(35);
fieldTypeCombo.setLayoutData(gd);
fieldTypeCombo.setItems(displayTypeNameArray);
fieldTypeCombo.select(selectedFieldIndex);
fieldTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.rMosaic;
}
String selectedFieldString = fieldTypeCombo.getText();
// System.out.println("DrawPolygon.createFieldCombo(): selectedFieldString = " +
// selectedFieldString);
subType = DisplayFieldData.fromDisplayNameString(selectedFieldString);
// if (subType != null)
// {
// System.out.println("DrawPolygon.createFieldCombo(): subType = " +
// subType.toString());
// }
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button avgRadarMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
avgRadarMosaicChk.setLayoutData(gd);
avgRadarMosaicChk.setText("Average Radar Mosaic");
avgRadarMosaicChk.setFont(font);
avgRadarMosaicChk.setLayoutData(gd);
avgRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.avgrMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button maxRadarMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
maxRadarMosaicChk.setLayoutData(gd);
maxRadarMosaicChk.setText("Max Radar Mosaic");
maxRadarMosaicChk.setFont(font);
maxRadarMosaicChk.setLayoutData(gd);
maxRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.maxrMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button fieldBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
fieldBiasRadarMosaicChk.setLayoutData(gd);
fieldBiasRadarMosaicChk.setText("Field Bias Radar Mosaic");
fieldBiasRadarMosaicChk.setFont(font);
fieldBiasRadarMosaicChk.setLayoutData(gd);
fieldBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.bMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button localBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
localBiasRadarMosaicChk.setLayoutData(gd);
localBiasRadarMosaicChk.setText("Local Bias Radar Mosaic");
localBiasRadarMosaicChk.setFont(font);
localBiasRadarMosaicChk.setLayoutData(gd);
localBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.lMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button gageOnlyChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
gageOnlyChk.setLayoutData(gd);
gageOnlyChk.setText("Gage Only Analysis");
gageOnlyChk.setFont(font);
gageOnlyChk.setLayoutData(gd);
gageOnlyChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.gageOnly;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button multiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
multiSensorMosaicChk.setLayoutData(gd);
multiSensorMosaicChk.setText("Multisensor Mosaic");
multiSensorMosaicChk.setFont(font);
multiSensorMosaicChk.setLayoutData(gd);
multiSensorMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.mMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button localBiasMultiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
localBiasMultiSensorMosaicChk.setLayoutData(gd);
localBiasMultiSensorMosaicChk.setText("Local Bias Multisensor Mosaic");
localBiasMultiSensorMosaicChk.setFont(font);
localBiasMultiSensorMosaicChk.setLayoutData(gd);
localBiasMultiSensorMosaicChk
.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.mlMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button satPrecipChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
satPrecipChk.setLayoutData(gd);
satPrecipChk.setText("Satellite Precip");
satPrecipChk.setFont(font);
satPrecipChk.setLayoutData(gd);
satPrecipChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.satPre;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button localBiasSatPrecipChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
localBiasSatPrecipChk.setLayoutData(gd);
localBiasSatPrecipChk.setText("Local Bias Satellite Precip");
localBiasSatPrecipChk.setFont(font);
localBiasSatPrecipChk.setLayoutData(gd);
localBiasSatPrecipChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.lsatPre;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button satRadarMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
satRadarMosaicChk.setLayoutData(gd);
satRadarMosaicChk.setText("Satellite Radar Mosaic");
satRadarMosaicChk.setFont(font);
satRadarMosaicChk.setLayoutData(gd);
satRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.srMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button satGageMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
satGageMosaicChk.setLayoutData(gd);
satGageMosaicChk.setText("Satellite Gage Mosaic");
satGageMosaicChk.setFont(font);
satGageMosaicChk.setLayoutData(gd);
satGageMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.sgMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button satRadarGageMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
satRadarGageMosaicChk.setLayoutData(gd);
satRadarGageMosaicChk.setText("Satellite Radar Gage Mosaic");
satRadarGageMosaicChk.setFont(font);
satRadarGageMosaicChk.setLayoutData(gd);
satRadarGageMosaicChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.srgMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button triangulatedLocalBiasMosaicChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
triangulatedLocalBiasMosaicChk.setLayoutData(gd);
triangulatedLocalBiasMosaicChk
.setText("Triangulated Local Bias Mosaic");
triangulatedLocalBiasMosaicChk.setFont(font);
triangulatedLocalBiasMosaicChk.setLayoutData(gd);
triangulatedLocalBiasMosaicChk
.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.p3lMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button bestEstQPEChk = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
bestEstQPEChk.setLayoutData(gd);
bestEstQPEChk.setText("Best Estimate QPE");
bestEstQPEChk.setFont(font);
bestEstQPEChk.setLayoutData(gd);
bestEstQPEChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.Xmrg;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button rfcFieldBiasMosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
rfcFieldBiasMosaic.setLayoutData(gd);
rfcFieldBiasMosaic.setText("RFC Field Bias Mosaic");
rfcFieldBiasMosaic.setFont(font);
rfcFieldBiasMosaic.setLayoutData(gd);
rfcFieldBiasMosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.rfcbMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button rfcMultiSensorMosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
rfcMultiSensorMosaic.setLayoutData(gd);
rfcMultiSensorMosaic.setText("RFC Multisensor Mosaic");
rfcMultiSensorMosaic.setFont(font);
rfcMultiSensorMosaic.setLayoutData(gd);
rfcMultiSensorMosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.rfcmMosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button rawQ2Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
rawQ2Mosaic.setLayoutData(gd);
rawQ2Mosaic.setText("Raw Q2 Mosaic");
rawQ2Mosaic.setFont(font);
rawQ2Mosaic.setLayoutData(gd);
rawQ2Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.qmosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button localBQ2Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
localBQ2Mosaic.setLayoutData(gd);
localBQ2Mosaic.setText("Local Bias Q2 Mosaic");
localBQ2Mosaic.setFont(font);
localBQ2Mosaic.setLayoutData(gd);
localBQ2Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.lqmosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button mQ2Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
mQ2Mosaic.setLayoutData(gd);
mQ2Mosaic.setText("Multisensor Q2 Mosaic");
mQ2Mosaic.setFont(font);
mQ2Mosaic.setLayoutData(gd);
mQ2Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.mlqmosaic;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button local1Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
local1Mosaic.setLayoutData(gd);
local1Mosaic.setText("Local Field #1");
local1Mosaic.setFont(font);
local1Mosaic.setLayoutData(gd);
local1Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.localField1;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button local2Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
local2Mosaic.setLayoutData(gd);
local2Mosaic.setText("Local Field #2");
local2Mosaic.setFont(font);
local2Mosaic.setLayoutData(gd);
local2Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.localField2;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button local3Mosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
local3Mosaic.setLayoutData(gd);
local3Mosaic.setText("Local Field #3");
local3Mosaic.setFont(font);
local3Mosaic.setLayoutData(gd);
local3Mosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.localField3;
}
});
spaceLabel = new Label(groupComp, SWT.NONE);
spaceLabel.setText(" ");
Button rfcQpeMosaic = new Button(groupComp, SWT.RADIO);
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
rfcQpeMosaic.setLayoutData(gd);
rfcQpeMosaic.setText("RFC QPE Mosaic");
rfcQpeMosaic.setFont(font);
rfcQpeMosaic.setLayoutData(gd);
rfcQpeMosaic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
subType = DisplayFieldData.rfcMosaic;
}
});
}
/**
* Process the selection.
*

View file

@ -58,8 +58,6 @@ public class PostAnalysisManager
private XmrgFile.XmrgHeader xmrgHeader = null;
private boolean misbin[][] = getMisBin();
private DailyQcUtils dqc = DailyQcUtils.getInstance();
private static final double MISSING_VALUE = -9999.0;
private static final double MM_PER_INCH = 25.4;
@ -88,14 +86,14 @@ public class PostAnalysisManager
}
public Date getSelectedDate()
public static Date getSelectedDate()
{
Date date = dqc.pdata[dqc.pcpn_day].data_time;
Date date = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
return date;
}
public String getSelectedDateString()
public static String getSelectedDateString()
{
String header = "postAnalysisManager.getSelectedDateString(): ";
@ -116,7 +114,7 @@ public class PostAnalysisManager
}
public String get24HourGageOnlyFilePath()
public static String get24HourGageOnlyFilePath()
{
String filePath = null;
final String mpe_grid_precip_dir_tok = "mpe_grid_precip_dir";
@ -124,9 +122,9 @@ public class PostAnalysisManager
String mpe_grid_precip_dir = ad.getToken(mpe_grid_precip_dir_tok);
String currentQcArea = dqc.currentQcArea;
String currentQcArea = DailyQcUtils.currentQcArea;
String dateString = getSelectedDateString();
String dateString = PostAnalysisManager.getSelectedDateString();
// String dateString = "20140112";
@ -232,7 +230,7 @@ public class PostAnalysisManager
String[] fileNameArray = fileDirectory.list();
int precipDay = dqc.pcpn_day;
int precipDay = DailyQcUtils.pcpn_day;
List<String> filteredFileNameList = filterFileNames(precipDay, fileNameArray);
@ -270,9 +268,9 @@ public class PostAnalysisManager
return endTime;
}
public double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
public static double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
{
Date endDate = getSelectedDate();
Date endDate = PostAnalysisManager.getSelectedDate();
// System.out.println("PostAnalysisManager.getEndTime() = " + endDate);
double missingValue = -999.0;
@ -352,8 +350,8 @@ public class PostAnalysisManager
double distanceSquared;
double nearestDistanceSquared = 9999999.0;
int XOR = dqc.getHrap_grid().hrap_minx;
int YOR = dqc.getHrap_grid().hrap_miny;
int XOR = DailyQcUtils.getHrap_grid().hrap_minx;
int YOR = DailyQcUtils.getHrap_grid().hrap_miny;
// Find the distance to the nearest precip station from this HRAP
// bin at [i][j]
@ -389,7 +387,7 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.create3DGridArray(): ";
Hrap_Grid hrap_grid = dqc.getHrap_grid();
Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxI = hrap_grid.maxi;
int maxJ = hrap_grid.maxj;
@ -408,7 +406,7 @@ public class PostAnalysisManager
{
//String header = "PostAnalysisManager.create2DGridArray(): ";
Hrap_Grid hrap_grid = dqc.getHrap_grid();
Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
@ -992,7 +990,7 @@ public class PostAnalysisManager
}
*/
Hrap_Grid grid = dqc.getHrap_grid();
Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int maxJ = grid.maxj;
int maxI = grid.maxi;
@ -1249,8 +1247,8 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.mergeData(): ";
int MAXX = dqc.getHrap_grid().maxi;
int MAXY = dqc.getHrap_grid().maxj;
int MAXX = DailyQcUtils.getHrap_grid().maxi;
int MAXY = DailyQcUtils.getHrap_grid().maxj;
double logRHat;
int i, j;
@ -1258,10 +1256,10 @@ public class PostAnalysisManager
double weightingFactor;
int precipStationCount;
// List<Station> precipStationList = dqc.precip_stations;
List<Station> precipStationList = DailyQcUtils.precip_stations;
precipStationCount = dqc.precip_stations.size();
precipStationCount = precipStationList.size();
logRHat = Math.log((double) rhat);
@ -1316,7 +1314,7 @@ public class PostAnalysisManager
//System.out.println(header + "merge section");
weightingFactor = computeObservedWeight (i, j, logRHat,
dqc.precip_stations, precipStationCount, estimatedScale);
precipStationList, precipStationCount, estimatedScale);
double mergedValueInInches = weightingFactor * gageOnlyGridValueInInches +
(1.0 - weightingFactor) * qpeInches;

View file

@ -63,7 +63,6 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private static final int SECONDS_PER_HOUR = 3600;
private static final int SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;
private DailyQcUtils dqc = DailyQcUtils.getInstance();
/** Bundle file location */
//private static final String BUNDLE_LOC = "bundles/MPE/postAnalysisBundle.xml";
@ -80,11 +79,10 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setResourceType1(PAResourceType.XMRG);
setResourceType2(PAResourceType.ASCII_XMRG);
PostAnalysisManager paMgr = new PostAnalysisManager();
// 24 accumulated 1-hour precip grids
Hrap_Grid grid = dqc.getHrap_grid();
Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int wfoMinX = grid.hrap_minx;
int wfoMinY = grid.hrap_miny;
int width = grid.maxi;
@ -97,7 +95,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
float scaleFactor = 25.4f * 100.0f;
double[][] totalPrecipGrid = paMgr.get24HourTotalPrecip(height, width, scaleFactor);
double[][] totalPrecipGrid = PostAnalysisManager.get24HourTotalPrecip(height, width, scaleFactor);
//floatArray units are hundredths of MM
@ -106,7 +104,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setDataArray1(floatArray);
//24 hour gage only
String dataFilePath2 = paMgr.get24HourGageOnlyFilePath();
String dataFilePath2 = PostAnalysisManager.get24HourGageOnlyFilePath();
setDataFileName2(dataFilePath2);
return;
@ -116,12 +114,12 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private float[] convertToFloatArray(double[][] totalPrecipGrid, float unitConversionFactor)
{
String header = "SummedHourlyMpeDlg.convertToFloatArray(qpeAccum24hr): ";
Hrap_Grid hrap_grid = dqc.getHrap_grid();
Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
int precipDay = dqc.pcpn_day;
int precipDay = DailyQcUtils.pcpn_day;
System.out.println(header + "DailyQcUtils.pcpn_day = " + dqc.pcpn_day);
System.out.println(header + "DailyQcUtils.pcpn_day = " + DailyQcUtils.pcpn_day);
System.out.println(header + "precipDay = " + precipDay);
float[] valueArray = new float[maxRows*maxCols];

View file

@ -73,6 +73,8 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations;
import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.util.CreateMap;
import com.raytheon.viz.mpe.util.DailyQcUtils;
import com.raytheon.viz.mpe.util.DailyQcUtils.Hrap_Grid;
import com.raytheon.viz.mpe.util.DailyQcUtils.Pcp;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
@ -98,10 +100,6 @@ public class PlotGriddedPrecipResource extends
MPEDisplayManager displayMgr = null;
private DailyQcUtils dqc = DailyQcUtils.getInstance();
private DrawDQCStations ddq = DrawDQCStations.getInstance();
private GriddedImageDisplay2 gridDisplay;
private GriddedContourDisplay contourDisplay;
@ -124,11 +122,11 @@ public class PlotGriddedPrecipResource extends
int display_flag;
// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
// Pcp pcp = DailyQcUtils.pcp;
Pcp pcp = DailyQcUtils.pcp;
// Pcp spf = DailyQcUtils.spf;
Pcp spf = DailyQcUtils.spf;
private ColorMapParameters parameters = new ColorMapParameters();
@ -143,7 +141,7 @@ public class PlotGriddedPrecipResource extends
this.colorSet = colorSet;
}
ColorMap precip_colormap = ddq.colorMap;
ColorMap precip_colormap = DrawDQCStations.colorMap;
RGB color = null;
@ -154,8 +152,8 @@ public class PlotGriddedPrecipResource extends
public void plot_gridded_precip(String prefix, int num, int mnum) {
int pcpn_time_step = MPEDisplayManager.pcpn_time_step;
int rsmode = OtherPrecipOptions.rsmode;
boolean wfo_all = dqc.wfo_all;
int[] wfo_in_use = dqc.wfo_in_use;
boolean wfo_all = DailyQcUtils.wfo_all;
int[] wfo_in_use = DailyQcUtils.wfo_in_use;
CreateMap cm = new CreateMap();
float value = 0;
@ -225,37 +223,37 @@ public class PlotGriddedPrecipResource extends
if (num == 0) {
i1 = 0;
}
if (dqc.pcp_in_use[num + mnum] != -1
&& dqc.pcp_in_use[num + mnum - i1] != -1) {
cm.read_file(file, num + mnum, dqc.spf);
cm.read_file(file, num + mnum - i1, dqc.pcp);
if (DailyQcUtils.pcp_in_use[num + mnum] != -1
&& DailyQcUtils.pcp_in_use[num + mnum - i1] != -1) {
cm.read_file(file, num + mnum, spf);
cm.read_file(file, num + mnum - i1, pcp);
for (i = 0; i < (dqc.getHrap_grid().maxi - dqc.getHrap_grid().hrap_minx) - 1; i++) {
for (j = 0; j < dqc.getHrap_grid().maxj - dqc.getHrap_grid().hrap_miny - 1; j++) {
dqc.spf.value[i][j] = (dqc.spf.value[i][j] + dqc.pcp.value[i][j]) / 2;
for (i = 0; i < (hrap_grid.maxi - hrap_grid.hrap_minx) - 1; i++) {
for (j = 0; j < hrap_grid.maxj - hrap_grid.hrap_miny - 1; j++) {
spf.value[i][j] = (spf.value[i][j] + pcp.value[i][j]) / 2;
}
}
} else if (dqc.pcp_in_use[num + mnum] == 1) {
cm.read_file(file, num + mnum, dqc.spf);
} else if (dqc.pcp_in_use[num + mnum - i1] == 1) {
cm.read_file(file, num + mnum - i1, dqc.spf);
} else if (DailyQcUtils.pcp_in_use[num + mnum] == 1) {
cm.read_file(file, num + mnum, spf);
} else if (DailyQcUtils.pcp_in_use[num + mnum - i1] == 1) {
cm.read_file(file, num + mnum - i1, spf);
}
}
if (dqc.pcp_in_use[num] == -1) {
if (DailyQcUtils.pcp_in_use[num] == -1) {
return;
}
cm.read_file(file, num, dqc.pcp);
cm.read_file(file, num, pcp);
buf = FloatBuffer.allocate(dqc.getHrap_grid().maxi * dqc.getHrap_grid().maxj);
buf = FloatBuffer.allocate(hrap_grid.maxi * hrap_grid.maxj);
/* Get value in the HRAP grid bins. */
// for (i = 0; i < (hrap_grid.maxi); i++) {
// for (j = 0; j < hrap_grid.maxj; j++) {
for (j = dqc.getHrap_grid().maxj - 1; j >= 0; j--) {
for (i = 0; i < dqc.getHrap_grid().maxi; i++) {
if (dqc.getHrap_grid().owner[i][j] == -1) {
for (j = hrap_grid.maxj - 1; j >= 0; j--) {
for (i = 0; i < hrap_grid.maxi; i++) {
if (hrap_grid.owner[i][j] == -1) {
continue;
}
@ -266,14 +264,14 @@ public class PlotGriddedPrecipResource extends
break;
}
if (dqc.getHrap_grid().owner[i][j] == wfo_in_use[m]) {
if (hrap_grid.owner[i][j] == wfo_in_use[m]) {
break;
}
}
}
Float fg = 0f;
value = dqc.pcp.value[i][j];
value = pcp.value[i][j];
// fg = (float) (value / 100.0);
if (fg.isNaN() || value < 0) {
fg = -9999f;
@ -302,8 +300,8 @@ public class PlotGriddedPrecipResource extends
}
buf.rewind();
Rectangle extent = new Rectangle(dqc.getHrap_grid().hrap_minx,
dqc.getHrap_grid().hrap_miny, dqc.getHrap_grid().maxi, dqc.getHrap_grid().maxj);
Rectangle extent = new Rectangle(hrap_grid.hrap_minx,
hrap_grid.hrap_miny, hrap_grid.maxi, hrap_grid.maxj);
if (extent.x == 0 && extent.y == 0) {
Rectangle coord = null;
@ -388,7 +386,7 @@ public class PlotGriddedPrecipResource extends
int x = p.x - extent.x;
int y = p.y - extent.y;
short s = (short) dqc.pcp.value[x][y];
short s = (short) pcp.value[x][y];
double d = parameters.getDataToDisplayConverter().convert(s);
@ -464,20 +462,21 @@ public class PlotGriddedPrecipResource extends
@Override
protected void initInternal(IGraphicsTarget target) throws VizException {
this.target = target;
time_pos = ddq.time_pos;
plot_gridded_precip(ddq.prefix, time_pos, 100);
time_pos = DrawDQCStations.time_pos;
plot_gridded_precip(DrawDQCStations.prefix, time_pos, 100);
}
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
if (buf == null || dqc.grids_flag != 1
if (buf == null || (DailyQcUtils.grids_flag != 1 && DailyQcUtils.contour_flag != 1)
|| displayMgr.isQpf() != true) {
return;
}
Set<DisplayMode> mode = displayMgr.getDisplayMode();
System.out.println("Mode is: "+mode.toString());
if (mode.contains(DisplayMode.Image)) {
if (gridDisplay == null) {
@ -514,11 +513,11 @@ public class PlotGriddedPrecipResource extends
*/
@Override
public String getName() {
if (ddq.qcmode == "") {
if (DrawDQCStations.qcmode == "") {
return "No Data Available";
}
return ddq.qcmode;
return DrawDQCStations.qcmode;
}
@Override

View file

@ -151,7 +151,7 @@ public class PointPrecipPlotResource extends
private DailyQcUtils dqc = DailyQcUtils.getInstance();
private DrawDQCStations ddq = DrawDQCStations.getInstance();
// private DrawDQCStations ddq = DrawDQCStations.getInstance();
static int prevPcpnDay;
@ -212,7 +212,7 @@ public class PointPrecipPlotResource extends
kv.append(":");
kv.append(pm);
dataMap.put(kv.toString(), gageData);
pdataMap.put(kv.toString(), dqc.pdata[dqc.pcpn_day].stn[i]);
pdataMap.put(kv.toString(), DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i]);
/* Create a small envelope around the point */
Coordinate p1 = new Coordinate(xy.x + .02, xy.y + .02);
@ -223,11 +223,11 @@ public class PointPrecipPlotResource extends
data.add("STATION: "
+ gageData.hb5
+ " VALUE: "
+ dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data);
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data);
strTree.insert(env, data);
i++;
}
prevPcpnDay = dqc.pcpn_day;
prevPcpnDay = DailyQcUtils.pcpn_day;
}
// target.setNeedsRefresh(true);
}
@ -292,8 +292,8 @@ public class PointPrecipPlotResource extends
throws VizException {
if (MPEDisplayManager.getCurrent().isQpf() == true
&& (dqc.points_flag == 1)) {
int type = dqc.plot_view;
&& (DailyQcUtils.points_flag == 1)) {
int type = DailyQcUtils.plot_view;
int i = 0;
int m = 0;
int dcmode = OtherPrecipOptions.dcmode;
@ -311,7 +311,7 @@ public class PointPrecipPlotResource extends
String val = "";
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcpn_time;
time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
}
@ -323,7 +323,7 @@ public class PointPrecipPlotResource extends
double[] centerpixels = descriptor.worldToPixel(new double[] { c.x,
c.y });
color = RGBColors.getRGBColor(color_map_n[15]);
if (dqc.points_flag == 1
if (DailyQcUtils.points_flag == 1
&& QcPrecipOptionsDialog.isOpen == true
&& MPEDisplayManager.getCurrent().isQpf() == true) {
} else {
@ -360,7 +360,7 @@ public class PointPrecipPlotResource extends
for (m = 0; m < tsmax; m++) {
if (station.parm.substring(3, 5).equalsIgnoreCase(dqc.ts[m].abr)
&& dqc.dflag[m + 1] == 1) {
&& DailyQcUtils.dflag[m + 1] == 1) {
break;
}
}
@ -388,8 +388,8 @@ public class PointPrecipPlotResource extends
/* locate station in data stream */
if ((type == 4 || type == 5)
&& (dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
&& (dqc.pdata[dqc.pcpn_day].level == 0)) {
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
if ((type == 4 || type == 5)
@ -429,8 +429,8 @@ public class PointPrecipPlotResource extends
tbuf = station.name;
} else if (type == 4) {
if ((dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
&& (dqc.pdata[dqc.pcpn_day].level == 0)) {
if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
@ -454,8 +454,8 @@ public class PointPrecipPlotResource extends
tbuf = mbuf;
} else if (type == 5) {
if ((dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
&& (dqc.pdata[dqc.pcpn_day].level == 0)) {
if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
@ -716,7 +716,7 @@ public class PointPrecipPlotResource extends
// Fonts are shared and cached, no need to init or dispose
font = fontFactory.getMPEFont(MPEDisplayManager.getFontId());
if (dqc.points_flag == 1 && displayMgr.isQpf() == true) {
if (DailyQcUtils.points_flag == 1 && displayMgr.isQpf() == true) {
Iterator<String> iter = dataMap.keySet().iterator();
while (iter.hasNext()) {
@ -972,11 +972,11 @@ public class PointPrecipPlotResource extends
*/
@Override
public String getName() {
if (ddq.qcmode == "") {
if (DrawDQCStations.qcmode == "") {
return "No Data Available";
}
return ddq.qcmode;
return DrawDQCStations.qcmode;
}
/**

View file

@ -85,7 +85,7 @@ public class DailyQcUtils {
private String lastQcArea = "";
public String currentQcArea;
public static String currentQcArea;
private Date currDate;
@ -101,7 +101,7 @@ public class DailyQcUtils {
public int init_maxmin = -1;
public int pcp_in_use[] = new int[500];
public static int pcp_in_use[] = new int[500];
boolean newarea = false;
@ -171,13 +171,13 @@ public class DailyQcUtils {
public int method = 2;
public boolean wfo_all = false;
public static boolean wfo_all = false;
public boolean render_all = true;
public int wfo_orig;
public int[] wfo_in_use = new int[20];
public static int[] wfo_in_use = new int[20];
public String[] tag = new String[20];
@ -261,39 +261,39 @@ public class DailyQcUtils {
public String mpe_show_missing_gage;
public int isom = -1;
public static int isom = -1;
public int old_isom = -1;
public static int old_isom = -1;
public ArrayList<Station> precip_stations = new ArrayList<Station>();
public static ArrayList<Station> precip_stations = new ArrayList<Station>();
public ArrayList<Station> temperature_stations = new ArrayList<Station>();
public static ArrayList<Station> temperature_stations = new ArrayList<Station>();
public ArrayList<Station> freezing_stations = new ArrayList<Station>();
public static ArrayList<Station> freezing_stations = new ArrayList<Station>();
public Pdata pdata[];
public static Pdata pdata[];
public Tdata tdata[];
public static Tdata tdata[];
public Zdata zdata[];
public static Zdata zdata[];
private Hrap_Grid hrap_grid = new Hrap_Grid();
private static Hrap_Grid hrap_grid = new Hrap_Grid();
// public static Hrap_Grid hrap_tgrid = new Hrap_Grid();
public static String type = "QME ";
public Ts[] ts;
public static Ts[] ts;
public int tsmax = 0;
public static int tsmax = 0;
public Maps mean_areal_precip_global[];
public Pcp pcp = new Pcp();
public static Pcp pcp = new Pcp();
public Pcp spf = new Pcp();
public static Pcp spf = new Pcp();
public Pcp tpf = new Pcp();
public static Pcp tpf = new Pcp();
public Bad_Daily_Values bad_values[];
@ -443,15 +443,15 @@ public class DailyQcUtils {
public static int hrgt12z = -1;
public int[] dflag = new int[10];
public static int[] dflag = new int[10];
public int[] qflag = new int[10];
public static int[] qflag = new int[10];
public float pxtemp = 1.0f;
public int dmvalue = (int) (1.0 * 100 * 3.28 / .55);
public int elevation_filter_value = 0;
public static int elevation_filter_value = 0;
public int temperature_filter_value = -50;
@ -474,27 +474,27 @@ public class DailyQcUtils {
/* Function which associates the Gage QC edit levels with a value. */
public int funct[] = { 8, 0, 6, 2, 3, 4, 5, 1, 7, 9 };
public int gage_char[] = new int[2];
public static int gage_char[] = new int[2];
public int plot_view = 0;
public static int plot_view = 0;
public boolean frzlvl_flag = true;
public int find_station_flag = -1;
public int pcpn_time = 0;
public static int pcpn_time = 0;
public int pcp_flag = -1;
public static int pcp_flag = -1;
public int pcpn_day = 0;
public static int pcpn_day = 0;
public int contour_flag = -1;
public static int contour_flag = -1;
public int points_flag = 1;
public static int points_flag = 1;
public int grids_flag = -1;
public static int grids_flag = -1;
public int map_flag = -1;
public static int map_flag = -1;
static int curHrMinSec = -1;
@ -903,7 +903,7 @@ public class DailyQcUtils {
return retval;
}
public int getEnding6HourObsTime() {
public static int getEnding6HourObsTime() {
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
int value = ((!(null == s)) ? Integer.parseInt(s) : -1);
@ -917,6 +917,9 @@ public class DailyQcUtils {
String currntQcArea, int days, boolean autoqc) {
currentQcArea = currntQcArea;
currDate = currentDate;
if (prevDate == null){
prevDate = currDate;
}
selDate = prevDate;
auto_dailyqc_flag = autoqc;
qcDays = MPEDataManager.getInstance().getDQCDays();
@ -2127,7 +2130,7 @@ public class DailyQcUtils {
/**
* @return the hrap_grid
*/
public Hrap_Grid getHrap_grid() {
public static Hrap_Grid getHrap_grid() {
return hrap_grid;
}

View file

@ -90,8 +90,9 @@ public class MeanMonthlyPrecip {
displayUnit = NonSI.INCH;
dataUnit = SI.MILLIMETER;
cmc.setDisplayUnit(displayUnit);
cmc.setColorMapUnit(SI.MILLIMETER);
cmc.setDataUnit(dataUnit);
UnitConverter dataToImage = cmc.getDataToImageConverter();
UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter();
/*
* Loop over the months. Determine for which months PRISM data are

View file

@ -444,7 +444,7 @@ def otherParse(serverhost, mhsid, port,
"not an int: " + `vtecRequestTime`
if type(port) != int:
raise TypeError, "GFESUITE_PORT not an int: " + `port`
javainitmodules = dictCheck(initmodules, list, str, "INITMODULES")
initmodules = dictCheck(initmodules, list, str, "INITMODULES")
accumElem = dictCheck(accumElem, list, str, "D2DAccumulativeElements")
initskips = dictCheck(initskips, list, int, "INITSKIPS")
d2ddbver = dictCheck(d2ddbver, int, None, "D2DDBVERSIONS")
@ -514,40 +514,8 @@ def otherParse(serverhost, mhsid, port,
elif transmitScript is None:
transmitScript = ""
# build model to init mapping
modelToInit = {}
for module in initmodules:
for model in initmodules[module]:
if modelToInit.has_key(model):
modelToInit[model].append(module)
else:
modelToInit[model] = [module]
# check for duplicate init modules
for model in modelToInit:
modules = modelToInit[model]
if len(modules) > 1:
message = "Multiple smartInit modules " + str(modules) + \
" are enabled for D2D model: " + model + ". " + str(modules[1:]) + \
" will be disabled. Please edit your localConfig.py file and disable all but one."
# log error message to edex log
import LogStream
LogStream.logProblem(message);
# log error to alertViz
from com.raytheon.uf.edex.core import EDEXUtil
from com.raytheon.uf.common.status import UFStatus_Priority as Priority
EDEXUtil.sendMessageAlertViz(Priority.ERROR,
"com.raytheon.edex.plugin.gfe", "GFE", "GFE", message,
message, None)
# remove duplicate
for module in modules[1:]:
javainitmodules.remove(module)
return serverhost, mhsid, \
port, javainitmodules, accumElem, \
port, initmodules, accumElem, \
initskips, d2ddbver, logfilepurge, prddir, home,\
extraWEPrecision, vtecRequestTime, \
autoConfigureNotifyTextProd, \

View file

@ -13,6 +13,11 @@
THIS CHANGE WAS DONE SO THAT CONFIGURATIONS COULD BE MADE IN ONE LOCATION
AND NOT ACROSS 20-30 TEMPLATES. A COUNTY-BASED and ZONE-BASED COUNTERPART
EXISTS TO THIS FILE.
SOFTWARE HISTORY
Date Ticket# Engineer Description
01/20/15 RM #14929 Qinglu Lin Changed false to true for <withinPolygon> tags in <pathcastConfig>,
<pointSource variable="otherPoints>, and <pointSource variable="locationList">.
-->
<!-- CREATE DEFAULT OBJECTS. THIS SHOULD GENERALLY NOT BE TOUCHED-->
@ -96,10 +101,7 @@
<!-- CREATE pathcastConfig OBJECT FOR PATHCAST (4TH BULLET) -->
<pathcastConfig>
<type>AREA</type>
<!-- the withinPolygon variable set to false will bring in points
outside of the polygon which is necessary for the pathcast to reference
points that are near the water but not on the water -->
<withinPolygon>false</withinPolygon>
<withinPolygon>true</withinPolygon>
<inclusionPercent>1</inclusionPercent>
<distanceThreshold>10.0</distanceThreshold>
<interval>5</interval>
@ -131,7 +133,7 @@
<inclusionPercent>1</inclusionPercent>
<type>AREA</type>
<searchMethod>TRACK</searchMethod>
<withinPolygon>false</withinPolygon>
<withinPolygon>true</withinPolygon>
<maxResults>10</maxResults>
<distanceThreshold>10</distanceThreshold>
<sortBy>
@ -154,7 +156,7 @@
<inclusionPercent>1</inclusionPercent>
<type>AREA</type>
<searchMethod>TRACK</searchMethod>
<withinPolygon>false</withinPolygon>
<withinPolygon>true</withinPolygon>
<maxResults>20</maxResults>
<distanceThreshold>10</distanceThreshold>
<filter>

View file

@ -182,6 +182,42 @@ MpeRUCFreezingLevel : ON
MpeLightningSrv : ON
#====================================================================================
#===================== run_report_alarm Configuration ===============================
# These settings modify behavior of the EDEX RunReportAlarmSrv service, which
# replaced the original run_report_alarm script ported from A1 hydro.
#
## Mandatory Arguments:
## alarm_product_id : The product id that will be used to write the alarm
## report product into the textdb.
##
## Optional Arguments:
## alarm_file_suffix : A Java date/time format string that will be used as
## the alarm report's file extension when the product is
## written to disk. Product file path is
## ${whfs_product_dir}/PRODUCT_ID.FILE_SUFFIX.
##
## alarm_report_mode : Report mode. Valid values are one of the following:
## ALL, FRESH, RECENT, UNREPORTED, NEAREST, NEAR_NOW,
## LATEST_MAXFCST, or NEW_OR_INCREASED.
##
## alarm_filter : Additional filtering options for the product.
## Valid values can one or many of the following:
## 'O', 'F', 'T', 'M', 'R', 'L', 'U', 'D'.
##
## alarm_pe_filter : Physical element filter.
##
## alarm_minutes : For certain report modes, creates a window going back
## or forward the specified number of minutes.
## Valid values are 1 - 999999.
##
## alarm_verbose : Whether or not to create a "verbose mode" report.
## Valid values are TRUE or FALSE.
##
alarm_product_id : CCCACRXXX
alarm_file_suffix : MMdd.HHmm
alarm_report_mode : NEAREST
# ==============================================================================
# Executable directory tokens.
@ -207,7 +243,7 @@ server_name : ONLINE # Informix database server name
db_name : hd_ob92lwx # IHFS database name
damcat_db_name : dc_ob5xxx # Dam Catalog database name
hdb_db_name : ob81_histdata # Historical database.
pghost : localhost # The machine PostGres is running on
pghost : dx1f # The machine PostGres is running on
pguser : awips # The user allowed to access PostGres
pgport : 5432 # The PostGres Server port
adb_name : adb_ob7xxx # RFC archive database name
@ -1896,7 +1932,11 @@ mpe_post_output : $(mpe_fieldgen_product_dir)/post_analysis
# add ,RDMOSAIC,BDMOSAIC,LDMOSAIC,MDMOSAIC,MLDMOSAIC,AVGRDMOSAIC,MAXRDMOSAIC,SRDMOSAIC,SRDGMOSAIC to existing mpe_generate_list token
# ================== end of SSHP Directory Structure tokens ========================
# nrldb tokens
nrldb_log : $(whfs_log_dir)/nrldb
nrldb_data : $(whfs_local_data_dir)/nrldb
nrldb_config : $(whfs_config_dir)/nrldb
nrldb_tmp : /awips/hydroapps/whfs/local/data/output
# The syntax needed in the file is:
#

View file

@ -19,6 +19,9 @@ import java.util.List;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -37,9 +40,10 @@ public class NsharpSoundingElementStateProperty {
private int compColorIndex;
private List<NcSoundingLayer> sndLyLst;
private List<NcSoundingLayer> sndLyLstBk;
private boolean goodData = true; //#5929
public NsharpSoundingElementStateProperty(String elementDescription,
String stnDescription,
String timeDescription, NsharpStationInfo stnInfo, List<NcSoundingLayer> sndLyLst) {
String timeDescription, NsharpStationInfo stnInfo, List<NcSoundingLayer> sndLyLst, boolean goodData) {
super();
this.elementDescription = elementDescription;
//this.elementState = elementState;
@ -49,6 +53,7 @@ public class NsharpSoundingElementStateProperty {
this.sndType = stnInfo.getSndType();
this.compColorIndex = NsharpConstants.LINE_COMP1;;
this.sndLyLst = sndLyLst;
this.goodData = goodData; //#5929
sndLyLstBk= new ArrayList<NcSoundingLayer>(sndLyLst.size());
for(NcSoundingLayer ly : sndLyLst){
try {
@ -135,4 +140,12 @@ public class NsharpSoundingElementStateProperty {
}
}
public boolean isGoodData() {
return goodData;
}
public void setGoodData(boolean goodData) {
this.goodData = goodData;
}
}

View file

@ -13,7 +13,10 @@
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
* 03/11/2013 972 Greg Hull rm paneNumber
* 03/11/2013 2491 bsteffen extend IDescriptor derictly for better serialization detection.
* 01/13/2015 DR#17008,
* task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
* moved "setFrameCoordinator()" from NsharpSkewTPaneDescriptor to here,
* so it can be used by other descriptor
*
* </pre>
*
@ -24,6 +27,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpAbstractPaneResource;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpResourceHandler;
import gov.noaa.nws.ncep.viz.ui.display.NCLoopProperties;
import java.util.List;
@ -34,15 +38,14 @@ import org.geotools.referencing.crs.DefaultEngineeringCRS;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.datastructure.LoopProperties;
import com.raytheon.uf.viz.core.drawables.FrameCoordinator;
import com.raytheon.uf.viz.core.drawables.IDescriptor;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.viz.core.graphing.GraphDescriptor;
@XmlAccessorType(XmlAccessType.NONE)
public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
IDescriptor {
// @XmlElement
// protected int paneNumber;
protected NsharpResourceHandler rscHandler=null;
@ -54,14 +57,6 @@ public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
this.rscHandler = rscHandler;
}
// public int getPaneNumber() {
// return paneNumber;
// }
//
// public void setPaneNumber(int paneNumber) {
// this.paneNumber = paneNumber;
// }
public NsharpAbstractPaneDescriptor() {
super();
// TODO Auto-generated constructor stub
@ -106,4 +101,64 @@ public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
e.printStackTrace();
}
}
//DR17008
protected void setFrameCoordinator() {
frameCoordinator = new FrameCoordinator(this) {
@Override
/*
* Chin Note: this function handles keyboard up/down/left/right arrow keys for station and time line stepping.
*/
public void changeFrame(
IFrameCoordinator.FrameChangeOperation operation,
IFrameCoordinator.FrameChangeMode mode) {
if(rscHandler == null)
return;
//System.out.println("NsharpSkewTPaneDescriptor changeFrame(operation) called op="+operation+" mode"+mode);
if(mode == IFrameCoordinator.FrameChangeMode.SPACE_ONLY){
//up/down arrow keys for stepping stations
//editor.getRscHandler().setSteppingStnIdList(operation);
rscHandler.setSteppingStnIdList(operation);
} else if(mode == IFrameCoordinator.FrameChangeMode.TIME_ONLY || mode == IFrameCoordinator.FrameChangeMode.TIME_AND_SPACE){
//left/right arrow keys for stepping time lines
//editor.getRscHandler().setSteppingTimeLine(operation, mode);
rscHandler.setSteppingTimeLine(operation, mode);
}
}
/*
* (non-Javadoc)
* @see com.raytheon.uf.viz.core.drawables.FrameCoordinator#changeFrame(com.raytheon.uf.viz.core.datastructure.LoopProperties)
* This function handling nsharp looping.
* Chin: 12.8.1: let skewtPaneDescriptor handle looping. All other pane descriptor will do nothing. Otherwise, we will looping X times faster when we
* have X number of panes configured and each pane move frame once.
*
*/
@Override
public void changeFrame(LoopProperties loopProperties) {
if(rscHandler == null)
return;
long waitTime = Long.MAX_VALUE;
//System.out.println("NsharpSkewTPaneDescriptor changeFrame(loop) called, loopDirection= "+loopDirection + " fwd="+loopProperties.getFwdFrameTime()+
// " back="+loopProperties.getRevFrameTime() + " 1st dt="+loopProperties.getFirstFrameDwell()+ " lasDt="+loopProperties.getLastFrameDwell());
if(loopProperties.getMode() == LoopProperties.LoopMode.Forward || loopProperties.getMode() == LoopProperties.LoopMode.Cycle)
waitTime = loopProperties.getFwdFrameTime();
else
waitTime = loopProperties.getRevFrameTime();
int frameSize= rscHandler.getTimeElementListSize();
int curFrameIndex = rscHandler.getCurrentTimeElementListIndex();
if(curFrameIndex == 0)
waitTime = loopProperties.getFirstFrameDwell();
else if(curFrameIndex == frameSize-1)
waitTime = loopProperties.getLastFrameDwell();
loopProperties.drawAfterWait(waitTime);
//System.out.println("wait time="+waitTime);
if (loopProperties.isShouldDraw()) {
rscHandler.setLoopingDataTimeLine(loopProperties);
//System.out.println("loopinp step");
}
}
};
}
}

View file

@ -18,6 +18,8 @@ package gov.noaa.nws.ncep.ui.nsharp.display;
* 06/14/2011 11-5 Chin Chen migration
* 03/11/2013 972 Greg Hull rm paneNum and editorNum; rm AbstractNcEditor
* 03/25/2013 972 Greg Hull rm unused Add/RemoveListeners.
* 01/13/2015 DR#17008,
* task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
*
* </pre>
*
@ -1382,13 +1384,17 @@ public class NsharpEditor extends AbstractEditor implements
DISPLAY_SPC_GRAPHS = -1;
} else if (paneConfigurationName // d2dlite start
.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)) {
if (rscHandler != null
&& rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
DISPLAY_HODO = 0;
//5930
NsharpPaletteWindow win = NsharpPaletteWindow.getInstance();
if (win != null &&
win.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
//#5930if (rscHandler != null
// && rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
DISPLAY_HODO = 0 ;
DISPLAY_TIMESTN = DISPLAY_HODO + 1;
DISPLAY_SKEWT = -1;
} else {
DISPLAY_SKEWT = 0;
DISPLAY_SKEWT = 0;
DISPLAY_TIMESTN = DISPLAY_SKEWT + 1;
DISPLAY_HODO = -1;
}
@ -1459,8 +1465,12 @@ public class NsharpEditor extends AbstractEditor implements
// d2dlite start
} else if (paneConfigurationName
.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)) {
if (rscHandler != null
&& rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
//5930
NsharpPaletteWindow win = NsharpPaletteWindow.getInstance();
if (win != null &&
win.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
//#5930 if (rscHandler != null
//&& rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
displayArray[DISPLAY_HODO] = new NsharpHodoPaneDisplay(
new PixelExtent(NsharpConstants.HODO_DISPLAY_REC),
DISPLAY_HODO);
@ -1610,9 +1620,11 @@ public class NsharpEditor extends AbstractEditor implements
nsharpComp = new Composite[DISPLAY_TOTAL];
displayPane = new VizDisplayPane[DISPLAY_TOTAL];
EditorInput edInput = new EditorInput(new NCLoopProperties(),
//EditorInput edInput = new EditorInput(new NsharpLoopProperties(),
// displayArray);
//CHIN task#5930 use same loop properties
EditorInput edInput = new EditorInput(this.editorInput.getLoopProperties(),
displayArray);
this.setInput(edInput);
this.displaysToLoad = displayArray;
for (IRenderableDisplay display : displayArray) {
@ -2130,4 +2142,10 @@ public class NsharpEditor extends AbstractEditor implements
// +
// pane.toString()+" newRenderableDisplay="+newRenderableDisplay.toString());
}
public String getPaneConfigurationName() {
return paneConfigurationName;
}
}

View file

@ -11,6 +11,8 @@
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
* 01/13/2015 DR#17008,
* task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
*
* </pre>
*
@ -19,7 +21,9 @@
*/
package gov.noaa.nws.ncep.ui.nsharp.display;
import gov.noaa.nws.ncep.ui.nsharp.NsharpConstants;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpHodoPaneResource;
import gov.noaa.nws.ncep.viz.common.ui.NmapCommon;
import java.util.List;
@ -28,19 +32,36 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
import com.raytheon.uf.viz.d2d.core.time.D2DTimeMatcher;
import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "nsharpHodoPaneDescriptor")
public class NsharpHodoPaneDescriptor extends NsharpAbstractPaneDescriptor {
public NsharpHodoPaneDescriptor(PixelExtent pe) {
super(pe);
//System.out.println("NsharpHodoPaneDescriptor created " + this.toString());
if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
{
setTimeMatcher(new D2DTimeMatcher());
setFrameCoordinator();
}
}
public NsharpHodoPaneDescriptor(PixelExtent pe, int paneNumber) {
super(pe, paneNumber);
if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
{
setTimeMatcher(new D2DTimeMatcher());
setFrameCoordinator();
}
}
public NsharpHodoPaneDescriptor() {
super();
if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
{
setTimeMatcher(new D2DTimeMatcher());
setFrameCoordinator();
}
}
public NsharpHodoPaneResource getHodoResource() {
List<NsharpHodoPaneResource> list = resourceList
@ -50,5 +71,35 @@ public class NsharpHodoPaneDescriptor extends NsharpAbstractPaneDescriptor {
}
return null;
}
@SuppressWarnings("deprecation")
@Override
/*
* Chin Note: this function handles time line stepping from NC Perspective tool bar left/right/first/last arrow Buttons.
*/
public void changeFrame(FrameChangeOperation operation, FrameChangeMode mode) {
synchronized (this) {
//Chin Note: there are multiple (6) panes.
//We only need to step one timeline. Therefore, we handle stepping by skewt pane.
//However, for D2D LITE display configuration, when switched to HODO pane, skewT pane is no longer
//in charge. therefore, we have to handle this special case here by HODO pane.
if((rscHandler == null) ||(!rscHandler.getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
return;
if( VizPerspectiveListener.getCurrentPerspectiveManager()!= null){
//System.out.println("changeFrame: current perspective ="+VizPerspectiveListener.getCurrentPerspectiveManager().getPerspectiveId());
if(!VizPerspectiveListener.getCurrentPerspectiveManager().getPerspectiveId().equals(NmapCommon.NatlCntrsPerspectiveID)){
if(mode != FrameChangeMode.TIME_ONLY)
return;
}
}
// we will have to do conversion here
IFrameCoordinator.FrameChangeOperation dop = IFrameCoordinator.FrameChangeOperation.valueOf(operation.name());
IFrameCoordinator.FrameChangeMode dmode = IFrameCoordinator.FrameChangeMode.valueOf(mode.name());
rscHandler.setSteppingTimeLine(dop, dmode);
}
}
}

View file

@ -11,6 +11,10 @@
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
* 01/13/2015 DR#17008,
* task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
* moved "setFrameCoordinator()" to NsharpAbstractPaneDescriptor,
* so it can be used by other descriptor
*
* </pre>
*
@ -29,8 +33,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.datastructure.LoopProperties;
import com.raytheon.uf.viz.core.drawables.FrameCoordinator;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
import com.raytheon.uf.viz.d2d.core.time.D2DTimeMatcher;
import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
@ -54,69 +56,7 @@ public class NsharpSkewTPaneDescriptor extends NsharpAbstractPaneDescriptor {
setTimeMatcher(new D2DTimeMatcher());
setFrameCoordinator();
}
private void setFrameCoordinator() {
frameCoordinator = new FrameCoordinator(this) {
@Override
/*
* Chin Note: this function handles keyboard up/down/left/right arrow keys for station and time line stepping.
*/
public void changeFrame(
IFrameCoordinator.FrameChangeOperation operation,
IFrameCoordinator.FrameChangeMode mode) {
//NsharpEditor editor = NsharpEditor.getActiveNsharpEditor() ;
//if(editor== null || editor.getRscHandler()==null)
// return;
if(rscHandler == null)
return;
//System.out.println("NsharpSkewTPaneDescriptor changeFrame(operation) called op="+operation+" mode"+mode);
if(mode == IFrameCoordinator.FrameChangeMode.SPACE_ONLY){
//up/down arrow keys for stepping stations
//editor.getRscHandler().setSteppingStnIdList(operation);
rscHandler.setSteppingStnIdList(operation);
} else if(mode == IFrameCoordinator.FrameChangeMode.TIME_ONLY || mode == IFrameCoordinator.FrameChangeMode.TIME_AND_SPACE){
//left/right arrow keys for stepping time lines
//editor.getRscHandler().setSteppingTimeLine(operation, mode);
rscHandler.setSteppingTimeLine(operation, mode);
}
}
/*
* (non-Javadoc)
* @see com.raytheon.uf.viz.core.drawables.FrameCoordinator#changeFrame(com.raytheon.uf.viz.core.datastructure.LoopProperties)
* This function handling nsharp looping.
* Chin: 12.8.1: let skewtPaneDescriptor handle looping. All other pane descriptor will do nothing. Otherwise, we will looping X times faster when we
* have X number of panes configured and each pane move frame once.
*
*/
@Override
public void changeFrame(LoopProperties loopProperties) {
if(rscHandler == null)
return;
long waitTime = Long.MAX_VALUE;
//System.out.println("NsharpSkewTPaneDescriptor changeFrame(loop) called, loopDirection= "+loopDirection + " fwd="+loopProperties.getFwdFrameTime()+
// " back="+loopProperties.getRevFrameTime() + " 1st dt="+loopProperties.getFirstFrameDwell()+ " lasDt="+loopProperties.getLastFrameDwell());
if(loopProperties.getMode() == LoopProperties.LoopMode.Forward || loopProperties.getMode() == LoopProperties.LoopMode.Cycle)
waitTime = loopProperties.getFwdFrameTime();
else
waitTime = loopProperties.getRevFrameTime();
int frameSize= rscHandler.getTimeElementListSize();
int curFrameIndex = rscHandler.getCurrentTimeElementListIndex();
if(curFrameIndex == 0)
waitTime = loopProperties.getFirstFrameDwell();
else if(curFrameIndex == frameSize-1)
waitTime = loopProperties.getLastFrameDwell();
loopProperties.drawAfterWait(waitTime);
if (loopProperties.isShouldDraw()) {
rscHandler.setLoopingDataTimeLine(loopProperties);
}
}
};
}
public NsharpSkewTPaneResource getSkewtResource() {
public NsharpSkewTPaneResource getSkewtResource() {
List<NsharpSkewTPaneResource> list = resourceList
.getResourcesByTypeAsType(NsharpSkewTPaneResource.class);
if (list != null && !list.isEmpty()) {

View file

@ -13,6 +13,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* 04/23/2012 229 Chin Chen Initial coding
* 04/23/2014 Chin Chen Add d2d lite page
* 08/11/2014 Chin Chen fix typo
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -60,7 +63,8 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// number of this page. index 0
// point to a dummy.
private static final String NO_DATA = "NO VALID DATA AVAILABLE";
private static final String NO_DATA = "NO VALID DATA AVAILABLE FOR THIS PAGE";
private static final String INSUFFICIENT_DATA = "INSUFFICIENT DATA FOR PARAMETERS COMPUTATION";
// private double charHeight = NsharpConstants.CHAR_HEIGHT_;
private double curY;
@ -160,7 +164,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
handleResize();
}
if ((soundingLys != null) && (soundingLys.size() >= 4)) {
if ((soundingLys != null) && (rscHandler.isGoodData())) {//#5929
this.defaultFont.setSmoothing(false);
this.defaultFont.setScaleFont(false);
// write to panels
@ -187,6 +191,9 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
}
}
}
else { //#5929
drawInsuffDataMessage(target, panelRectArray[0]);
}
}
@Override
@ -240,6 +247,28 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
currentParcel = NsharpNativeConstants.PARCELTYPE_MOST_UNSTABLE;
}
@SuppressWarnings("deprecation") //#5929
private void drawInsuffDataMessage(IGraphicsTarget target, Rectangle rect)
throws VizException {
IFont myfont;
if (paneConfigurationName.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR))
myfont = font9;
else
myfont = font20;
defineCharHeight(myfont);
myfont.setSmoothing(false);
myfont.setScaleFont(false);
sumP1Visible = true;
extent = new PixelExtent(rect);
target.setupClippingPlane(extent);
target.drawString(myfont, INSUFFICIENT_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
}
private void drawPanel(IGraphicsTarget target, int pageOrderNumber,
int dsiplayPanelNumber) throws VizException {
if (pageOrderNumber > NsharpConstants.PAGE_MAX_NUMBER
@ -344,7 +373,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if ((nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0)) {
target.drawString(myfont, " " + NO_DATA, rect.x,
target.drawString(myfont, NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
@ -1053,7 +1082,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if (nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0) {
target.drawString(myfont, " " + NO_DATA, rect.x,
target.drawString(myfont,NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
@ -3749,7 +3778,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if ((nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0)) {
target.drawString(myfont, " " + NO_DATA, rect.x,
target.drawString(myfont, NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;

View file

@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -127,7 +130,7 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
hodoWindRscShapeList.add(shNcolor);
}
float surfaceLevel = soundingLays.get(0).getGeoHeight(); //#5929
for (NcSoundingLayer layer : soundingLays){
if(layer.getPressure() < 100 || layer.getWindSpeed() <0)
continue;
@ -138,15 +141,15 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
double [][] lines = {{world.mapX(c0.x), world.mapY(c0.y)},{world
.mapX(c1.x), world.mapY(c1.y)}};
if(incolor == null){
if(layer.getGeoHeight() <nsharpNative.nsharpLib.msl(3000)){
//red
//use MSL here, so Converts height from (meters) AGL to MSL. #5929
if(layer.getGeoHeight() < (3000+surfaceLevel)){
shapeR.addLineSegment(lines);
}
else if(layer.getGeoHeight() < nsharpNative.nsharpLib.msl(6000))
else if(layer.getGeoHeight() < (6000+surfaceLevel))
shapeG.addLineSegment(lines);
else if(layer.getGeoHeight() < nsharpNative.nsharpLib.msl(9000))
else if(layer.getGeoHeight() < (9000+surfaceLevel))
shapeY.addLineSegment(lines);
else if(layer.getGeoHeight() < nsharpNative.nsharpLib.msl(12000))
else if(layer.getGeoHeight() < (12000+surfaceLevel))
shapeC.addLineSegment(lines);
else
shapeV.addLineSegment(lines);
@ -177,6 +180,7 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
}
hodoWindRscShapeList.clear();
}
world = hodoBackground.computeWorld();
boolean compareStnIsOn = rscHandler.isCompareStnIsOn();
int currentTimeListIndex = rscHandler.getCurrentTimeElementListIndex();
@ -575,7 +579,7 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
return;
hodoBackground.paintInternal(target, paintProps);
if((soundingLys != null) && (soundingLys.size()>= 4))
if((soundingLys != null) && (soundingLys.size()> 2) )
{
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);
@ -605,8 +609,6 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
drawHodoDynamicData(target, currentZoomLevel);
}
}
}

View file

@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -181,7 +184,7 @@ public class NsharpInsetPaneResource extends NsharpAbstractPaneResource{
//Chin, since we only display 4 insets and their backgrounds have same size, only draws 4 backgrounds.
//psblWatchTypeBackground.paint(target, paintProps);
//thetaEPresureBackground.paint(target, paintProps);
if((soundingLys != null) && (soundingLys.size()>= 4))
if((soundingLys != null) && rscHandler.isGoodData()) //#5929)
{
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);
@ -294,7 +297,7 @@ public class NsharpInsetPaneResource extends NsharpAbstractPaneResource{
return;
//System.out.println("createRscWireFrameShapes called");
disposeInsetWireFrameShapes();
if(soundingLys != null){
if(soundingLys != null && rscHandler.isGoodData()){ //#5929
WGraphics WGc= thetaEPresureBackground.getWorld();
createRscThetaEPressureShape(WGc);

View file

@ -15,6 +15,9 @@
* 02/03/2014 1106 Chin Chen Need to be able to use clicking on the Src,Time, or StnId to select display
* 08/12/2014 Chin Chen fixed issue that "load archive file with wrong time line displayed"
* 12/04/2014 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
* </pre>
*
* @author Chin Chen
@ -161,6 +164,8 @@ public class NsharpResourceHandler {
private int[] pageDisplayOrderNumberArray = new int[NsharpConstants.PAGE_MAX_NUMBER + 1];
//#5929
private boolean goodData=false;
// index is the real page defined in NsharpConstants to be shown, value is
// the order number of this page.
// index 0 point to a dummy.
@ -981,6 +986,7 @@ public class NsharpResourceHandler {
if (skewtPaneRsc != null)
skewtPaneRsc
.setCurrentSkewTEditMode(NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT);
elem.setGoodData(checkDataIntegrity(soundingLys));//#5929
resetData();
}
@ -993,7 +999,12 @@ public class NsharpResourceHandler {
// update active sounding layer and picked stn info
// re-populate snd data to nsharp native code lib for later calculating
nsharpNative.populateSndgData(soundingLys);
//#5929 dont populate sounding data if data is bad
if(getCurSoundingElementStateProperty()!=null)
goodData= getCurSoundingElementStateProperty().isGoodData();
if(goodData)
nsharpNative.populateSndgData(soundingLys);
if (skewtPaneRsc != null)
skewtPaneRsc.resetData(soundingLys, previousSoundingLys);
@ -1013,7 +1024,7 @@ public class NsharpResourceHandler {
// if soundingLys is null, then we stop here, after reset data.
if (soundingLys == null)
return;
if (soundingLys.size() > 0) {
if (soundingLys.size() > 0 && (goodData)) {
// set initial hodohouseC
// ----- set hodo circle at Bunkers Right, Chin according to TTR6065
@ -1044,11 +1055,7 @@ public class NsharpResourceHandler {
* that really meant to reset parcel type.
*/
}
// Chin: TBD remove handle resize here to fix sizing issue when swapped
// nsharp from side pane back to main pane
// but, may cause other problem?
// if(skewtPaneRsc!=null)
// skewtPaneRsc.handleResize();
if (skewtPaneRsc != null)
skewtPaneRsc.createRscWireFrameShapes();
if (hodoPaneRsc != null)
@ -1057,7 +1064,7 @@ public class NsharpResourceHandler {
insetPaneRsc.createInsetWireFrameShapes();
if (witoPaneRsc != null)
witoPaneRsc.createAllWireFrameShapes();
if (spcGraphsPaneRsc != null) {
if (spcGraphsPaneRsc != null && (goodData) ){//#5929
// Chin: SPC graphs performance concern, as it need to call get
// info functions from bigSharo.so and cause long delay.
// Therefore, do it once only when reset data.
@ -1177,7 +1184,7 @@ public class NsharpResourceHandler {
private void addElementToTableAndLists(String stnId_timeLine_sndType,
String stnId, String tmLine, String sndType,
NsharpStationInfo stnInfo, List<NcSoundingLayer> sndLyLst) {
NsharpStationInfo stnInfo, List<NcSoundingLayer> sndLyLst, boolean goodData) {
// System.out.println("stn to be added "+ stnId + " timeline "+tmLine);
NsharpSoundingElementStateProperty newSndPropElem = null;
int tmIndex = getIndexFromElementList(tmLine, timeElementList);
@ -1197,7 +1204,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData); //#5929
stnTimeSndTable.get(stnIndex).get(tmIndex)
.set(sndTpyeIndex, newSndPropElem);
}
@ -1214,7 +1221,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1231,7 +1238,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1253,7 +1260,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1274,7 +1281,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1296,7 +1303,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1321,7 +1328,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@ -1357,7 +1364,7 @@ public class NsharpResourceHandler {
// one new loaded sounding data
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId,
tmLine, stnInfo, sndLyLst);
tmLine, stnInfo, sndLyLst,goodData);
sndlistForTm.add(newSndPropElem);
} else {
@ -1405,7 +1412,7 @@ public class NsharpResourceHandler {
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
sndLyLst);
sndLyLst,goodData);
newList.add(newSndPropElem);
newListList.add(newList);
stnTimeSndTable.add(newListList);
@ -1862,6 +1869,21 @@ public class NsharpResourceHandler {
*
* }
*/
//task#5929
private boolean checkDataIntegrity(List<NcSoundingLayer> sndLayers){
boolean gooddata = false;
int numberOfTemp=0;
int numberOfGoodDewPt=0;
for(NcSoundingLayer layer: sndLayers){
if(layer.getTemperature() > -999)
numberOfTemp++;
if(layer.getDewpoint() > -999)
numberOfGoodDewPt++;
}
if(numberOfGoodDewPt >= 2 && numberOfTemp>=2)
gooddata=true;
return gooddata;
}
// This api peforms real load data function
private void addRsc(boolean displayNewData,
@ -1875,8 +1897,8 @@ public class NsharpResourceHandler {
// // newkey=
// String newkey =key.replace("NCUAIR", "gpduair"); // String newkey =
// String newkey= key.replace("NAMS", "SSS");
//String newkey = key.replace("130925/00(Wed)V000", "130925/00(Thu)V000");
// soundMap.put(newkey, sndLy);
// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000");
// soundMap.put(newkey, sndLy);
// }
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
@ -1931,9 +1953,15 @@ public class NsharpResourceHandler {
// based on this KEY string format "KGRI 100616/03(Wed)Vxxx GFSSND"
String stnId, sndType, timeLine, timeLine_sndType, stnId_timeLine_sndType;
List<NcSoundingLayer> sndLyLst;
try {
stnId_timeLine_sndType = tempTimeLineArr[i].toString();
if(stnId_timeLine_sndType.equals("N/A"))
{
continue;
}
sndLyLst = soundMap.get(stnId_timeLine_sndType);
stnId = stnId_timeLine_sndType.substring(0,
stnId_timeLine_sndType.indexOf(" "));
timeLine_sndType = stnId_timeLine_sndType
@ -2022,8 +2050,10 @@ public class NsharpResourceHandler {
// No more needed? timeLine = timeLine.replace(" ", "-"); //fixed
// DR15325 - sorting time line issue in D2D
// add time line to stnTimeTable and set its index
//task#5929
boolean goodData = checkDataIntegrity( sndLyLst);
addElementToTableAndLists(stnId_timeLine_sndType, stnId, timeLine,
sndType, stnInfo, sndLyLst);
sndType, stnInfo, sndLyLst, goodData);
}
if (displayNewData) {
// Set default parcel trace data
@ -2627,10 +2657,7 @@ public class NsharpResourceHandler {
break;
}
if (compareSndIsOn) {
handleUserPickNewTimeLine(currentTimeElementListIndex) ;
return;
}
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
+ 1;
setCurSndProfileProp();
@ -2767,9 +2794,6 @@ public class NsharpResourceHandler {
// we should get out of here
break;
} else if (compareSndIsOn) {
handleUserPickNewTimeLine(targetIndex) ;
return;
/* Chin TBD 12112014
boolean found = false;
if (currentStnElementListIndex >= 0
&& currentSndElementListIndex >= 0
@ -2795,7 +2819,6 @@ public class NsharpResourceHandler {
if (!found) {
currentSndElementListIndex = -1;
} else {
int colorIndex = NsharpConstants.LINE_COMP1;
for (NsharpOperationElement elm : sndElementList) {
if (elm.getActionState() == NsharpConstants.ActState.INACTIVE)
@ -2811,13 +2834,11 @@ public class NsharpResourceHandler {
if (colorIndex > NsharpConstants.LINE_COMP10)
colorIndex = NsharpConstants.LINE_COMP1;
}
}
// no matter we find current snd type for this stn or
// not
// we should get out of here
break;
*/
} else {
break;
}
@ -4043,7 +4064,13 @@ public class NsharpResourceHandler {
// re-populate snd data to nsharp native code lib for later calculating
Collections.sort(soundingLys,
NsharpDataHandling.reversePressureHeightWindComparator());
nsharpNative.populateSndgData(soundingLys);
//#5929
goodData = checkDataIntegrity( soundingLys);
if(getCurSoundingElementStateProperty()!=null){
getCurSoundingElementStateProperty().setGoodData(goodData);
}
if(goodData)
nsharpNative.populateSndgData(soundingLys);
// get storm motion wind data after populate sounding from NsharpLib
// refresh test area if it is shown now
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
@ -4069,6 +4096,13 @@ public class NsharpResourceHandler {
}
if (dataPaneRsc != null)
dataPaneRsc.setSoundingLys(soundingLys);
if (spcGraphsPaneRsc != null && (goodData) ){//#5929
// Chin: SPC graphs performance concern, as it need to call get
// info functions from bigSharo.so and cause long delay.
// Therefore, do it once only when reset data.
spcGraphsPaneRsc.getSpcGraphsInfo();
}
}
public void addNewLayer(float tp, float dp, float ws, float wd,
@ -4086,7 +4120,13 @@ public class NsharpResourceHandler {
// re-populate snd data to nsharp native code lib for later calculating
Collections.sort(soundingLys,
NsharpDataHandling.reversePressureHeightWindComparator());
nsharpNative.populateSndgData(soundingLys);
//#5929
goodData = checkDataIntegrity( soundingLys);
if(getCurSoundingElementStateProperty()!=null){
getCurSoundingElementStateProperty().setGoodData(goodData);
}
if(goodData)
nsharpNative.populateSndgData(soundingLys);
// get storm motion wind data after populate sounding from NsharpLib
// refresh text area if it is shown now
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
@ -4112,6 +4152,12 @@ public class NsharpResourceHandler {
}
if (dataPaneRsc != null)
dataPaneRsc.setSoundingLys(soundingLys);
if (spcGraphsPaneRsc != null && (goodData) ){//#5929
// Chin: SPC graphs performance concern, as it need to call get
// info functions from bigSharo.so and cause long delay.
// Therefore, do it once only when reset data.
spcGraphsPaneRsc.getSpcGraphsInfo();
}
}
public void setGraphConfigProperty(NsharpGraphProperty graphConfigProperty) {
@ -4440,4 +4486,9 @@ public class NsharpResourceHandler {
refreshPane();
return true;
}
//#5929
public boolean isGoodData() {
return goodData;
}
}

View file

@ -14,7 +14,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* May 08, 2013 1847 bsteffen Allow painting with no Wind Data.
* 02/03/2014 1106 Chin Chen Need to be able to use clicking on the Src,Time, or StnId to select display
* 08/04/2014 Chin Chen fixed effective level line drawing, height marker drawing
* 12/11/2014 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -1740,6 +1742,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
// box
}
target.drawStrings(str, latlonstr);
if(wwTypeColor == null)
wwTypeColor = NsharpConstants.color_gold;
target.drawRect(boxExt, wwTypeColor, 2f, 1f); // box border line colored
// with "Psbl Watch Type"
// color
@ -1768,7 +1772,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
// to check a scenario that sounding data is removed while
// thread is locked
if (soundingLys == null
|| (soundingLys != null && soundingLys.size() <= 0)) {
|| (soundingLys != null && soundingLys.size() < 2)) {
reentryLock.unlock();
return;
}
@ -1779,7 +1783,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} else if (justBackToMainPane) {
reentryLock.lock();
if (soundingLys == null
|| (soundingLys != null && soundingLys.size() <= 0)) {
|| (soundingLys != null && soundingLys.size() < 2)) {
reentryLock.unlock();
return;
}
@ -1828,376 +1832,384 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
this.font12.setScaleFont(false);
// nsharpNative.populateSndgData(soundingLys);
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
target.setupClippingPlane(pe);
// plot temp curve, when constructing pressureTempRscShapeList,
// it already considered
// comparison, overlay, etc..so, just draw it.
for (NsharpShapeAndLineProperty shapeNLp : pressureTempRscShapeList) {
target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
.getLp().getLineColor(), shapeNLp.getLp()
.getLineWidth(), shapeNLp.getLp().getLineStyle(),
font10);// commonLinewidth*2,commonLineStyle,font10);
}
// plot real temp parcel trace, when constructing
// parcelRtShapeList, it already considered
// comparison, overlay, etc..so, just draw it.
// color is following comparison/overlay lines' configuration.
// line width and line style are following parcel line
// configuration
if (graphConfigProperty.isParcel() == true) {
NsharpLineProperty parcelLp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL]);
for (NsharpShapeAndLineProperty shapeNLp : parcelRtShapeList) {
target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
.getLp().getLineColor(), parcelLp
.getLineWidth(), parcelLp.getLineStyle(),
font10);// commonLinewidth*2,commonLineStyle,font10);
}
}
boolean compareStnIsOn = rscHandler.isCompareStnIsOn();
boolean compareSndIsOn = rscHandler.isCompareSndIsOn();
boolean compareTmIsOn = rscHandler.isCompareTmIsOn();
boolean editGraphOn = rscHandler.isEditGraphOn();
boolean overlayIsOn = rscHandler.isOverlayIsOn();
if (graphConfigProperty != null) {
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
&& !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE,
this.soundingLys);
}
// dew point curve
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
&& !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_green, DEWPOINT_TYPE,
this.soundingLys);
}
// plot wet bulb trace
if (graphConfigProperty.isWetBulb() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
target.drawWireframeShape(wetBulbTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
// plot virtual temperature trace
if (graphConfigProperty.isVTemp() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
target.drawWireframeShape(vtempTraceCurveRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
// virtual temperature parcel trace curve
if (graphConfigProperty.isParcelTv() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
&& !overlayIsOn) {
if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
target.drawWireframeShape(parcelVtTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
}
if (graphConfigProperty.isDcape() == true
&& dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
&& !compareTmIsOn && !overlayIsOn) {
if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
target.drawWireframeShape(dacpeTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
target.setupClippingPlane(pe);
// plot temp curve, when constructing pressureTempRscShapeList,
// it already considered
// comparison, overlay, etc..so, just draw it.
for (NsharpShapeAndLineProperty shapeNLp : pressureTempRscShapeList) {
target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
.getLp().getLineColor(), shapeNLp.getLp()
.getLineWidth(), shapeNLp.getLp().getLineStyle(),
font10);// commonLinewidth*2,commonLineStyle,font10);
}
// plot real temp parcel trace, when constructing
// parcelRtShapeList, it already considered
// comparison, overlay, etc..so, just draw it.
// color is following comparison/overlay lines' configuration.
// line width and line style are following parcel line
// configuration
if (graphConfigProperty.isParcel() == true && rscHandler.isGoodData()) { //#5929
NsharpLineProperty parcelLp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL]);
for (NsharpShapeAndLineProperty shapeNLp : parcelRtShapeList) {
target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
.getLp().getLineColor(), parcelLp
.getLineWidth(), parcelLp.getLineStyle(),
font10);// commonLinewidth*2,commonLineStyle,font10);
}
}
boolean compareStnIsOn = rscHandler.isCompareStnIsOn();
boolean compareSndIsOn = rscHandler.isCompareSndIsOn();
boolean compareTmIsOn = rscHandler.isCompareTmIsOn();
boolean editGraphOn = rscHandler.isEditGraphOn();
boolean overlayIsOn = rscHandler.isOverlayIsOn();
if (graphConfigProperty != null) {
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
&& !compareTmIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE,
this.soundingLys);
}
// dew point curve
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
&& !compareTmIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_green, DEWPOINT_TYPE,
this.soundingLys);
}
// plot wet bulb trace
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
target.drawWireframeShape(wetBulbTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
// plot virtual temperature trace
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
target.drawWireframeShape(vtempTraceCurveRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
// virtual temperature parcel trace curve
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn
&& !overlayIsOn) {
if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
target.drawWireframeShape(parcelVtTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
}
}
}
if (graphConfigProperty.isEffLayer() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
// draw effective layer lines
// drawEffectiveLayerLines(target);
target.drawWireframeShape(effectiveLayerLineShape,
NsharpConstants.color_cyan_md, 2,
commonLineStyle, font10);
}
// cloud
if (graphConfigProperty.isCloud() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (cloudFMShape != null)
target.drawShadedShape(cloudFMShape, 1f);
if (cloudFMLabelShape != null)
target.drawWireframeShape(cloudFMLabelShape,
NsharpConstants.color_chocolate,
commonLinewidth * 3, commonLineStyle, font9);
if (cloudCEShape != null)
target.drawShadedShape(cloudCEShape, 1f);
}
if (graphConfigProperty.isOmega() == true
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (NsharpLoadDialog.getAccess() != null
&& (NsharpLoadDialog.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
// plot omega
drawOmega();
}
}
} else {
// by default, draw everything
if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE,
this.soundingLys);
// dew point curve
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_green, DEWPOINT_TYPE,
this.soundingLys);
// plot wetbulb trace
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
target.drawWireframeShape(wetBulbTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
// plot virtual temp trace
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
target.drawWireframeShape(vtempTraceCurveRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
&& dacpeTraceRscShape != null && !compareStnIsOn
&& !compareTmIsOn && !overlayIsOn) {
if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
target.drawWireframeShape(dacpeTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
// virtual temperature parcel trace curve
if (!overlayIsOn) {
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
target.drawWireframeShape(parcelVtTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
if (dacpeTraceRscShape != null) {
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
target.drawWireframeShape(dacpeTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
}
// draw effective layer lines
// drawEffectiveLayerLines(target);
target.drawWireframeShape(effectiveLayerLineShape,
NsharpConstants.color_cyan_md, 2,
commonLineStyle, font10);
if (NsharpLoadDialog.getAccess() != null
&& (NsharpLoadDialog.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
// plot omega
drawOmega();
}
}
}
if (plotInteractiveTemp == true) {
if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT)
plotNsharpInteractiveEditingTemp(target,
currentZoomLevel, world,
NsharpConstants.color_white);
else if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_MOVELINE)
plotNsharpMovingTempLine(target, world,
NsharpConstants.color_white);
}
}
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) {
// draw effective layer lines
// drawEffectiveLayerLines(target);
target.drawWireframeShape(effectiveLayerLineShape,
NsharpConstants.color_cyan_md, 2,
commonLineStyle, font10);
}
// cloud
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) {
if (cloudFMShape != null)
target.drawShadedShape(cloudFMShape, 1f);
if (cloudFMLabelShape != null)
target.drawWireframeShape(cloudFMLabelShape,
NsharpConstants.color_chocolate,
commonLinewidth * 3, commonLineStyle, font9);
if (cloudCEShape != null)
target.drawShadedShape(cloudCEShape, 1f);
}
if (graphConfigProperty.isOmega() == true
&& !compareStnIsOn && !compareTmIsOn) {
if (NsharpLoadDialog.getAccess() != null
&& (NsharpLoadDialog.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
// plot omega
drawOmega();
}
}
} else {
// by default, draw everything
if (!compareStnIsOn && !compareTmIsOn) {
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE,
this.soundingLys);
// dew point curve
if (editGraphOn)
plotPressureTempEditPoints(target, world,
NsharpConstants.color_green, DEWPOINT_TYPE,
this.soundingLys);
if(rscHandler.isGoodData()) { //#5929
// plot wetbulb trace
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
target.drawWireframeShape(wetBulbTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
// plot virtual temp trace
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
target.drawWireframeShape(vtempTraceCurveRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
target.clearClippingPlane();
// virtual temperature parcel trace curve
if (!overlayIsOn) {
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
target.drawWireframeShape(parcelVtTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
if (dacpeTraceRscShape != null) {
lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
target.drawWireframeShape(dacpeTraceRscShape,
lp.getLineColor(), lp.getLineWidth(),
lp.getLineStyle(), font10);
}
}
// draw effective layer lines
// drawEffectiveLayerLines(target);
target.drawWireframeShape(effectiveLayerLineShape,
NsharpConstants.color_cyan_md, 2,
commonLineStyle, font10);
}
if (NsharpLoadDialog.getAccess() != null
&& (NsharpLoadDialog.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
// plot omega
drawOmega();
}
}
}
if (plotInteractiveTemp == true) {
if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT)
plotNsharpInteractiveEditingTemp(target,
currentZoomLevel, world,
NsharpConstants.color_white);
else if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_MOVELINE)
plotNsharpMovingTempLine(target, world,
NsharpConstants.color_white);
}
target.clearClippingPlane();
// Wind Barb
if ((graphConfigProperty != null && graphConfigProperty
.isWindBarb() == true) || graphConfigProperty == null) {
double xPos = skewTBackground.getWindBarbXPosition();
if (overlayIsOn == true && this.previousSoundingLys != null) {
drawNsharpWindBarb(
target,
currentZoomLevel,
world,
linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY1])
.getLineColor(), this.soundingLys,
xPos, 100);
if (!previousSoundingLys.equals(soundingLys))
drawNsharpWindBarb(
target,
currentZoomLevel,
world,
linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY2])
.getLineColor(),
this.previousSoundingLys,
xPos - NsharpResourceHandler.BARB_LENGTH,
100);
} else {
if (!compareStnIsOn && !compareTmIsOn
&& !compareSndIsOn) {
drawNsharpWindBarb(target, currentZoomLevel, world,
graphConfigProperty.getWindBarbColor(),
this.soundingLys, xPos, 100);
} else {
int currentTimeListIndex = rscHandler
.getCurrentTimeElementListIndex();
int currentStnListIndex = rscHandler
.getCurrentStnElementListIndex();
int currentSndListIndex = rscHandler
.getCurrentSndElementListIndex();
List<NsharpOperationElement> stnElemList = rscHandler
.getStnElementList();
List<NsharpOperationElement> timeElemList = rscHandler
.getTimeElementList();
List<NsharpOperationElement> sndElemList = rscHandler
.getSndElementList();
List<List<List<NsharpSoundingElementStateProperty>>> stnTimeSndTable = rscHandler
.getStnTimeSndTable();
if (compareTmIsOn && currentStnListIndex >= 0
&& currentSndListIndex >= 0) {
int colorIndex;
for (NsharpOperationElement elm : timeElemList) {
if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
&& stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList
.indexOf(elm))
.get(currentSndListIndex) != null) {
List<NcSoundingLayer> soundingLayeys = stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList.indexOf(elm))
.get(currentSndListIndex)
.getSndLyLst();
colorIndex = stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList.indexOf(elm))
.get(currentSndListIndex)
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
} else if (compareStnIsOn
&& currentTimeListIndex >= 0
&& currentSndListIndex >= 0) {
int colorIndex;
for (NsharpOperationElement elm : stnElemList) {
if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
&& stnTimeSndTable
.get(stnElemList
.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex) != null) {
List<NcSoundingLayer> soundingLayeys = stnTimeSndTable
.get(stnElemList.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex)
.getSndLyLst();
colorIndex = stnTimeSndTable
.get(stnElemList.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex)
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
} else if (compareSndIsOn
&& currentStnListIndex >= 0
&& currentTimeListIndex >= 0) {
int colorIndex;
// start FixMark:nearByStnCompSnd
List<NsharpResourceHandler.CompSndSelectedElem> sndCompElementList = rscHandler
.getCompSndSelectedElemList();
for (NsharpResourceHandler.CompSndSelectedElem compElem : sndCompElementList) {
NsharpSoundingElementStateProperty elemProp = stnTimeSndTable
.get(compElem.getStnIndex())
.get(compElem.getTimeIndex())
.get(compElem.getSndIndex());
if (sndElemList.get(compElem.getSndIndex())
.getActionState() == NsharpConstants.ActState.ACTIVE
&& elemProp != null) {
List<NcSoundingLayer> soundingLayeys = elemProp
.getSndLyLst();
colorIndex = elemProp
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
/*
* original code for(NsharpOperationElement elm:
* sndElemList) { if(elm.getActionState() ==
* NsharpConstants.ActState.ACTIVE &&
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(elm))!=null){
* List<NcSoundingLayer> soundingLayeys =
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(
* elm)).getSndLyLst(); colorIndex =
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(
* elm)).getCompColorIndex(); NsharpLineProperty
* lp =
* linePropertyMap.get(NsharpConstants.lineNameArray
* [colorIndex]); drawNsharpWindBarb(target,
* currentZoomLevel, world, lp.getLineColor(),
* soundingLayeys, xPos,100); } }
*/
// end start FixMark:nearByStnCompSnd
}
}
}
// System.out.println("x1 pos"+xPos+ " x2 pos="+ (xPos -
// NsharpResourceHandler.BARB_LENGTH));
}
if( rscHandler.isGoodData() ){ //#5929)
drawHeightMark(target);
// draw EL, LFC, LCL, FZL, -20C, -30C lines
// drawLclLine(target);
target.drawWireframeShape(lclShape,
NsharpConstants.color_green, 2, LineStyle.SOLID, font10);
target.drawWireframeShape(elShape, NsharpConstants.color_red,
2, LineStyle.SOLID, font10);
target.drawWireframeShape(lfcShape,
NsharpConstants.color_yellow, 2, LineStyle.SOLID,
font10);
target.drawWireframeShape(fzlShape, NsharpConstants.color_cyan,
2, LineStyle.SOLID, font10);
}
drawNsharpFileNameAndSampling(target, currentZoomLevel);
// draw cursor data
if (cursorInSkewT == true && rscHandler.isGoodData()) {
if ((curseToggledFontLevel < CURSER_STRING_OFF)
&& (cursorTopWindBarb == false || windBarbMagnify == false))
drawNsharpSkewtCursorData(target);
}
// Wind Barb
if ((graphConfigProperty != null && graphConfigProperty
.isWindBarb() == true) || graphConfigProperty == null) {
double xPos = skewTBackground.getWindBarbXPosition();
if (overlayIsOn == true && this.previousSoundingLys != null) {
drawNsharpWindBarb(
target,
currentZoomLevel,
world,
linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY1])
.getLineColor(), this.soundingLys,
xPos, 100);
if (!previousSoundingLys.equals(soundingLys))
drawNsharpWindBarb(
target,
currentZoomLevel,
world,
linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY2])
.getLineColor(),
this.previousSoundingLys,
xPos - NsharpResourceHandler.BARB_LENGTH,
100);
} else {
if (!compareStnIsOn && !compareTmIsOn
&& !compareSndIsOn) {
drawNsharpWindBarb(target, currentZoomLevel, world,
graphConfigProperty.getWindBarbColor(),
this.soundingLys, xPos, 100);
} else {
int currentTimeListIndex = rscHandler
.getCurrentTimeElementListIndex();
int currentStnListIndex = rscHandler
.getCurrentStnElementListIndex();
int currentSndListIndex = rscHandler
.getCurrentSndElementListIndex();
List<NsharpOperationElement> stnElemList = rscHandler
.getStnElementList();
List<NsharpOperationElement> timeElemList = rscHandler
.getTimeElementList();
List<NsharpOperationElement> sndElemList = rscHandler
.getSndElementList();
List<List<List<NsharpSoundingElementStateProperty>>> stnTimeSndTable = rscHandler
.getStnTimeSndTable();
if (compareTmIsOn && currentStnListIndex >= 0
&& currentSndListIndex >= 0) {
int colorIndex;
for (NsharpOperationElement elm : timeElemList) {
if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
&& stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList
.indexOf(elm))
.get(currentSndListIndex) != null) {
List<NcSoundingLayer> soundingLayeys = stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList.indexOf(elm))
.get(currentSndListIndex)
.getSndLyLst();
colorIndex = stnTimeSndTable
.get(currentStnListIndex)
.get(timeElemList.indexOf(elm))
.get(currentSndListIndex)
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
} else if (compareStnIsOn
&& currentTimeListIndex >= 0
&& currentSndListIndex >= 0) {
int colorIndex;
for (NsharpOperationElement elm : stnElemList) {
if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
&& stnTimeSndTable
.get(stnElemList
.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex) != null) {
List<NcSoundingLayer> soundingLayeys = stnTimeSndTable
.get(stnElemList.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex)
.getSndLyLst();
colorIndex = stnTimeSndTable
.get(stnElemList.indexOf(elm))
.get(currentTimeListIndex)
.get(currentSndListIndex)
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
} else if (compareSndIsOn
&& currentStnListIndex >= 0
&& currentTimeListIndex >= 0) {
int colorIndex;
// start FixMark:nearByStnCompSnd
List<NsharpResourceHandler.CompSndSelectedElem> sndCompElementList = rscHandler
.getCompSndSelectedElemList();
for (NsharpResourceHandler.CompSndSelectedElem compElem : sndCompElementList) {
NsharpSoundingElementStateProperty elemProp = stnTimeSndTable
.get(compElem.getStnIndex())
.get(compElem.getTimeIndex())
.get(compElem.getSndIndex());
if (sndElemList.get(compElem.getSndIndex())
.getActionState() == NsharpConstants.ActState.ACTIVE
&& elemProp != null) {
List<NcSoundingLayer> soundingLayeys = elemProp
.getSndLyLst();
colorIndex = elemProp
.getCompColorIndex();
NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[colorIndex]);
drawNsharpWindBarb(target,
currentZoomLevel, world,
lp.getLineColor(),
soundingLayeys, xPos, 100);
}
}
/*
* original code for(NsharpOperationElement elm:
* sndElemList) { if(elm.getActionState() ==
* NsharpConstants.ActState.ACTIVE &&
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(elm))!=null){
* List<NcSoundingLayer> soundingLayeys =
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(
* elm)).getSndLyLst(); colorIndex =
* stnTimeSndTable.get(currentStnListIndex).get(
* currentTimeListIndex
* ).get(sndElemList.indexOf(
* elm)).getCompColorIndex(); NsharpLineProperty
* lp =
* linePropertyMap.get(NsharpConstants.lineNameArray
* [colorIndex]); drawNsharpWindBarb(target,
* currentZoomLevel, world, lp.getLineColor(),
* soundingLayeys, xPos,100); } }
*/
// end start FixMark:nearByStnCompSnd
}
}
}
// System.out.println("x1 pos"+xPos+ " x2 pos="+ (xPos -
// NsharpResourceHandler.BARB_LENGTH));
}
drawHeightMark(target);
// draw EL, LFC, LCL, FZL, -20C, -30C lines
// drawLclLine(target);
target.drawWireframeShape(lclShape,
NsharpConstants.color_green, 2, LineStyle.SOLID, font10);
target.drawWireframeShape(elShape, NsharpConstants.color_red,
2, LineStyle.SOLID, font10);
target.drawWireframeShape(lfcShape,
NsharpConstants.color_yellow, 2, LineStyle.SOLID,
font10);
target.drawWireframeShape(fzlShape, NsharpConstants.color_cyan,
2, LineStyle.SOLID, font10);
drawNsharpFileNameAndSampling(target, currentZoomLevel);
// draw cursor data
if (cursorInSkewT == true) {
if ((curseToggledFontLevel < CURSER_STRING_OFF)
&& (cursorTopWindBarb == false || windBarbMagnify == false))
drawNsharpSkewtCursorData(target);
}
}// end of currentGraphMode= NsharpConstants.GRAPH_SKEWT
else if (currentGraphMode == NsharpConstants.GRAPH_ICING) {
else if (currentGraphMode == NsharpConstants.GRAPH_ICING && rscHandler.isGoodData()) {//#5929
paintIcing(currentZoomLevel, target);
} else if (currentGraphMode == NsharpConstants.GRAPH_TURB) {
} else if (currentGraphMode == NsharpConstants.GRAPH_TURB && rscHandler.isGoodData()) {//#5929
paintTurbulence(currentZoomLevel, target);
}
// drawNsharpFileNameAndSampling(target, currentZoomLevel);
@ -3506,31 +3518,37 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
*/
public void createRscWireFrameShapes() {
// System.out.println("createRscWireFrameShapes called");
if (target != null) {
disposeRscWireFrameShapes();
if (soundingLys != null) {
// createRscOmegaShape();
// createRscHeightMarkShape();
createRscwetBulbTraceShape();
createRscPressTempCurveShapeAll(target);
createRscVTempTraceShape();
createRscParcelRtTraceShapesList(rscHandler.getCurrentParcel(),
rscHandler.getCurrentParcelLayerPressure());// real temp
// trace
createRscParcelTraceShapes(rscHandler.getCurrentParcel(),
rscHandler.getCurrentParcelLayerPressure()); // Virtual
// Temp
// Trace
// and
// DCAPE
// trace
createLCLEtcLinesShape();
createEffectiveLayerLinesShape();
createCloudsShape();
updatePsblWatchColor();
}
}
// System.out.println("createRscWireFrameShapes called");
if (target != null) {
disposeRscWireFrameShapes();
if (soundingLys != null){
if( rscHandler.isGoodData()) {//#5929
// createRscOmegaShape();
// createRscHeightMarkShape();
createRscwetBulbTraceShape();
createRscPressTempCurveShapeAll(target);
createRscVTempTraceShape();
createRscParcelRtTraceShapesList(rscHandler.getCurrentParcel(),
rscHandler.getCurrentParcelLayerPressure());// real temp
// trace
createRscParcelTraceShapes(rscHandler.getCurrentParcel(),
rscHandler.getCurrentParcelLayerPressure()); // Virtual
// Temp
// Trace
// and
// DCAPE
// trace
createLCLEtcLinesShape();
createEffectiveLayerLinesShape();
createCloudsShape();
updatePsblWatchColor();
}
else {//#5929
createRscPressTempCurveShapeAll(target);
}
}
}
}
public void disposeRscWireFrameShapes() {

View file

@ -17,7 +17,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* bigsharp version 2013Jun12
* 12/03/2014 DR#16884 Chin Chen fixed issue, NSHARP crashes if user loops a product and
* then clicks WINTER/FIRE buttons in Toolbar
*
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
* </pre>
*
* @author Chin Chen
@ -1896,7 +1898,7 @@ public class NsharpSpcGraphsPaneResource extends NsharpAbstractPaneResource {
PaintProperties paintProps) throws VizException {
super.paintInternal(target, paintProps);
// defineCharHeight(font10);
if (rscHandler == null || rscHandler.getSoundingLys() == null)
if (rscHandler == null || rscHandler.getSoundingLys() == null || !rscHandler.isGoodData())//#5929
return;
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);

View file

@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
* 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser
*
* </pre>
*
@ -159,11 +162,14 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
float x1 = verticalWindXOrig+ (verticalWindWidth/2);
target.drawLine(x1, verticalWindYOrig, 0, x1, verticalWindYOrig+verticalWindHeight, 0,
NsharpConstants.color_white, 1, LineStyle.DASHED);
target.drawWireframeShape(verticalWindLabelShape, NsharpConstants.color_white,
if(verticalWindLabelShape!=null) //#5929
target.drawWireframeShape(verticalWindLabelShape, NsharpConstants.color_white,
0.3F, commonLineStyle,font10);
target.drawWireframeShape(verticalWindRShape, NsharpConstants.color_red,
if(verticalWindRShape!=null)
target.drawWireframeShape(verticalWindRShape, NsharpConstants.color_red,
0.3F, commonLineStyle,font10);
target.drawWireframeShape(verticalWindSbShape, NsharpConstants.color_skyblue,
if(verticalWindSbShape!=null)
target.drawWireframeShape(verticalWindSbShape, NsharpConstants.color_skyblue,
0.3F, commonLineStyle,font10);
target.clearClippingPlane();
}
@ -304,7 +310,7 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
windBoxWindRscShapeList.add(shNcolor);
float surfaceLevel = soundingLys.get(0).getGeoHeight(); //#5929
//System.out.println("my wolrd minvY="+ myYViewMin+ " maxVY="+myYViewMax+ " YRange="+myYViewRange);
for (NcSoundingLayer layer : soundingLys) {
float pressure = layer.getPressure();
@ -321,13 +327,14 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
//System.out.println("Wind p="+pressure+" yP="+ windBoxY+ " ratio="+yRatio);
float geoHt = layer.getGeoHeight();
double [][] lines = {{windBoxX, windBoxY},{windBoxX + (spd) * xRatio,windBoxY}};
if(geoHt <nsharpNative.nsharpLib.msl(3000))
//use MSL here, so Converts height from (meters) AGL to MSL. #5929
if(geoHt < (3000+surfaceLevel))
shapeR.addLineSegment(lines);
else if(geoHt < nsharpNative.nsharpLib.msl(6000))
else if(geoHt < (6000+surfaceLevel))
shapeG.addLineSegment(lines);
else if(geoHt < nsharpNative.nsharpLib.msl(9000))
else if(geoHt < (9000+surfaceLevel))
shapeY.addLineSegment(lines);
else if(geoHt < nsharpNative.nsharpLib.msl(12000))
else if(geoHt < (12000+surfaceLevel))
shapeC.addLineSegment(lines);
else
shapeV.addLineSegment(lines);
@ -437,7 +444,6 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
verticalWindLabelShape.compile();
}
/**
* Create all wire frame shapes at one place.
* Should be used only when a new resource is becoming Current active resource to be displayed.
@ -447,22 +453,23 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
if(target== null || rscHandler== null || inSidePane )
return;
//System.out.println("whitoPane="+this.toString()+" createAllWireFrameShapes called");
rscHandler.repopulateSndgData();
//rscHandler.repopulateSndgData();//#5929 TBD why need this?????
disposeAllWireFrameShapes();
if(soundingLys != null){
NsharpGenericPaneBackground skewtBgd = rscHandler.getSkewtPaneRsc().getActiveBackground();
if(skewtBgd!=null){
vpc = skewtBgd.getViewablePressureContainer(soundingLys);
vplc = skewtBgd.getViewablePressureLinesContainer();
}
createRscOmegaShape();
createRscWindBoxWindShape();
createRscVerticalWindShape();
disposeAllWireFrameShapes();
if(soundingLys != null){
NsharpGenericPaneBackground skewtBgd = rscHandler.getSkewtPaneRsc().getActiveBackground();
if(skewtBgd!=null){
vpc = skewtBgd.getViewablePressureContainer(soundingLys);
vplc = skewtBgd.getViewablePressureLinesContainer();
}
//create static shape
createBkgOmegaShape();
createBkgWindBoxShape();
createRscOmegaShape();
createRscWindBoxWindShape();
if(rscHandler.isGoodData())//#5929
createRscVerticalWindShape();
}
//create static shape
createBkgOmegaShape();
createBkgWindBoxShape();
}
public void createRscWireFrameShapes(){
@ -477,7 +484,8 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
}
createRscOmegaShape();
createRscWindBoxWindShape();
createRscVerticalWindShape();
if(rscHandler.isGoodData())//#5929
createRscVerticalWindShape();
}
}
}