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:a601a2c9f7
[formerly99b1511120
] [formerly4ddd4cec81
] [formerlya601a2c9f7
[formerly99b1511120
] [formerly4ddd4cec81
] [formerly15f28c0245
[formerly4ddd4cec81
[formerly 307e986b8e9ce89ad1eb7b28f88afe82c2596f30]]]] Former-commit-id:15f28c0245
Former-commit-id:3a39f4bc15
[formerly4d1427b012
] [formerly 4b2572a25fe5c79c86188f2479711145f792b619 [formerly5b1b9cff50
]] Former-commit-id: fe1692f3f9b0488d105c3cf468babe911a43bc0f [formerly92f0a1bfb1
] Former-commit-id:614d6f9c9e
This commit is contained in:
commit
e8753ba168
27 changed files with 1559 additions and 1653 deletions
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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,23 +296,23 @@ 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;
|
||||
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 = dqc.old_isom;
|
||||
old_isom = DailyQcUtils.old_isom;
|
||||
// tdata = DailyQcUtils.tdata;
|
||||
// zdata = DailyQcUtils.zdata;
|
||||
|
||||
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,10 +1047,12 @@ public class SaveLevel2Data {
|
|||
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
|
|
|
@ -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,398 +359,80 @@ 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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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, \
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
#
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,8 +1384,12 @@ 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) {
|
||||
//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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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,68 +56,6 @@ 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() {
|
||||
List<NsharpSkewTPaneResource> list = resourceList
|
||||
.getResourcesByTypeAsType(NsharpSkewTPaneResource.class);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,6 +999,11 @@ public class NsharpResourceHandler {
|
|||
|
||||
// update active sounding layer and picked stn info
|
||||
// re-populate snd data to nsharp native code lib for later calculating
|
||||
//#5929 dont populate sounding data if data is bad
|
||||
|
||||
if(getCurSoundingElementStateProperty()!=null)
|
||||
goodData= getCurSoundingElementStateProperty().isGoodData();
|
||||
if(goodData)
|
||||
nsharpNative.populateSndgData(soundingLys);
|
||||
|
||||
if (skewtPaneRsc != null)
|
||||
|
@ -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,7 +1897,7 @@ 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");
|
||||
// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000");
|
||||
// soundMap.put(newkey, sndLy);
|
||||
// }
|
||||
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
|
||||
|
@ -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,6 +4064,12 @@ public class NsharpResourceHandler {
|
|||
// re-populate snd data to nsharp native code lib for later calculating
|
||||
Collections.sort(soundingLys,
|
||||
NsharpDataHandling.reversePressureHeightWindComparator());
|
||||
//#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
|
||||
|
@ -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,6 +4120,12 @@ public class NsharpResourceHandler {
|
|||
// re-populate snd data to nsharp native code lib for later calculating
|
||||
Collections.sort(soundingLys,
|
||||
NsharpDataHandling.reversePressureHeightWindComparator());
|
||||
//#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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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,6 +1832,7 @@ 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
|
||||
|
@ -1844,7 +1849,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
// color is following comparison/overlay lines' configuration.
|
||||
// line width and line style are following parcel line
|
||||
// configuration
|
||||
if (graphConfigProperty.isParcel() == true) {
|
||||
if (graphConfigProperty.isParcel() == true && rscHandler.isGoodData()) { //#5929
|
||||
NsharpLineProperty parcelLp = linePropertyMap
|
||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL]);
|
||||
for (NsharpShapeAndLineProperty shapeNLp : parcelRtShapeList) {
|
||||
|
@ -1861,7 +1866,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
boolean overlayIsOn = rscHandler.isOverlayIsOn();
|
||||
if (graphConfigProperty != null) {
|
||||
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
|
||||
&& !compareTmIsOn && !compareSndIsOn) {
|
||||
&& !compareTmIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_red, TEMP_TYPE,
|
||||
|
@ -1869,15 +1874,15 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// dew point curve
|
||||
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
|
||||
&& !compareTmIsOn && !compareSndIsOn) {
|
||||
&& !compareTmIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_green, DEWPOINT_TYPE,
|
||||
this.soundingLys);
|
||||
}
|
||||
// plot wet bulb trace
|
||||
if (graphConfigProperty.isWetBulb() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
|
||||
target.drawWireframeShape(wetBulbTraceRscShape,
|
||||
|
@ -1885,8 +1890,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
lp.getLineStyle(), font10);
|
||||
}
|
||||
// plot virtual temperature trace
|
||||
if (graphConfigProperty.isVTemp() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
|
||||
target.drawWireframeShape(vtempTraceCurveRscShape,
|
||||
|
@ -1894,8 +1899,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
lp.getLineStyle(), font10);
|
||||
}
|
||||
// virtual temperature parcel trace curve
|
||||
if (graphConfigProperty.isParcelTv() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
|
||||
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn
|
||||
&& !overlayIsOn) {
|
||||
if (soundingLys.size() > 0) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
|
@ -1906,8 +1911,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
}
|
||||
|
||||
if (graphConfigProperty.isDcape() == true
|
||||
&& dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
|
||||
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
|
||||
&& dacpeTraceRscShape != null && !compareStnIsOn
|
||||
&& !compareTmIsOn && !overlayIsOn) {
|
||||
if (soundingLys.size() > 0) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
|
@ -1918,8 +1923,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
|
||||
}
|
||||
}
|
||||
if (graphConfigProperty.isEffLayer() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
// draw effective layer lines
|
||||
// drawEffectiveLayerLines(target);
|
||||
target.drawWireframeShape(effectiveLayerLineShape,
|
||||
|
@ -1927,8 +1932,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
commonLineStyle, font10);
|
||||
}
|
||||
// cloud
|
||||
if (graphConfigProperty.isCloud() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
if (cloudFMShape != null)
|
||||
target.drawShadedShape(cloudFMShape, 1f);
|
||||
if (cloudFMLabelShape != null)
|
||||
|
@ -1939,7 +1944,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
target.drawShadedShape(cloudCEShape, 1f);
|
||||
}
|
||||
if (graphConfigProperty.isOmega() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
if (NsharpLoadDialog.getAccess() != null
|
||||
&& (NsharpLoadDialog.getAccess()
|
||||
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
|
||||
|
@ -1951,7 +1956,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
} else {
|
||||
// by default, draw everything
|
||||
if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (!compareStnIsOn && !compareTmIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_red, TEMP_TYPE,
|
||||
|
@ -1961,6 +1966,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
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]);
|
||||
|
@ -1994,6 +2000,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
target.drawWireframeShape(effectiveLayerLineShape,
|
||||
NsharpConstants.color_cyan_md, 2,
|
||||
commonLineStyle, font10);
|
||||
}
|
||||
if (NsharpLoadDialog.getAccess() != null
|
||||
&& (NsharpLoadDialog.getAccess()
|
||||
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
|
||||
|
@ -2175,6 +2182,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
// 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);
|
||||
|
@ -2187,17 +2195,21 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
font10);
|
||||
target.drawWireframeShape(fzlShape, NsharpConstants.color_cyan,
|
||||
2, LineStyle.SOLID, font10);
|
||||
|
||||
}
|
||||
drawNsharpFileNameAndSampling(target, currentZoomLevel);
|
||||
// draw cursor data
|
||||
if (cursorInSkewT == true) {
|
||||
if (cursorInSkewT == true && rscHandler.isGoodData()) {
|
||||
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);
|
||||
|
@ -3510,6 +3522,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
if (target != null) {
|
||||
disposeRscWireFrameShapes();
|
||||
if (soundingLys != null){
|
||||
if( rscHandler.isGoodData()) {//#5929
|
||||
|
||||
// createRscOmegaShape();
|
||||
// createRscHeightMarkShape();
|
||||
createRscwetBulbTraceShape();
|
||||
|
@ -3530,6 +3544,10 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
createCloudsShape();
|
||||
updatePsblWatchColor();
|
||||
}
|
||||
else {//#5929
|
||||
createRscPressTempCurveShapeAll(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,10 +162,13 @@ 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);
|
||||
if(verticalWindLabelShape!=null) //#5929
|
||||
target.drawWireframeShape(verticalWindLabelShape, NsharpConstants.color_white,
|
||||
0.3F, commonLineStyle,font10);
|
||||
if(verticalWindRShape!=null)
|
||||
target.drawWireframeShape(verticalWindRShape, NsharpConstants.color_red,
|
||||
0.3F, commonLineStyle,font10);
|
||||
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,7 +453,7 @@ 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){
|
||||
|
@ -458,6 +464,7 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
|
|||
}
|
||||
createRscOmegaShape();
|
||||
createRscWindBoxWindShape();
|
||||
if(rscHandler.isGoodData())//#5929
|
||||
createRscVerticalWindShape();
|
||||
}
|
||||
//create static shape
|
||||
|
@ -477,6 +484,7 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
|
|||
}
|
||||
createRscOmegaShape();
|
||||
createRscWindBoxWindShape();
|
||||
if(rscHandler.isGoodData())//#5929
|
||||
createRscVerticalWindShape();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue