wxString GRIBTable::GetWaves(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_HTSIGW] ) { double height = recordarray[Idx_HTSIGW]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( height != GRIB_NOTDEF ) { height = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::WAVE, height); skn.Printf( wxString::Format( _T("%4.1f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::WAVE), height )); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::WAVE, height); if( recordarray[Idx_WVDIR] ) { double direction = recordarray[Idx_WVDIR]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( direction != GRIB_NOTDEF ){ skn.Prepend(wxString::Format( _T("%03d\u00B0\n\n"), (int)direction )); if( recordarray[Idx_WVPER] ) { double period = recordarray[Idx_WVPER]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( period != GRIB_NOTDEF ) { skn.Append( wxString::Format( _T("\n%01ds") , (int) (period + 0.5)) ); } } } } } } return skn; }
wxString GRIBTable::GetCurrent(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_SEACURRENT_VX] && recordarray[Idx_SEACURRENT_VY] ) { double vx = recordarray[Idx_SEACURRENT_VX]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); double vy = recordarray[Idx_SEACURRENT_VY]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( ( vx != GRIB_NOTDEF ) && ( vy != GRIB_NOTDEF ) ) { vx = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CURRENT, vx); vy = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CURRENT, vy); double ang = 90. + ( atan2( -vy, vx ) * 180. / PI ); if( ang > 360. ) ang -= 360.; if( ang < 0. ) ang += 360.; skn.Printf( _T("%03d\u00B0"), (int) ( ang ) ); skn.Append(_T("\n\n")); double vkn = sqrt( vx * vx + vy * vy ); skn.Append( wxString::Format( _T("%4.1f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::CURRENT), vkn ) ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::CURRENT, vkn); } } return skn; }
wxString GRIBTable::GetCurrent(GribRecord **recordarray) { wxString skn(wxEmptyString); double vkn, ang; if(GribRecord::getInterpolatedValues(vkn, ang, recordarray[Idx_SEACURRENT_VX], recordarray[Idx_SEACURRENT_VY], m_cursor_lon, m_cursor_lat)) { vkn = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CURRENT, vkn); // Current direction is generally reported as the "flow" direction, // which is opposite from wind convention. // So, adjust. ang += 180; if(ang >= 360) ang -= 360; if( ang < 0 ) ang += 360; skn.Printf( _T("%03d\u00B0"), (int) ( ang ) ); skn.Append(_T("\n\n")); skn.Append( wxString::Format( _T("%4.1f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::CURRENT), vkn ) ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::CURRENT, vkn); } return skn; }
wxString GRIBTable::GetWindBf(GribRecord **recordarray) { wxString skn(wxEmptyString); int altitude = 0; double vkn, ang; if(GribRecord::getInterpolatedValues(vkn, ang, recordarray[Idx_WIND_VX + altitude], recordarray[Idx_WIND_VY + altitude], m_cursor_lon, m_cursor_lat)) { vkn = m_pGDialog->m_OverlaySettings.GetmstobfFactor(vkn)* vkn; skn.Printf( wxString::Format( _T("%2d bf"), (int)wxRound( vkn )) ); } return skn; }
wxString GRIBTable::GetCAPE(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_CAPE] ) { double cape = recordarray[Idx_CAPE]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( cape != GRIB_NOTDEF ) { cape = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CAPE, cape); skn.Printf( wxString::Format( _T("%5.0f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::CAPE), cape ) ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::CAPE, cape); } } return skn; }
wxString GRIBTable::GetSeaTemp(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_SEA_TEMP] ) { double temp = recordarray[Idx_SEA_TEMP]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( temp != GRIB_NOTDEF ) { temp = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::SEA_TEMPERATURE, temp); skn.Printf( _T("%5.1f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::SEA_TEMPERATURE), temp ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::SEA_TEMPERATURE, temp); } } return skn; }
wxString GRIBTable::GetRainfall(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_PRECIP_TOT] ) { double precip = recordarray[Idx_PRECIP_TOT]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( precip != GRIB_NOTDEF ) { precip = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::PRECIPITATION, precip); skn.Printf( _T("%6.2f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::PRECIPITATION), precip ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::PRECIPITATION, precip); } } return skn; }
wxString GRIBTable::GetWindGust(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_WIND_GUST] ) { double vkn = recordarray[Idx_WIND_GUST]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( vkn != GRIB_NOTDEF ) { vkn = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::WIND_GUST, vkn); skn.Printf( wxString::Format(_T("%2d ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::WIND_GUST), (int) wxRound( vkn )) ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::WIND_GUST, vkn); } } return skn; }
wxString GRIBTable::GetPressure(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_PRESSURE] ) { double press = recordarray[Idx_PRESSURE]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( press != GRIB_NOTDEF ) { press = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::PRESSURE, press); int p = (m_pGDialog->m_OverlaySettings.Settings[GribOverlaySettings::PRESSURE].m_Units == 2) ? 2 : 0; // if PRESSURE & inHG = two decimals skn.Printf( wxString::Format(_T("%2.*f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::PRESSURE), p, ( press )) ); } } return skn; }
wxString GRIBTable::GetCloudCover(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_CLOUD_TOT] ) { double cloud = recordarray[Idx_CLOUD_TOT]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( cloud != GRIB_NOTDEF ) { cloud = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CLOUD, cloud); skn.Printf( _T("%5.1f "), cloud ); skn.Append(m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::CLOUD)); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::CLOUD, cloud); } } return skn; }
wxString GRIBTable::GetWindBf(GribRecord **recordarray) { wxString skn(wxEmptyString); if( recordarray[Idx_WIND_VX] && recordarray[Idx_WIND_VY] ) { double vx = recordarray[Idx_WIND_VX]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); double vy = recordarray[Idx_WIND_VY]-> getInterpolatedValue(m_pGDialog->m_cursor_lon, m_pGDialog->m_cursor_lat, true ); if( ( vx != GRIB_NOTDEF ) && ( vy != GRIB_NOTDEF ) ) { double vkn = sqrt( vx * vx + vy * vy ); vkn = m_pGDialog->m_OverlaySettings.GetmstobfFactor(vkn)* vkn; skn.Printf( wxString::Format( _T("%2d bf"), (int)wxRound( vkn )) ); } } return skn; }
wxString GRIBTable::GetCurrent(GribRecord **recordarray) { wxString skn(wxEmptyString); double vkn, ang; if(GribRecord::getInterpolatedValues(vkn, ang, recordarray[Idx_SEACURRENT_VX], recordarray[Idx_SEACURRENT_VY], m_cursor_lon, m_cursor_lat)) { vkn = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::CURRENT, vkn); skn.Printf( _T("%03d\u00B0"), (int) ( ang ) ); skn.Append(_T("\n\n")); skn.Append( wxString::Format( _T("%4.1f ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::CURRENT), vkn ) ); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::CURRENT, vkn); } return skn; }
wxString GRIBTable::GetWind(GribRecord **recordarray) { wxString skn(wxEmptyString); int altitude = 0; double vkn, ang; if(GribRecord::getInterpolatedValues(vkn, ang, recordarray[Idx_WIND_VX + altitude], recordarray[Idx_WIND_VY + altitude], m_cursor_lon, m_cursor_lat)) { skn.Printf( _T("%03d\u00B0"), (int) ( ang ) ); skn.Append(_T("\n\n")); vkn = m_pGDialog->m_OverlaySettings.CalibrateValue(GribOverlaySettings::WIND, vkn); skn.Append(wxString::Format( _T("%3d ") + m_pGDialog->m_OverlaySettings.GetUnitSymbol(GribOverlaySettings::WIND) , (int) wxRound( vkn ))); m_pDataCellsColour = m_pGDialog->pPlugIn->m_pGRIBOverlayFactory->GetGraphicColor(GribOverlaySettings::WIND, vkn); } return skn; }