Merge branch 'ncep_14.2.1' of ssh://collaborate3.nws.noaa.gov:29418/AWIPS2_Dev_Baseline into master_14.2.1
Former-commit-id:8d4a1e1204
[formerly24785068be
] [formerlyd710aec521
] [formerly8d4a1e1204
[formerly24785068be
] [formerlyd710aec521
] [formerlyfda6ab1344
[formerlyd710aec521
[formerly ac54324fb0eff1483dd2c3aa8d94273760451dab]]]] Former-commit-id:fda6ab1344
Former-commit-id:d197a72c20
[formerlyc5502af3fa
] [formerly 6ec1b00cf64c71cead90fca582edef188ec24710 [formerly0aff5875b0
]] Former-commit-id: 28dc637ae8563b78153684cbfa60e954caea69c9 [formerlydcade6e18a
] Former-commit-id:26e19974d1
This commit is contained in:
commit
0a1ef77d16
13 changed files with 3981 additions and 3921 deletions
Binary file not shown.
|
@ -477,8 +477,8 @@ float cave_ship(){
|
||||||
|
|
||||||
t500 = i_temp(500, I_PRES);
|
t500 = i_temp(500, I_PRES);
|
||||||
lr75 = lapse_rate(&ix1, 700, 500);
|
lr75 = lapse_rate(&ix1, 700, 500);
|
||||||
fzlh = agl(i_hght(temp_lvl( 0, &ix1 ), I_PRES));
|
// Chin V9 was:: fzlh = agl(i_hght(temp_lvl( 0, &ix1 ), I_PRES));
|
||||||
//fzlh = mtof(agl(i_hght(temp_lvl(0, &ix1), I_PRES)));
|
fzlh = mtof(agl(i_hght(temp_lvl(0, &ix1), I_PRES)));//Chin: according to bignsharpV2013Jun12
|
||||||
ship = sig_hail(mucape, mumixr, lr75, t500, kt_to_mps(shr6), fzlh, mucinh, 0, 0, 25, mlcape);
|
ship = sig_hail(mucape, mumixr, lr75, t500, kt_to_mps(shr6), fzlh, mucinh, 0, 0, 25, mlcape);
|
||||||
/* ----- Set Parcel Back ----- */
|
/* ----- Set Parcel Back ----- */
|
||||||
if (oldlplchoice == 1)
|
if (oldlplchoice == 1)
|
||||||
|
@ -861,122 +861,148 @@ void low_inv ( float *inv_mb, float *inv_dC )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void mix_height ( float *mh_pres, float *mh_drct, float *mh_sped,
|
||||||
void mix_height ( float *mh_mb, float *mh_drct, float *mh_sped,
|
float *mh_dC, float *mh_lr, float *mh_drct_max,
|
||||||
float *mh_dC, float *mh_lr, float *mh_drct_max,
|
float *mh_sped_max, short flag )
|
||||||
float *mh_sped_max, short flag )
|
/****************************************************************************
|
||||||
/************************************************************************
|
* mix_height *
|
||||||
* OPC MODIFICATION - J. Morgan 5/3/05 *
|
* *
|
||||||
* MIX_HEIGHT - New function *
|
* This function modifies original mix_height funtion which *
|
||||||
* *
|
* computes hydro meteorological parameters within empirical mix *
|
||||||
* MIX_HEIGHT *
|
* boundary layer. *
|
||||||
* J. Morgan OPC *
|
* *
|
||||||
* *
|
* Calculates the mixing height. *
|
||||||
* Calculates the mixing height. *
|
* *
|
||||||
* flag = 0 Surface-based lapse rate *
|
* mh_pres - Pressure at mixing height (mb) *
|
||||||
* flag = 1 Layer-based lapse rate *
|
* mh_drct - Wind direction at mixing height (deg) *
|
||||||
* *
|
* mh_sped - Wind speed at mixing height (kts) *
|
||||||
* mh_mb - Pressure at mixing height (mb) *
|
* mh_dC - Layer change in temperature (C) *
|
||||||
* mh_drct - Wind direction at mixing height (deg) *
|
* mh_lr - Layer lapse rate (C/km) *
|
||||||
* mh_sped - Wind speed at mixing height (kt) *
|
* mh_drct_max - Layer maximum wind direction (deg) *
|
||||||
* mh_dC - Layer change in temperature (C) *
|
* mh_sped_max - Layer maximum wind speed (kts) *
|
||||||
* mh_lr - Layer lapse rate (C/km) *
|
* flag - 0: Surface-based lapse rate *
|
||||||
* mh_drct_max - Layer maximum wind direction (deg) *
|
* 1: Layer-based lapse rate *
|
||||||
* mh_sped_max - Layer maximum wind speed (kt) *
|
* *
|
||||||
* *
|
* Chin:: not in BigNsharp, therefore ported to here. 6/8/2011 * *
|
||||||
* Called by xwvid1.c: draw_skewt() *
|
* J. Morgan 5/2005 Created *
|
||||||
* Called by xwvid3.c: show_mixheight() *
|
* T. Lee 2/2014 Cleanup and fixed surface based and layer based *
|
||||||
*
|
* parameters always have same values *
|
||||||
* Chin:: not in BigNsharp, therefore ported to here. 6/8/2011
|
****************************************************************************/
|
||||||
***********************************************************************/
|
|
||||||
{
|
{
|
||||||
short ii, bb, b_1;
|
short ii, bb, b_1;
|
||||||
float thresh, lapser, lapser_1, mdrct, msped, drct, sped;
|
float thresh, lapse_rate, lapser_1, mxdrct, mxsped, drct, sped;
|
||||||
float dt, dz;
|
float dt, dz;
|
||||||
short pIndex, zIndex, tIndex, drIndex, spIndex;
|
short pIndex, zIndex, tIndex, drIndex, spIndex;
|
||||||
pIndex = getParmIndex("PRES");
|
Boolean first_level = True;
|
||||||
zIndex = getParmIndex("HGHT");
|
|
||||||
tIndex = getParmIndex("TEMP");
|
|
||||||
spIndex = getParmIndex("SPED");
|
|
||||||
drIndex = getParmIndex("DRCT");
|
|
||||||
if (!sndg || pIndex == -1 || zIndex == -1 || tIndex == -1 || drIndex == -1 || spIndex == -1) return;
|
|
||||||
|
|
||||||
*mh_mb = -9999;
|
pIndex = getParmIndex("PRES");
|
||||||
*mh_drct = -9999;
|
zIndex = getParmIndex("HGHT");
|
||||||
*mh_sped = -9999;
|
tIndex = getParmIndex("TEMP");
|
||||||
*mh_dC = -9999;
|
spIndex = getParmIndex("SPED");
|
||||||
*mh_lr = -9999;
|
drIndex = getParmIndex("DRCT");
|
||||||
*mh_drct_max = -9999;
|
if (!sndg || pIndex == -1 || zIndex == -1 || tIndex == -1 || drIndex == -1 || spIndex == -1) return;
|
||||||
*mh_sped_max = -9999;
|
|
||||||
|
|
||||||
thresh = 8.3;
|
*mh_pres = -9999;
|
||||||
lapser_1 = 0.0;
|
*mh_drct = -9999;
|
||||||
mdrct = 0.0;
|
*mh_sped = -9999;
|
||||||
msped = 0.0;
|
*mh_dC = -9999;
|
||||||
drct = 0.0;
|
*mh_lr = -9999;
|
||||||
sped = 0.0;
|
*mh_drct_max = -9999;
|
||||||
|
*mh_sped_max = -9999;
|
||||||
|
|
||||||
for ( ii = 0; ii < numlvl-1; ii++ ) {//Chin
|
thresh = 8.3;
|
||||||
|
lapser_1 = 0.0;
|
||||||
|
mxdrct = 0.0;
|
||||||
|
mxsped = 0.0;
|
||||||
|
drct = 0.0;
|
||||||
|
sped = 0.0;
|
||||||
|
|
||||||
if ( qc( sndg[ii+1][tIndex] ) && qc( sndg[ii][tIndex] )) {
|
for ( ii = 0; ii < numlvl-1; ii++ ) {//Chin
|
||||||
/* ----- Set Method Values ----- */
|
|
||||||
if( flag == 0 ) {
|
|
||||||
bb = 0;
|
|
||||||
b_1 = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bb = ii;
|
|
||||||
b_1 = ii-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ----- Calculate Lapse Rate ----- */
|
if ( qc( sndg[ii+1][tIndex] ) ) { //TL
|
||||||
dt = sndg[ii+1][tIndex] - sndg[bb][tIndex] ;
|
/* ----- Set Method Values ----- */
|
||||||
dz = sndg[ii+1][zIndex] - sndg[bb][zIndex];
|
if( flag == 0 ) {
|
||||||
lapser = (dt / dz)*-1000;
|
bb = 0;
|
||||||
|
b_1 = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bb = ii;
|
||||||
|
b_1 = ii-1;
|
||||||
|
}
|
||||||
|
|
||||||
/* ----- Test Lapse Rate ----- */
|
if ( first_level ) {
|
||||||
if ( lapser > thresh ) {
|
mxdrct = sndg[0][drIndex];
|
||||||
|
mxsped = sndg[0][spIndex];
|
||||||
|
*mh_drct = sndg[0][drIndex];
|
||||||
|
*mh_sped = sndg[0][spIndex];
|
||||||
|
}
|
||||||
|
|
||||||
/* ----- Store Maximum Wind Data ----- */
|
/* ----- Calculate Lapse Rate ----- */
|
||||||
drct = sndg[ii][drIndex];
|
if ( qc ( snd[bb][tIndex] ) ) {
|
||||||
sped = sndg[ii][spIndex];
|
dt = sndg[ii+1][tIndex] - sndg[bb][tIndex];
|
||||||
if ( drct > mdrct ) {
|
dz = sndg[ii+1][zIndex] - sndg[bb][zIndex];
|
||||||
mdrct = drct;
|
} else {
|
||||||
msped = sped;
|
dt = sndg[ii+1][tIndex] - sndg[0][tIndex];
|
||||||
}
|
dz = sndg[ii+1][zIndex] - sndg[0][zIndex];
|
||||||
}
|
}
|
||||||
else if( ii == 0 ) { /* ----- Surface Test failed, Mixing Height=Surface ----- */
|
lapse_rate = (dt / dz)*-1000;
|
||||||
*mh_mb = sndg[ii][pIndex];
|
|
||||||
*mh_drct = sndg[ii][drIndex];
|
|
||||||
*mh_sped = sndg[ii][spIndex];
|
|
||||||
*mh_dC = -(sndg[ii+1][tIndex] - sndg[ii][tIndex] );
|
|
||||||
*mh_lr = lapser;
|
|
||||||
*mh_drct_max = sndg[ii][drIndex];
|
|
||||||
*mh_sped_max = sndg[ii][spIndex];
|
|
||||||
|
|
||||||
return;
|
/* ----- Test Lapse Rate ----- */
|
||||||
}
|
if ( lapse_rate > thresh ) {
|
||||||
else if( ii > 0 ) { /* ----- Above Mixing Height ----- */
|
first_level = False;
|
||||||
/* ----- Calculate Previous Rate ----- */
|
|
||||||
dt = sndg[ii][tIndex] - sndg[b_1][tIndex] ;
|
|
||||||
dz = sndg[ii][zIndex] - sndg[b_1][zIndex];
|
|
||||||
lapser_1 = (dt / dz)*-1000;
|
|
||||||
}
|
|
||||||
if(ii!=0){ //Chin
|
|
||||||
*mh_mb = sndg[ii-1][pIndex];
|
|
||||||
*mh_drct = sndg[ii-1][drIndex];
|
|
||||||
*mh_sped = sndg[ii-1][spIndex];
|
|
||||||
*mh_dC = -(sndg[ii][tIndex] - sndg[b_1][tIndex] );
|
|
||||||
*mh_lr = lapser_1;
|
|
||||||
*mh_drct_max = mdrct;
|
|
||||||
*mh_sped_max = msped;
|
|
||||||
|
|
||||||
}
|
/* ----- Store Maximum Wind Data ----- */
|
||||||
|
if ( qc (sndg[ii+1][drIndex] ) ) {
|
||||||
|
drct = sndg[ii+1][drIndex];
|
||||||
|
sped = sndg[ii+1][spIndex];
|
||||||
|
|
||||||
return;
|
if ( sped >= mxsped ) { // TL
|
||||||
}
|
mxdrct = drct;
|
||||||
}
|
mxsped = sped;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if( first_level ) { /* ----- Surface Test failed, Mixing Height=Surface ----- */
|
||||||
|
*mh_pres = sndg[0][pIndex];
|
||||||
|
*mh_drct = sndg[0][drIndex];
|
||||||
|
*mh_sped = sndg[0][spIndex];
|
||||||
|
*mh_dC = -(sndg[ii+1][tIndex] - sndg[0][tIndex]);
|
||||||
|
*mh_lr = lapse_rate;
|
||||||
|
*mh_drct_max = sndg[0][drIndex];
|
||||||
|
*mh_sped_max = sndg[0][spIndex];
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( ii > 0 ) { /* ----- Above Mixing Height ----- */
|
||||||
|
/* ----- Calculate lapse rate within mixing layer ----- */
|
||||||
|
if ( qc ( sndg[b_1][tIndex]) ) {
|
||||||
|
dt = sndg[ii][tIndex] - sndg[b_1][tIndex];
|
||||||
|
dz = sndg[ii][zIndex] - sndg[b_1][zIndex];
|
||||||
|
} else {
|
||||||
|
dt = sndg[ii][tIndex] - sndg[0][tIndex];
|
||||||
|
dz = sndg[ii][zIndex] - sndg[0][zIndex];
|
||||||
|
}
|
||||||
|
*mh_dC = -dt;
|
||||||
|
if ( dz != 0. ) lapser_1 = (dt / dz)*-1000;
|
||||||
|
*mh_pres = sndg[ii][pIndex];
|
||||||
|
if ( qc (sndg[ii][drIndex] ) ) {
|
||||||
|
*mh_drct = sndg[ii][drIndex];
|
||||||
|
*mh_sped = sndg[ii][spIndex];
|
||||||
|
} else {
|
||||||
|
*mh_drct = drct;
|
||||||
|
*mh_sped = sped;
|
||||||
|
}
|
||||||
|
*mh_lr = lapser_1;
|
||||||
|
*mh_drct_max = mxdrct;
|
||||||
|
*mh_sped_max = mxsped;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cave_ww_type()
|
int cave_ww_type()
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
/* Watch type guidance */
|
/* Watch type guidance */
|
||||||
|
@ -993,6 +1019,9 @@ int cave_ww_type()
|
||||||
* 3: MRGL TOR, color 2 red
|
* 3: MRGL TOR, color 2 red
|
||||||
* 4: TOR, color 2 red
|
* 4: TOR, color 2 red
|
||||||
* 5: PDS TOR, color 7 Magenta
|
* 5: PDS TOR, color 7 Magenta
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Chin: 10/2/2013 : modified according to BigNsharpV2013-06-12
|
||||||
*/
|
*/
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
{
|
{
|
||||||
|
@ -1077,15 +1106,16 @@ int cave_ww_type()
|
||||||
/*printf("sig_tor=%f sig_tor_winter=%f srh1=%f esrh=%f sr46_spd=%f shr8=%f sblcl=%f\n mllcl=%f lr1=%f bot=%f low_mid_rh=%f rm_scp=%f\n mucn=%f dncp=%f sighail=%f cbsig=%f wind_dmg=%f",
|
/*printf("sig_tor=%f sig_tor_winter=%f srh1=%f esrh=%f sr46_spd=%f shr8=%f sblcl=%f\n mllcl=%f lr1=%f bot=%f low_mid_rh=%f rm_scp=%f\n mucn=%f dncp=%f sighail=%f cbsig=%f wind_dmg=%f",
|
||||||
sig_tor,sig_tor_winter,srh1,esrh,sr46_spd,shr8, sblcl, mllcl, lr1, bot, low_mid_rh, rm_scp,mucn, dncp, sighail, cbsig, wind_dmg);
|
sig_tor,sig_tor_winter,srh1,esrh,sr46_spd,shr8, sblcl, mllcl, lr1, bot, low_mid_rh, rm_scp,mucn, dncp, sighail, cbsig, wind_dmg);
|
||||||
Decision tree below is identical to the operational "ww_type" flow chart documentation 9/23/09 RLT */
|
Decision tree below is identical to the operational "ww_type" flow chart documentation 9/23/09 RLT */
|
||||||
if ((sig_tor >= 3.0) && (sig_tor_winter >= 3.0) && (srh1 >= 150) && (esrh >= 150) && (sr46_spd >= 15.0) && (shr8 >= 40.0) && (sblcl < 1000) && (mllcl < 1100) && (lr1 >= 5.0) && (bot == 0.0)) {
|
if ((sig_tor >= 3.0) && (sig_tor_winter >= 4.0) && (srh1 >=200) && (esrh >= 200) && (sr46_spd >= 15.0) && (shr8 >= 45.0) && (sblcl < 1000) && (mllcl < 1200) && (lr1 >= 5.0) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||||
|
// Chin V9 was::if ((sig_tor >= 3.0) && (sig_tor_winter >= 3.0) && (srh1 >= 150) && (esrh >= 150) && (sr46_spd >= 15.0) && (shr8 >= 40.0) && (sblcl < 1000) && (mllcl < 1100) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||||
//*dcp = 1;
|
//*dcp = 1;
|
||||||
//*wwtype = 5;
|
//*wwtype = 5;
|
||||||
ww_choice = 5;
|
ww_choice = 5;
|
||||||
|
|
||||||
/*outgtext( "PDS TOR", tlx + 45, tly + 60 );*/
|
/*outgtext( "PDS TOR", tlx + 45, tly + 60 );*/
|
||||||
}
|
}
|
||||||
|
else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (mlcn > -125.0) && (bot == 0.0)) {
|
||||||
else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (bot == 0.0)) {
|
// Chin V9 was::else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (bot == 0.0)) {
|
||||||
//*dcp = 3;
|
//*dcp = 3;
|
||||||
//*wwtype = 4;
|
//*wwtype = 4;
|
||||||
ww_choice = 4;
|
ww_choice = 4;
|
||||||
|
@ -1093,7 +1123,8 @@ int cave_ww_type()
|
||||||
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (bot == 0.0)) {
|
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (mlcn > -75.0) && (bot == 0.0)) {
|
||||||
|
// Chin V9 was::if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (bot == 0.0)) {
|
||||||
//*dcp = 4;
|
//*dcp = 4;
|
||||||
//*wwtype = 4;
|
//*wwtype = 4;
|
||||||
ww_choice = 4;
|
ww_choice = 4;
|
||||||
|
@ -1101,7 +1132,8 @@ int cave_ww_type()
|
||||||
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (bot == 0.0)) {
|
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||||
|
// Chin V9 was::if if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||||
//*dcp = 5;
|
//*dcp = 5;
|
||||||
//*wwtype = 4;
|
//*wwtype = 4;
|
||||||
ww_choice = 4;
|
ww_choice = 4;
|
||||||
|
@ -1110,7 +1142,8 @@ int cave_ww_type()
|
||||||
outgtext( "TOR", tlx + 45, tly + 60 );*/
|
outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (bot == 0.0)) {
|
else if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (mlcn > -150.0) && (bot == 0.0)) {
|
||||||
|
// Chin V9 was:: if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (bot == 0.0)) {
|
||||||
//*dcp = 6;
|
//*dcp = 6;
|
||||||
//*wwtype = 3;
|
//*wwtype = 3;
|
||||||
ww_choice = 3;
|
ww_choice = 3;
|
||||||
|
@ -1119,7 +1152,8 @@ int cave_ww_type()
|
||||||
outgtext( "mrgl TOR", tlx + 40, tly + 60 );*/
|
outgtext( "mrgl TOR", tlx + 40, tly + 60 );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (bot == 0.0)) {
|
else if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||||
|
// Chin V9 was:: if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (bot == 0.0)) {
|
||||||
//*dcp = 7;
|
//*dcp = 7;
|
||||||
//*wwtype = 3;
|
//*wwtype = 3;
|
||||||
ww_choice = 3;
|
ww_choice = 3;
|
||||||
|
@ -1939,12 +1973,17 @@ void getSarsInfo(SarsInfoStr * sarsInfo)
|
||||||
wind_shear(sndg[sfc()][pIndex], i_pres(msl(3000)), &ix1, &ix2, &ix3, &ix4); shr3k = ix4;
|
wind_shear(sndg[sfc()][pIndex], i_pres(msl(3000)), &ix1, &ix2, &ix3, &ix4); shr3k = ix4;
|
||||||
|
|
||||||
cavespnsharp(&mlcp, &mllcl, &t500, &lr75, &shr6k, &srh1, &nsndgs, &matches, &p1, sndglist, &suplist, &sup_filename, &shr3k, &shr9k, &srh3, &totalsndgs);
|
cavespnsharp(&mlcp, &mllcl, &t500, &lr75, &shr6k, &srh1, &nsndgs, &matches, &p1, sndglist, &suplist, &sup_filename, &shr3k, &shr9k, &srh3, &totalsndgs);
|
||||||
/*
|
|
||||||
for (i=0; i < 15; i++) sndglist[i][14] = '\0';
|
/* Chin TBD::: bignsharpV2013Jun12
|
||||||
printf( "%d High Quality SUPERCELL Matches were found.\n", nsndgs);
|
* for (i=0; i < 15; i++) sndglist[i][14] = '\0';
|
||||||
for (i=0;i<nsndgs;i++) { printf( "SUPERCELL match = %s %.0f\n", sndglist[i]), suplist[i]; }
|
printf( "%d High Quality SUPERCELL Matches were found.\n", nsndgs);
|
||||||
printf( "%.0f Total matches were found.\n", matches);
|
// modified loop and printf statement to properly display supercell match type - RLT 4/24/12
|
||||||
printf( "%.0f Percent were TOR.\n", p1);
|
for (i=0;i<nsndgs;i++) {
|
||||||
|
j = suplist[i];
|
||||||
|
printf( "SUPERCELL match = %s %s\n", sndglist[i], tortags[j]);
|
||||||
|
}
|
||||||
|
printf( "%.0f Total matches were found.\n", matches);
|
||||||
|
printf( "%.0f Percent were TOR.\n", p1);
|
||||||
*/
|
*/
|
||||||
// ----- Supercell SARS matches -----
|
// ----- Supercell SARS matches -----
|
||||||
if (nsndgs>0)
|
if (nsndgs>0)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
subroutine cavesars(mumr, mucape, temp, lr, shr,
|
subroutine cavesars(mumr, mucape, temp, lr, shr,
|
||||||
+ km9, shr3, ship, srh, tier1,
|
+ km9, shr3, ship, srh, tier1,
|
||||||
+ matches, p1, avsize, matches2,
|
+ matches, p1, avsize, matches2,
|
||||||
+ sndglist, haillist, fname, cnt)
|
+ sndglist, haillist, fname, totalSnd)
|
||||||
|
|
||||||
c Jan 27, 2010, REJ.
|
c Jan 27, 2010, REJ.
|
||||||
integer maob,saob
|
|
||||||
parameter (maob=15000) ! Max number of raobs allowed.
|
parameter (maob=15000) ! Max number of raobs allowed.
|
||||||
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
||||||
|
|
||||||
|
@ -21,9 +21,9 @@ c Jan 27, 2010, REJ.
|
||||||
character datestn*15,dummy*25,matdatestn(maob)*15
|
character datestn*15,dummy*25,matdatestn(maob)*15
|
||||||
character sndglist(saob)*15, fname*(256), fname1*(256)
|
character sndglist(saob)*15, fname*(256), fname1*(256)
|
||||||
|
|
||||||
integer j,cnt,mrmat(maob),capemat(maob),tempmat(maob),
|
integer cnt, maob,j,mrmat(maob),capemat(maob),tempmat(maob),
|
||||||
& lrmat(maob),shrmat(maob),km9mat(maob),shr3mat(maob),golf,
|
&lrmat(maob),shrmat(maob),km9mat(maob),shr3mat(maob),golf,
|
||||||
& sigm(maob),tier1,tier1cnt,srhmat(maob)
|
& sigm(maob),tier1,tier1cnt,srhmat(maob),totalSnd
|
||||||
|
|
||||||
c print *, "****************************************************"
|
c print *, "****************************************************"
|
||||||
c print *, " Entering SARS fortran subroutine"
|
c print *, " Entering SARS fortran subroutine"
|
||||||
|
@ -32,7 +32,7 @@ c print *, "****************************************************"
|
||||||
1 format(a)
|
1 format(a)
|
||||||
|
|
||||||
fname1 = fname(1:len_trim(fname))
|
fname1 = fname(1:len_trim(fname))
|
||||||
c print *, "Sars Opening input file: ", fname1(1:len_trim(fname1))
|
c print *, "Opening input file: ", fname1(1:len_trim(fname1))
|
||||||
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
||||||
|
|
||||||
************* Read file list.txt into array ********************
|
************* Read file list.txt into array ********************
|
||||||
|
@ -70,48 +70,48 @@ c Calculate difference in shear magnitude between sounding and match
|
||||||
c count number of soundings
|
c count number of soundings
|
||||||
cnt = j - 1
|
cnt = j - 1
|
||||||
c mixing ratio ranges (g/kg) - k1
|
c mixing ratio ranges (g/kg) - k1
|
||||||
ranmr= 2.0
|
c ranmr= 2.0
|
||||||
ranmrt1= 2.0
|
c ranmrt1= 2.0
|
||||||
|
c
|
||||||
c determine cape ranges based on cape magnitude (j/kg) - k2
|
c determine cape ranges based on cape magnitude (j/kg) - k2
|
||||||
|
c
|
||||||
rancape = mucape*.30
|
c rancape = mucape*.30
|
||||||
|
c
|
||||||
if(mucape.lt.500.) then
|
c if(mucape.lt.500.) then
|
||||||
rancapet1= mucape*.50
|
c rancapet1= mucape*.50
|
||||||
elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
c elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
||||||
rancapet1= mucape*.25
|
c rancapet1= mucape*.25
|
||||||
else
|
c else
|
||||||
rancapet1= mucape*.20
|
c rancapet1= mucape*.20
|
||||||
endif
|
c endif
|
||||||
|
c
|
||||||
c 700-500 mb lapse rate ranges (c/km)- k3
|
c 700-500 mb lapse rate ranges (c/km)- k3
|
||||||
ranlr= 2.0
|
c ranlr= 2.0
|
||||||
ranlrt1= 0.4
|
c ranlrt1= 0.4
|
||||||
|
c
|
||||||
c 500 mb temperature ranges (c) - k4
|
c 500 mb temperature ranges (c) - k4
|
||||||
rantemp= 9
|
c rantemp= 9
|
||||||
rantempt1= 1.5
|
c rantempt1= 1.5
|
||||||
|
c
|
||||||
c 0-6 km shear ranges (m/s) - k6
|
c 0-6 km shear ranges (m/s) - k6
|
||||||
ranshr= 12
|
c ranshr= 12
|
||||||
ranshrt1= 6
|
c ranshrt1= 6
|
||||||
|
c
|
||||||
c 0-9 shear ranges - k7
|
c 0-9 shear ranges - k7
|
||||||
rankm9= 22
|
c rankm9= 22
|
||||||
rankm9t1= 15
|
c rankm9t1= 15
|
||||||
|
c
|
||||||
c 0-3 km shear ranges (m/s) - k8
|
c 0-3 km shear ranges (m/s) - k8
|
||||||
ranshr3= 10
|
c ranshr3= 10
|
||||||
ranshr3t1= 8
|
c ranshr3t1= 8
|
||||||
|
c
|
||||||
c SRH shear ranges (m/s) - k9
|
c SRH shear ranges (m/s) - k9
|
||||||
c ransrh = 100
|
c ransrh = 100
|
||||||
if(srh.lt.50) then
|
c if(srh.lt.50) then
|
||||||
ransrht1 = 25
|
c ransrht1 = 25
|
||||||
else
|
c else
|
||||||
ransrht1= srh*0.5
|
c ransrht1= srh*0.5
|
||||||
endif
|
c endif
|
||||||
*************************************************************
|
*************************************************************
|
||||||
c using passed sounding, check against all soundings j .
|
c using passed sounding, check against all soundings j .
|
||||||
|
|
||||||
|
@ -124,9 +124,53 @@ c using passed sounding, check against all soundings j .
|
||||||
golf = 0
|
golf = 0
|
||||||
tier1 = 0
|
tier1 = 0
|
||||||
jh = 0
|
jh = 0
|
||||||
|
totalSnd = cnt
|
||||||
DO 99 j=1,cnt
|
DO 99 j=1,cnt
|
||||||
|
|
||||||
|
c mixing ratio ranges (g/kg) - k1
|
||||||
|
ranmr= 2.0
|
||||||
|
ranmrt1= 2.0
|
||||||
|
|
||||||
|
c determine cape ranges based on cape magnitude (j/kg) - k2
|
||||||
|
|
||||||
|
rancape = mucape*.30
|
||||||
|
|
||||||
|
if(mucape.lt.500.) then
|
||||||
|
rancapet1= mucape*.50
|
||||||
|
elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
||||||
|
rancapet1= mucape*.25
|
||||||
|
else
|
||||||
|
rancapet1= mucape*.20
|
||||||
|
endif
|
||||||
|
|
||||||
|
c 700-500 mb lapse rate ranges (c/km)- k3
|
||||||
|
ranlr= 2.0
|
||||||
|
ranlrt1= 0.4
|
||||||
|
|
||||||
|
c 500 mb temperature ranges (c) - k4
|
||||||
|
rantemp= 9
|
||||||
|
rantempt1= 1.5
|
||||||
|
|
||||||
|
c 0-6 km shear ranges (m/s) - k6
|
||||||
|
ranshr= 12
|
||||||
|
ranshrt1= 6
|
||||||
|
|
||||||
|
c 0-9 shear ranges - k7
|
||||||
|
rankm9= 22
|
||||||
|
rankm9t1= 15
|
||||||
|
|
||||||
|
c 0-3 km shear ranges (m/s) - k8
|
||||||
|
ranshr3= 10
|
||||||
|
ranshr3t1= 8
|
||||||
|
|
||||||
|
c SRH shear ranges (m/s) - k9
|
||||||
|
c ransrh = 100
|
||||||
|
if(srh.lt.50) then
|
||||||
|
ransrht1 = 25
|
||||||
|
else
|
||||||
|
ransrht1= srh*0.5
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
mrmat(j) = 0
|
mrmat(j) = 0
|
||||||
capemat(j) = 0
|
capemat(j) = 0
|
||||||
|
@ -293,8 +337,8 @@ c endif
|
||||||
|
|
||||||
c matches = sigcnt + nulcnt
|
c matches = sigcnt + nulcnt
|
||||||
|
|
||||||
c print *, 'SARS Searching',cnt,' soundings, found',matches
|
C print *, 'SARS Searching',cnt,' soundings, found',matches
|
||||||
|
|
||||||
if(matches2.gt.0) then
|
if(matches2.gt.0) then
|
||||||
c Calculate average hail size from matches...
|
c Calculate average hail size from matches...
|
||||||
avsize = avsize/matches2
|
avsize = avsize/matches2
|
||||||
|
|
|
@ -2,11 +2,11 @@ c program sup_nsharp
|
||||||
|
|
||||||
subroutine cavespnsharp(mlcape, mllcl, temp, lr, shr,
|
subroutine cavespnsharp(mlcape, mllcl, temp, lr, shr,
|
||||||
+ srh, tier1, matches, p1, sndglist, supl2,
|
+ srh, tier1, matches, p1, sndglist, supl2,
|
||||||
+ fname,shr3k,shr9k,srh3, cnt)
|
+ fname,shr3k,shr9k,srh3, totalSnd)
|
||||||
|
|
||||||
|
|
||||||
c SARS For Supercells
|
c SARS For Supercells
|
||||||
integer saob,maob
|
|
||||||
parameter (maob=15000) ! Max number of raobs allowed.
|
parameter (maob=15000) ! Max number of raobs allowed.
|
||||||
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
||||||
|
|
||||||
|
@ -26,10 +26,10 @@ c SARS For Supercells
|
||||||
character sndglist(saob)*15, fname*(256), fname1*(256)
|
character sndglist(saob)*15, fname*(256), fname1*(256)
|
||||||
character tortype(maob)*8,suplist(saob)*8
|
character tortype(maob)*8,suplist(saob)*8
|
||||||
|
|
||||||
integer i,j,cnt,mlmrmat(maob),mlcapemat(maob),
|
integer totalSnd, cnt, maob,i,j,mlmrmat(maob),mlcapemat(maob),
|
||||||
& mlcinmat(maob),mllclmat(maob),mucapemat(maob),sblclmat(maob),
|
& mlcinmat(maob),mllclmat(maob),mucapemat(maob),sblclmat(maob),
|
||||||
& shrmat(maob),srhmat(maob),tempmat(maob),lrmat(maob),stpmat(maob),
|
&shrmat(maob),srhmat(maob),tempmat(maob),lrmat(maob),stpmat(maob),
|
||||||
& h500umat(maob),h500vmat(maob),shrcat(maob),matshrcat(maob),tier1,
|
&h500umat(maob),h500vmat(maob),shrcat(maob),matshrcat(maob),tier1,
|
||||||
& tier1cnt,matcat(maob),srh3mat(maob)
|
& tier1cnt,matcat(maob),srh3mat(maob)
|
||||||
|
|
||||||
c print *, "****************************************************"
|
c print *, "****************************************************"
|
||||||
|
@ -39,7 +39,7 @@ c print *, "****************************************************"
|
||||||
|
|
||||||
1 format(a)
|
1 format(a)
|
||||||
fname1 = fname(1:len_trim(fname))
|
fname1 = fname(1:len_trim(fname))
|
||||||
c print *, "SUP Opening input file: ", fname1(1:len_trim(fname1))
|
c print *, "Opening input file: ", fname1(1:len_trim(fname1))
|
||||||
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,7 +73,6 @@ c matsrh(j) = abs(matsrh(j))
|
||||||
c count number of soundings
|
c count number of soundings
|
||||||
cnt = j - 1
|
cnt = j - 1
|
||||||
|
|
||||||
|
|
||||||
c mlcape ranges - k2
|
c mlcape ranges - k2
|
||||||
ranmlcape= 1300
|
ranmlcape= 1300
|
||||||
ranmlcapet1 = mlcape*0.25
|
ranmlcapet1 = mlcape*0.25
|
||||||
|
@ -139,7 +138,7 @@ c using sounding i , check against all soundings j .
|
||||||
noncnt = 0
|
noncnt = 0
|
||||||
p1=0
|
p1=0
|
||||||
p2=0
|
p2=0
|
||||||
|
totalSnd = cnt
|
||||||
DO 99 j=1,cnt
|
DO 99 j=1,cnt
|
||||||
|
|
||||||
mlcapemat(j) = 0
|
mlcapemat(j) = 0
|
||||||
|
@ -248,8 +247,8 @@ c endif
|
||||||
|
|
||||||
matches = torcnt + noncnt
|
matches = torcnt + noncnt
|
||||||
|
|
||||||
c print *, 'SARS Supercell Searching',cnt,' soundings, found',matches
|
c print *, 'SARS Searching',cnt,' soundings, found',matches
|
||||||
|
|
||||||
if(matches.ne.0) then
|
if(matches.ne.0) then
|
||||||
p1 = torcnt/matches*100
|
p1 = torcnt/matches*100
|
||||||
p2 = noncnt/matches*100
|
p2 = noncnt/matches*100
|
||||||
|
@ -280,6 +279,6 @@ c write(*,*) ''
|
||||||
999 matches = 0
|
999 matches = 0
|
||||||
p1 = 0
|
p1 = 0
|
||||||
tier1 = 0
|
tier1 = 0
|
||||||
print *, "ERROR - SUPERCELL input file not found. Aborting..."
|
print *, "ERROR - SARS input file not found. Aborting..."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,10 @@
|
||||||
package gov.noaa.nws.ncep.ui.nsharp.display;
|
package gov.noaa.nws.ncep.ui.nsharp.display;
|
||||||
|
|
||||||
|
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.display.map.NsharpMapResource;
|
import gov.noaa.nws.ncep.ui.nsharp.display.map.NsharpMapResource;
|
||||||
|
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpSkewTPaneResource;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpTimeStnPaneResource;
|
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpTimeStnPaneResource;
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.view.NsharpShowTextDialog;
|
import gov.noaa.nws.ncep.ui.nsharp.view.NsharpShowTextDialog;
|
||||||
|
|
||||||
|
@ -76,7 +79,7 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
||||||
Coordinate c = editor.translateClick(x, y);
|
Coordinate c = editor.translateClick(x, y);
|
||||||
if(timeStnRsc.getTimeLineRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.TIMELINE_DOWN) {
|
if(timeStnRsc.getTimeLineRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.TIMELINE_DOWN) {
|
||||||
//data time line has been touched, and may be changed
|
//data time line has been touched, and may be changed
|
||||||
timeStnRsc.getRscHandler().handleUserClickOnTimeLine(c);
|
timeStnRsc.getRscHandler().handleUserClickOnTimeLine(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||||
handleMouseMove(x,y);
|
handleMouseMove(x,y);
|
||||||
|
|
||||||
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
|
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
|
||||||
|
@ -87,12 +90,12 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
||||||
}
|
}
|
||||||
else if(timeStnRsc.getStnIdRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.STATIONID_DOWN) {
|
else if(timeStnRsc.getStnIdRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.STATIONID_DOWN) {
|
||||||
//stn id line has been touched, and may be changed
|
//stn id line has been touched, and may be changed
|
||||||
timeStnRsc.getRscHandler().handleUserClickOnStationId(c);
|
timeStnRsc.getRscHandler().handleUserClickOnStationId(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||||
handleMouseMove(x,y);
|
handleMouseMove(x,y);
|
||||||
}
|
}
|
||||||
else if(timeStnRsc.getSndRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.SNDTYPE_DOWN) {
|
else if(timeStnRsc.getSndRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.SNDTYPE_DOWN) {
|
||||||
//stn id line has been touched, and may be changed
|
//stn id line has been touched, and may be changed
|
||||||
timeStnRsc.getRscHandler().handleUserClickOnSndLine(c);
|
timeStnRsc.getRscHandler().handleUserClickOnSndLine(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||||
handleMouseMove(x,y);
|
handleMouseMove(x,y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,6 +109,31 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// FixMark:clickOnTimeStnPane
|
||||||
|
@Override
|
||||||
|
public boolean handleKeyDown(int keyCode) {
|
||||||
|
//System.out.println("key down="+(char)keyCode+ " code ="+keyCode);
|
||||||
|
|
||||||
|
if ((keyCode & SWT.SHIFT) != 0) {
|
||||||
|
shiftDown = true;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleKeyUp(int keyCode) {
|
||||||
|
//String s = "key up="+(char)keyCode;
|
||||||
|
//System.out.println(s+ " code ="+keyCode);
|
||||||
|
if (getPaneDisplay() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (keyCode == SWT.SHIFT) {
|
||||||
|
shiftDown = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//End FixMark:clickOnTimeStnPane
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
||||||
* ------- ------- -------- -----------
|
* ------- ------- -------- -----------
|
||||||
* 04/23/2012 229 Chin Chen Initial coding
|
* 04/23/2012 229 Chin Chen Initial coding
|
||||||
* May 08, 2013 1847 bsteffen Allow painting with no Wind Data.
|
* 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
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -175,7 +176,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
||||||
this.cursorTopWindBarb = cursorTopWindBarb;
|
this.cursorTopWindBarb = cursorTopWindBarb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isJustMoveToSidePane() {
|
public boolean isJustMoveToSidePane() {
|
||||||
return justMoveToSidePane;
|
return justMoveToSidePane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,7 +798,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
||||||
WGraphics world, RGB iicolor, List<NcSoundingLayer> sndLys, double xPosition, double botPress)throws VizException {
|
WGraphics world, RGB iicolor, List<NcSoundingLayer> sndLys, double xPosition, double botPress)throws VizException {
|
||||||
if(sndLys.size()< 4)
|
if(sndLys.size()< 4)
|
||||||
return;
|
return;
|
||||||
//ArrayList<List<LineStroke>> windList = new ArrayList<List<LineStroke>>();
|
//ArrayList<List<LineStroke>> windList = new ArrayList<List<LineStroke>>();
|
||||||
List<windPickedElement> layerStateList = new ArrayList<windPickedElement>();
|
List<windPickedElement> layerStateList = new ArrayList<windPickedElement>();
|
||||||
float lastHeight = -9999;
|
float lastHeight = -9999;
|
||||||
RGB icolor = iicolor;//graphConfigProperty.getWindBarbColor();
|
RGB icolor = iicolor;//graphConfigProperty.getWindBarbColor();
|
||||||
|
@ -897,10 +898,10 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
||||||
//Chin::if we want pgen to draw un-picked wind as a circle, then set this.
|
//Chin::if we want pgen to draw un-picked wind as a circle, then set this.
|
||||||
spd=0.1f;
|
spd=0.1f;
|
||||||
curWbSize = 1;
|
curWbSize = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* TBDWB
|
/* TBDWB
|
||||||
else if(windBarbMagnify==true && cursorTopWindBarb == true && currentWindBarbSoundingLayerIndex == this.soundingLys.indexOf(layer)){
|
else if(windBarbMagnify==true && cursorTopWindBarb == true && currentWindBarbSoundingLayerIndex == this.soundingLys.indexOf(layer)){
|
||||||
curWbSize = wbSize*2;
|
curWbSize = wbSize*2;
|
||||||
|
@ -1417,9 +1418,12 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
||||||
protected void paintInternal(IGraphicsTarget target,
|
protected void paintInternal(IGraphicsTarget target,
|
||||||
PaintProperties paintProps) throws VizException {
|
PaintProperties paintProps) throws VizException {
|
||||||
this.paintProps = paintProps;
|
this.paintProps = paintProps;
|
||||||
if(soundingLys==null)
|
|
||||||
return;
|
|
||||||
super.paintInternal(target, paintProps);
|
super.paintInternal(target, paintProps);
|
||||||
|
if(soundingLys==null){
|
||||||
|
drawNoDataMessage(target);// FixMark:clickOnTimeStnPane
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//System.out.println("skew paintInternal zoomL="+currentZoomLevel);
|
//System.out.println("skew paintInternal zoomL="+currentZoomLevel);
|
||||||
if(rscHandler== null)
|
if(rscHandler== null)
|
||||||
return;
|
return;
|
||||||
|
@ -2071,6 +2075,27 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
||||||
|
|
||||||
dacpeTraceRscShape.compile();
|
dacpeTraceRscShape.compile();
|
||||||
}
|
}
|
||||||
|
//start FixMark:clickOnTimeStnPane
|
||||||
|
private void drawNoDataMessage(IGraphicsTarget target){
|
||||||
|
IExtent ext = descriptor.getRenderableDisplay().getExtent();
|
||||||
|
double xmin = ext.getMinX(); //Extent's viewable envelope min x and y
|
||||||
|
double xmax = ext.getMaxX();
|
||||||
|
double xDefault = world.mapX(NsharpConstants.left);
|
||||||
|
if(xmin <xDefault)
|
||||||
|
xmin = xDefault;
|
||||||
|
double x = xmin + 15 * currentZoomLevel * xRatio;
|
||||||
|
x= (xmax-xmin)/4;
|
||||||
|
double y = world.mapY(NsharpWxMath.getSkewTXY(300, 0).y);
|
||||||
|
try {
|
||||||
|
target.drawString(font12,"Data is not loaded at selected current time line/station/source", x,y, 0.0, TextStyle.BOXED,
|
||||||
|
NsharpConstants.color_red, HorizontalAlignment.LEFT,
|
||||||
|
VerticalAlignment.MIDDLE, null);
|
||||||
|
} catch (VizException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end FixMark:clickOnTimeStnPane
|
||||||
// Chin: to handle dynamically moving height mark within viewable zone when zooming, I could not use wireframeShape successfully
|
// Chin: to handle dynamically moving height mark within viewable zone when zooming, I could not use wireframeShape successfully
|
||||||
// It will chop off lower part of marks. Therefore use this draw function.
|
// It will chop off lower part of marks. Therefore use this draw function.
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
|
|
@ -236,7 +236,7 @@ public class ColorMapUtil {
|
||||||
|
|
||||||
Map<LocalizationLevel, LocalizationFile> files = PathManagerFactory
|
Map<LocalizationLevel, LocalizationFile> files = PathManagerFactory
|
||||||
.getPathManager().getTieredLocalizationFile(
|
.getPathManager().getTieredLocalizationFile(
|
||||||
LocalizationType.COMMON_STATIC,
|
LocalizationType.CAVE_STATIC,
|
||||||
NcPathConstants.LOCKED_CMAP_TBL);
|
NcPathConstants.LOCKED_CMAP_TBL);
|
||||||
|
|
||||||
File locCmapFile = null;
|
File locCmapFile = null;
|
||||||
|
|
|
@ -7,6 +7,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
|
||||||
import com.raytheon.uf.common.localization.FileUpdatedMessage;
|
import com.raytheon.uf.common.localization.FileUpdatedMessage;
|
||||||
import com.raytheon.uf.common.localization.ILocalizationAdapter;
|
import com.raytheon.uf.common.localization.ILocalizationAdapter;
|
||||||
|
@ -56,6 +57,7 @@ import gov.noaa.nws.ncep.viz.resources.AbstractNatlCntrsRequestableResourceData;
|
||||||
* 07/22/12 #568 Greg Hull return Rbds and rbdNames sorted by seq num.
|
* 07/22/12 #568 Greg Hull return Rbds and rbdNames sorted by seq num.
|
||||||
* 02/10/13 #972 Greg Hull changed to work with AbstractRbds
|
* 02/10/13 #972 Greg Hull changed to work with AbstractRbds
|
||||||
* 05/19/13 #1001 Greg Hull getRbdsFromSpf(), trap RBD errors
|
* 05/19/13 #1001 Greg Hull getRbdsFromSpf(), trap RBD errors
|
||||||
|
* 03/06/14 ? B. Yin Replaced SerializationUtil with JAXBManager.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -451,7 +453,7 @@ public class SpfsManager implements ILocalizationFileObserver {
|
||||||
// group and spf
|
// group and spf
|
||||||
//
|
//
|
||||||
try {
|
try {
|
||||||
SerializationUtil.jaxbMarshalToXmlFile( rbd, rbdFile.getAbsolutePath() );
|
AbstractRBD.getJaxbManager().marshalToXmlFile( rbd, rbdFile.getAbsolutePath() );
|
||||||
|
|
||||||
rbd.setLocalizationFile( lFile );
|
rbd.setLocalizationFile( lFile );
|
||||||
|
|
||||||
|
@ -463,6 +465,8 @@ public class SpfsManager implements ILocalizationFileObserver {
|
||||||
|
|
||||||
} catch (LocalizationOpFailedException e) {
|
} catch (LocalizationOpFailedException e) {
|
||||||
throw new VizException(e);
|
throw new VizException(e);
|
||||||
|
} catch (JAXBException e) {
|
||||||
|
throw new VizException(e);
|
||||||
} catch (SerializationException e) {
|
} catch (SerializationException e) {
|
||||||
throw new VizException(e);
|
throw new VizException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -71,6 +71,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* 05/20/2013 988 Archana.S Initial creation.
|
* 05/20/2013 988 Archana.S Initial creation.
|
||||||
|
* 02/26/2014 1061 B. Hebbard Relax tolerance for extent/zoom compare to avoid infinite loop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class NcPlotImageCreator {
|
public class NcPlotImageCreator {
|
||||||
|
@ -219,9 +220,11 @@ public class NcPlotImageCreator {
|
||||||
|
|
||||||
private RGB defaultColor;
|
private RGB defaultColor;
|
||||||
|
|
||||||
private static double TOLERANCE = 0.000000000000000000000001;
|
private static double TOLERANCE = 1E-04; // 1E-24; //
|
||||||
|
// 0.000000000000000000000001;
|
||||||
|
|
||||||
private static double ZOOM_TOLERANCE = 0.0000000000000000000001;
|
private static double ZOOM_TOLERANCE = 1E-04; // 1E-22; //
|
||||||
|
// 0.0000000000000000000001;
|
||||||
|
|
||||||
private static Amount WIND_SPD_3KNOTS = new Amount(3, NonSI.KNOT);
|
private static Amount WIND_SPD_3KNOTS = new Amount(3, NonSI.KNOT);
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,19 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
import com.raytheon.uf.viz.core.jobs.JobPool;
|
import com.raytheon.uf.viz.core.jobs.JobPool;
|
||||||
import com.raytheon.viz.pointdata.PointDataRequest;
|
import com.raytheon.viz.pointdata.PointDataRequest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* 05/20/2013?? 988 Archana.S Initial creation.
|
||||||
|
* 02/26/2014 1061 B. Hebbard Don't block on JobPool cancel, so CAVE doesn't freeze if resource unloaded during long retrieval
|
||||||
|
*/
|
||||||
|
|
||||||
public class NcPlotModelHdf5DataRequestor {
|
public class NcPlotModelHdf5DataRequestor {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
|
|
||||||
|
@ -136,6 +149,10 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
|
|
||||||
Map<String, RequestConstraint> condFilterMap = null;
|
Map<String, RequestConstraint> condFilterMap = null;
|
||||||
|
|
||||||
|
// Indicates the dataRequestJobPool is being cancelled, so jobs
|
||||||
|
// should just exit gracefully on return from a long HDF5 request.
|
||||||
|
private boolean canceling = false;
|
||||||
|
|
||||||
// Map< AbstractMetParameter, RequestConstraint >
|
// Map< AbstractMetParameter, RequestConstraint >
|
||||||
// condMetParamReqConstraintMap = null;
|
// condMetParamReqConstraintMap = null;
|
||||||
public void queueStationsForHdf5Query(DataTime dt,
|
public void queueStationsForHdf5Query(DataTime dt,
|
||||||
|
@ -183,7 +200,8 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
allMetParamsMap = new HashMap<String, AbstractMetParameter>();
|
allMetParamsMap = new HashMap<String, AbstractMetParameter>();
|
||||||
plotPrmDefns = PlotParameterDefnsMngr.getInstance().getPlotParamDefns(
|
plotPrmDefns = PlotParameterDefnsMngr.getInstance().getPlotParamDefns(
|
||||||
plotModel.getPlugin());
|
plotModel.getPlugin());
|
||||||
dataRequestJobPool = new JobPool("Requesting HDF5 data...", 8, false);
|
dataRequestJobPool = new JobPool("Requesting met param data...", 8,
|
||||||
|
false);
|
||||||
queueOfStations = new ConcurrentLinkedQueue<QueueEntry>();
|
queueOfStations = new ConcurrentLinkedQueue<QueueEntry>();
|
||||||
parameters = new String[0];
|
parameters = new String[0];
|
||||||
metParamNameToDbNameMap = new HashMap<String, String>();
|
metParamNameToDbNameMap = new HashMap<String, String>();
|
||||||
|
@ -700,8 +718,10 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
Tracer.print("> Entry");
|
Tracer.print("> Entry");
|
||||||
Tracer.print("Invoking NcPlotModelHdf5DataRequestor.dispose()");
|
Tracer.print("Invoking NcPlotModelHdf5DataRequestor.dispose()");
|
||||||
|
canceling = true;
|
||||||
if (dataRequestJobPool != null) {
|
if (dataRequestJobPool != null) {
|
||||||
dataRequestJobPool.cancel();
|
dataRequestJobPool.cancel(false); // false = don't wait for jobs to
|
||||||
|
// complete
|
||||||
dataRequestJobPool = null;
|
dataRequestJobPool = null;
|
||||||
}
|
}
|
||||||
imageCreator.dispose();
|
imageCreator.dispose();
|
||||||
|
@ -1229,6 +1249,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
private Collection<Station> requestSurfaceData(DataTime time,
|
private Collection<Station> requestSurfaceData(DataTime time,
|
||||||
List<Station> listOfStationsRequestingForData) {
|
List<Station> listOfStationsRequestingForData) {
|
||||||
Tracer.print("> Entry " + Tracer.shortTimeString(time));
|
Tracer.print("> Entry " + Tracer.shortTimeString(time));
|
||||||
|
|
||||||
// sem1.acquireUninterruptibly();
|
// sem1.acquireUninterruptibly();
|
||||||
Map<String, Station> stationMap = new HashMap<String, Station>(
|
Map<String, Station> stationMap = new HashMap<String, Station>(
|
||||||
listOfStationsRequestingForData.size());
|
listOfStationsRequestingForData.size());
|
||||||
|
@ -1467,6 +1488,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
.shortTimeString(time)
|
.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " "
|
+ " "
|
||||||
+ " from pkeySet updating prmToPlot(Key) "
|
+ " from pkeySet updating prmToPlot(Key) "
|
||||||
|
@ -1479,6 +1501,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
.shortTimeString(time)
|
.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " "
|
+ " "
|
||||||
+ " prmToPlot non-null "
|
+ " prmToPlot non-null "
|
||||||
|
@ -1492,6 +1515,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
.shortTimeString(time)
|
.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " "
|
+ " "
|
||||||
+ " from pkeySet updating prmToPlot(Key) "
|
+ " from pkeySet updating prmToPlot(Key) "
|
||||||
|
@ -1523,6 +1547,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
Tracer.print(Tracer.shortTimeString(time)
|
Tracer.print(Tracer.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " "
|
+ " "
|
||||||
+ " NULL metPrm return from dbParamsMap for key -- skipping"
|
+ " NULL metPrm return from dbParamsMap for key -- skipping"
|
||||||
|
@ -1572,9 +1597,9 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
if (jfk)
|
if (jfk)
|
||||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
+ currentStation.info.stationId + " "
|
+ " " + currentStation.info.stationId
|
||||||
+ " before setMetParamFromPDV " + dbPrm
|
+ " " + " before setMetParamFromPDV "
|
||||||
+ " " + metPrm);
|
+ dbPrm + " " + metPrm);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the value for Met parameters from the
|
* Set the value for Met parameters from the
|
||||||
|
@ -1584,9 +1609,9 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
if (jfk)
|
if (jfk)
|
||||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
+ currentStation.info.stationId + " "
|
+ " " + currentStation.info.stationId
|
||||||
+ " after setMetParamFromPDV " + dbPrm
|
+ " " + " after setMetParamFromPDV "
|
||||||
+ " " + metPrm);
|
+ dbPrm + " " + metPrm);
|
||||||
|
|
||||||
// if(
|
// if(
|
||||||
// metPrm.getMetParamName().compareTo("StationID")
|
// metPrm.getMetParamName().compareTo("StationID")
|
||||||
|
@ -1617,9 +1642,9 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
if (jfk)
|
if (jfk)
|
||||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
+ currentStation.info.stationId + " "
|
+ " " + currentStation.info.stationId
|
||||||
+ " after put " + dbPrm + " " + metPrm
|
+ " " + " after put " + dbPrm + " "
|
||||||
+ " into dbParamsMap");
|
+ metPrm + " into dbParamsMap");
|
||||||
|
|
||||||
if (condFilterMap != null
|
if (condFilterMap != null
|
||||||
&& !condFilterMap.isEmpty()) {
|
&& !condFilterMap.isEmpty()) {
|
||||||
|
@ -1734,6 +1759,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
Tracer.print(Tracer.shortTimeString(time)
|
Tracer.print(Tracer.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " " + " trying to add metParam "
|
+ " " + " trying to add metParam "
|
||||||
+ metParam);
|
+ metParam);
|
||||||
|
@ -1744,6 +1770,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
.shortTimeString(time)
|
.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " "
|
+ " "
|
||||||
+ " newPrm NULL from newInstance -- skipping!!! "
|
+ " newPrm NULL from newInstance -- skipping!!! "
|
||||||
|
@ -1755,6 +1782,7 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
Tracer.print(Tracer.shortTimeString(time)
|
Tracer.print(Tracer.shortTimeString(time)
|
||||||
+ " "
|
+ " "
|
||||||
+ Tracer.shortTimeString(dataTime)
|
+ Tracer.shortTimeString(dataTime)
|
||||||
|
+ " "
|
||||||
+ currentStation.info.stationId
|
+ currentStation.info.stationId
|
||||||
+ " " + " added newPrm " + newPrm);
|
+ " " + " added newPrm " + newPrm);
|
||||||
}
|
}
|
||||||
|
@ -2061,9 +2089,14 @@ public class NcPlotModelHdf5DataRequestor {
|
||||||
|
|
||||||
Tracer.sanityCheckStationSet(stationsWithData);
|
Tracer.sanityCheckStationSet(stationsWithData);
|
||||||
|
|
||||||
if (stationsWithData.size() > 0)
|
if (canceling) {
|
||||||
|
Tracer.print("CANCEL in progress; no plot creation will occur for frame "
|
||||||
|
+ Tracer.shortTimeString(time));
|
||||||
|
|
||||||
|
} else if (stationsWithData.size() > 0) {
|
||||||
imageCreator.queueStationsToCreateImages(time,
|
imageCreator.queueStationsToCreateImages(time,
|
||||||
stationsWithData, plotDensity);
|
stationsWithData, plotDensity);
|
||||||
|
}
|
||||||
|
|
||||||
Tracer.print("< Exit END TASK " + Tracer.shortTimeString(time));
|
Tracer.print("< Exit END TASK " + Tracer.shortTimeString(time));
|
||||||
|
|
||||||
|
|
|
@ -32,9 +32,25 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
|
|
||||||
//import org.hibernate.mapping.Array;
|
//import org.hibernate.mapping.Array;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* 05/20/2013 988 Archana.S Initial creation.
|
||||||
|
* 02/26/2014 1061 B. Hebbard Relax tolerance for extent/zoom compare to avoid infinite loop.
|
||||||
|
*/
|
||||||
|
|
||||||
public final class ProgressiveDisclosure {
|
public final class ProgressiveDisclosure {
|
||||||
|
|
||||||
private final static double TOLERANCE = 0.0000000001;// 0.00000001;//0.000000000001;
|
private final static double TOLERANCE = 1E-03; // 0.0000000001;//
|
||||||
|
// 0.00000001;//0.000000000001;
|
||||||
|
|
||||||
|
private final static double ZOOM_TOLERANCE = TOLERANCE; // need different?
|
||||||
|
|
||||||
private ConcurrentLinkedQueue<QueueEntry> queueOfStationsToBeDisclosed;
|
private ConcurrentLinkedQueue<QueueEntry> queueOfStationsToBeDisclosed;
|
||||||
|
|
||||||
|
@ -308,7 +324,7 @@ public final class ProgressiveDisclosure {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > 0.00000000000001) {
|
if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > ZOOM_TOLERANCE) {
|
||||||
progDiscTask.zoomLevel = activePane.getZoomLevel();
|
progDiscTask.zoomLevel = activePane.getZoomLevel();
|
||||||
progDiscTask.extent = currViewExtents.clone();
|
progDiscTask.extent = currViewExtents.clone();
|
||||||
Tracer.print("Changed zoom level");
|
Tracer.print("Changed zoom level");
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -28,6 +29,8 @@ import java.util.Map;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
import org.opengis.referencing.FactoryException;
|
import org.opengis.referencing.FactoryException;
|
||||||
import org.opengis.referencing.operation.TransformException;
|
import org.opengis.referencing.operation.TransformException;
|
||||||
|
@ -38,8 +41,10 @@ import com.raytheon.uf.common.colormap.prefs.DataMappingPreferences;
|
||||||
import com.raytheon.uf.common.colormap.prefs.DataMappingPreferences.DataMappingEntry;
|
import com.raytheon.uf.common.colormap.prefs.DataMappingPreferences.DataMappingEntry;
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||||
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
|
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
|
||||||
|
import com.raytheon.uf.common.serialization.JAXBManager;
|
||||||
import com.raytheon.uf.common.serialization.SerializationException;
|
import com.raytheon.uf.common.serialization.SerializationException;
|
||||||
import com.raytheon.uf.common.serialization.SerializationUtil;
|
import com.raytheon.uf.common.serialization.jaxb.JAXBClassLocator;
|
||||||
|
import com.raytheon.uf.common.serialization.jaxb.JaxbDummyObject;
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
|
@ -53,12 +58,14 @@ import com.raytheon.uf.common.style.image.DataScale;
|
||||||
import com.raytheon.uf.common.style.image.DataScale.Type;
|
import com.raytheon.uf.common.style.image.DataScale.Type;
|
||||||
import com.raytheon.uf.common.style.image.ImagePreferences;
|
import com.raytheon.uf.common.style.image.ImagePreferences;
|
||||||
import com.raytheon.uf.common.style.image.SamplePreferences;
|
import com.raytheon.uf.common.style.image.SamplePreferences;
|
||||||
|
import com.raytheon.uf.common.style.level.Level;
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
import com.raytheon.uf.common.time.DataTime;
|
||||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
||||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||||
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
|
import com.raytheon.uf.viz.core.reflect.SubClassLocator;
|
||||||
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
||||||
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
||||||
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged;
|
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged;
|
||||||
|
@ -90,6 +97,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* 12/16/2013 #958 sgurung Set virtual cursor to point to lat/lon instead of pixel coordinates (in multipnaes)
|
* 12/16/2013 #958 sgurung Set virtual cursor to point to lat/lon instead of pixel coordinates (in multipnaes)
|
||||||
* 12/27/2013 #1046 qzhou Added getFunctioningRecords method
|
* 12/27/2013 #1046 qzhou Added getFunctioningRecords method
|
||||||
* Sep 5,2013 2051 mnash Fixed a deprecated method.
|
* Sep 5,2013 2051 mnash Fixed a deprecated method.
|
||||||
|
* 02/27/2014 qzhou Changed SerializaitionUtil to JAXBManager. Added getJaxbManager function
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author qzhou, sgurung
|
* @author qzhou, sgurung
|
||||||
|
@ -136,6 +144,8 @@ public class SolarImageResource extends
|
||||||
|
|
||||||
private RGB rgbB;
|
private RGB rgbB;
|
||||||
|
|
||||||
|
private static JAXBManager jaxb;
|
||||||
|
|
||||||
protected static class SampleResult {
|
protected static class SampleResult {
|
||||||
|
|
||||||
public SampleResult() {
|
public SampleResult() {
|
||||||
|
@ -260,7 +270,6 @@ public class SolarImageResource extends
|
||||||
return legendStr;
|
return legendStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO : probably not correct : fix this as it needs to be.
|
|
||||||
public void setLegendForFrame(SolarImageRecord rec) {
|
public void setLegendForFrame(SolarImageRecord rec) {
|
||||||
|
|
||||||
String timeStr = dateFmt.format(rec.getDataTime().getRefTime());
|
String timeStr = dateFmt.format(rec.getDataTime().getRefTime());
|
||||||
|
@ -393,7 +402,6 @@ public class SolarImageResource extends
|
||||||
sampleCoord);
|
sampleCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO : draw the lat lon lines even if there is no image?
|
|
||||||
if (isLatLonOverlayOn()) {
|
if (isLatLonOverlayOn()) {
|
||||||
try {
|
try {
|
||||||
if (isCarrington) {
|
if (isCarrington) {
|
||||||
|
@ -838,6 +846,31 @@ public class SolarImageResource extends
|
||||||
return NcPathConstants.SOLAR_IMG_STYLE_RULES;
|
return NcPathConstants.SOLAR_IMG_STYLE_RULES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static synchronized JAXBManager getJaxbManager()
|
||||||
|
throws JAXBException {
|
||||||
|
if (jaxb == null) {
|
||||||
|
SubClassLocator locator = new SubClassLocator();
|
||||||
|
Collection<Class<?>> classes = JAXBClassLocator.getJAXBClasses(
|
||||||
|
locator, StyleRuleset.class, StyleRule.class, Level.class,
|
||||||
|
AbstractStylePreferences.class, MatchCriteria.class);
|
||||||
|
|
||||||
|
locator.save();
|
||||||
|
|
||||||
|
Class<?>[] jaxbClasses = new Class<?>[classes.size() + 1];
|
||||||
|
classes.toArray(jaxbClasses);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add JaxbDummyObject at the beginning so properties are loaded
|
||||||
|
* correctly
|
||||||
|
*/
|
||||||
|
jaxbClasses[jaxbClasses.length - 1] = jaxbClasses[0];
|
||||||
|
jaxbClasses[0] = JaxbDummyObject.class;
|
||||||
|
|
||||||
|
jaxb = new JAXBManager(jaxbClasses);
|
||||||
|
}
|
||||||
|
return jaxb;
|
||||||
|
}
|
||||||
|
|
||||||
private void setColorMapParametersAndColorBar() throws VizException {
|
private void setColorMapParametersAndColorBar() throws VizException {
|
||||||
double minPixVal = Double.NaN;
|
double minPixVal = Double.NaN;
|
||||||
double maxPixVal = Double.NaN;
|
double maxPixVal = Double.NaN;
|
||||||
|
@ -881,8 +914,10 @@ public class SolarImageResource extends
|
||||||
File file = NcPathManager.getInstance().getStaticFile(locFileName);
|
File file = NcPathManager.getInstance().getStaticFile(locFileName);
|
||||||
StyleRule sRule = null;
|
StyleRule sRule = null;
|
||||||
try {
|
try {
|
||||||
StyleRuleset styleSet = (StyleRuleset) SerializationUtil
|
StyleRuleset styleSet = (StyleRuleset) getJaxbManager()
|
||||||
.jaxbUnmarshalFromXmlFile(StyleRuleset.class, file);
|
.unmarshalFromXmlFile(file);
|
||||||
|
|
||||||
|
// .jaxbUnmarshalFromXmlFile(StyleRuleset.class, file);
|
||||||
|
|
||||||
if (styleSet != null) {
|
if (styleSet != null) {
|
||||||
List<StyleRule> styleRuleList = styleSet.getStyleRules();
|
List<StyleRule> styleRuleList = styleSet.getStyleRules();
|
||||||
|
@ -932,6 +967,9 @@ public class SolarImageResource extends
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
} catch (JAXBException e) {
|
||||||
|
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||||
|
|
||||||
} catch (SerializationException e1) {
|
} catch (SerializationException e1) {
|
||||||
|
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
|
|
Loading…
Add table
Reference in a new issue