Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
0
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;
}
Example #10
0
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;
}
Example #11
0
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;
}
Example #12
0
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;
}
Example #13
0
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;
}