コード例 #1
0
def test_sw():
    """Test shortwave flux calculation"""
    r = meteorology.clearsky_shortwave_irradiance_year(42, 100)
    assert abs(r[0] - 7.20) < 0.01
    assert abs(r[90] - 22.45) < 0.01
    assert abs(r[182] - 32.74) < 0.01
    assert abs(r[270] - 19.07) < 0.01
    assert abs(r[364] - 7.16) < 0.01
コード例 #2
0
 def test_sw(self):
     """Test shortwave flux calculation"""
     r = meteorology.clearsky_shortwave_irradiance_year(42, 100)
     self.assertAlmostEquals(r[0], 7.20, 2)
     self.assertAlmostEquals(r[90], 22.45, 2)
     self.assertAlmostEquals(r[182], 32.74, 2)
     self.assertAlmostEquals(r[270], 19.07, 2)
     self.assertAlmostEquals(r[364], 7.16, 2)
コード例 #3
0
ファイル: test_meteorology.py プロジェクト: akrherz/pyIEM
def test_sw():
    """Test shortwave flux calculation"""
    r = meteorology.clearsky_shortwave_irradiance_year(42, 100)
    assert abs(r[0] - 7.20) < 0.01
    assert abs(r[90] - 22.45) < 0.01
    assert abs(r[182] - 32.74) < 0.01
    assert abs(r[270] - 19.07) < 0.01
    assert abs(r[364] - 7.16) < 0.01
コード例 #4
0
 def test_sw(self):
     """Test shortwave flux calculation"""
     r = meteorology.clearsky_shortwave_irradiance_year(42, 100)
     self.assertAlmostEquals(r[0], 7.20, 2)
     self.assertAlmostEquals(r[90], 22.45, 2)
     self.assertAlmostEquals(r[182], 32.74, 2)
     self.assertAlmostEquals(r[270], 19.07, 2)
     self.assertAlmostEquals(r[364], 7.16, 2)
コード例 #5
0
ファイル: p177.py プロジェクト: stormchas4/iem
def make_daily_rad_plot(ctx):
    """Generate a daily radiation plot"""
    # Get clear sky theory
    theory = meteorology.clearsky_shortwave_irradiance_year(
        ctx["_nt"].sts[ctx["station"]]["lat"],
        ctx["_nt"].sts[ctx["station"]]["elevation"],
    )

    icursor = ctx["pgconn"].cursor(cursor_factory=psycopg2.extras.DictCursor)
    icursor.execute("""
        SELECT valid, slrmj_tot_qc from sm_daily
        where station = '%s'
        and valid >= '%s' and valid <= '%s' and slrmj_tot_qc > 0 and
        slrmj_tot_qc < 40 ORDER by valid ASC
    """ % (
        ctx["station"],
        ctx["sts"].strftime("%Y-%m-%d"),
        ctx["ets"].strftime("%Y-%m-%d"),
    ))
    dates = []
    vals = []
    tmax = []
    if icursor.rowcount == 0:
        raise NoDataFound("No Data Found, sorry")
    for row in icursor:
        dates.append(row[0])
        vals.append(row[1])
        jday = int(row[0].strftime("%j"))
        if jday > 364:
            jday = 364
        tmax.append(theory[jday])

    df = pd.DataFrame(dict(dates=dates, vals=vals, jday=jday, tmax=tmax))

    (fig, ax) = plt.subplots(1, 1)
    ax.bar(
        dates,
        vals,
        fc="tan",
        ec="brown",
        zorder=2,
        align="center",
        label="Observed",
    )
    ax.plot(dates, tmax, label=r"Modelled Max $\tau$ =0.75", color="k", lw=1.5)
    ax.grid(True)
    ax.xaxis.set_major_formatter(mdates.DateFormatter("%-d %b\n%Y"))
    interval = int(len(dates) / 7.0 + 1)
    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))
    ax.set_ylabel("Solar Radiation $MJ m^{-2}$")
    ax.set_title(
        ("ISUSM Station: %s Timeseries\n"
         "Daily Solar Radiation") % (ctx["_nt"].sts[ctx["station"]]["name"], ))
    ax.set_ylim(0, 38)
    ax.legend(loc=1, ncol=2, fontsize=10)
    return fig, df
コード例 #6
0
def make_daily_rad_plot(ctx):
    """Generate a daily radiation plot"""
    import matplotlib
    matplotlib.use('agg')
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    # Get clear sky theory
    theory = meteorology.clearsky_shortwave_irradiance_year(
        ctx['nt'].sts[ctx['station']]['lat'],
        ctx['nt'].sts[ctx['station']]['elevation'])

    icursor = ctx['pgconn'].cursor(cursor_factory=psycopg2.extras.DictCursor)
    icursor.execute("""SELECT valid, slrmj_tot_qc from sm_daily
    where station = '%s'
    and valid >= '%s' and valid <= '%s' and slrmj_tot_qc is not null
    ORDER by valid ASC
    """ % (ctx['station'], ctx['sts'].strftime("%Y-%m-%d"),
           ctx['ets'].strftime("%Y-%m-%d")))
    dates = []
    vals = []
    tmax = []
    if icursor.rowcount == 0:
        raise Exception("No Data Found, sorry")
    for row in icursor:
        dates.append(row[0])
        vals.append(row[1])
        jday = int(row[0].strftime("%j"))
        if jday > 364:
            jday = 364
        tmax.append(theory[jday])

    df = pd.DataFrame(dict(dates=dates, vals=vals, jday=jday, tmax=tmax))

    (fig, ax) = plt.subplots(1, 1)
    ax.bar(dates,
           vals,
           fc='tan',
           ec='brown',
           zorder=2,
           align='center',
           label='Observed')
    ax.plot(dates, tmax, label=r"Modelled Max $\tau$ =0.75", color='k', lw=1.5)
    ax.grid(True)
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%-d %b\n%Y'))
    interval = len(dates) / 7 + 1
    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))
    ax.set_ylabel("Solar Radiation $MJ m^{-2}$")
    ax.set_title(
        ("ISUSM Station: %s Timeseries\n"
         "Daily Solar Radiation") % (ctx['nt'].sts[ctx['station']]['name'], ))
    ax.legend(loc='best', ncol=1, fontsize=10)
    return fig, df
コード例 #7
0
def make_daily_rad_plot(station, sts, ets):
    """Generate a daily radiation plot"""
    # Get clear sky theory
    theory = meteorology.clearsky_shortwave_irradiance_year(
        nt.sts[station]['lat'], nt.sts[station]['elevation'])

    icursor = ISUAG.cursor(cursor_factory=psycopg2.extras.DictCursor)
    icursor.execute("""SELECT valid, slrmj_tot_qc from sm_daily
    where station = '%s'
    and valid >= '%s' and valid <= '%s' and slrmj_tot_qc is not null
    ORDER by valid ASC
    """ % (station, sts.strftime("%Y-%m-%d"), ets.strftime("%Y-%m-%d")))
    dates = []
    vals = []
    tmax = []
    for row in icursor:
        dates.append(row[0])
        vals.append(row[1])
        jday = int(row[0].strftime("%j"))
        if jday > 364:
            jday = 364
        tmax.append(theory[jday])

    (_, ax) = plt.subplots(1, 1)
    ax.bar(dates,
           vals,
           fc='tan',
           ec='brown',
           zorder=2,
           align='center',
           label='Observed')
    ax.plot(dates, tmax, label=r"Modelled Max $\tau$ =0.75", color='k', lw=1.5)
    ax.grid(True)
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%-d %b\n%Y'))
    interval = len(dates) / 7 + 1
    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))
    ax.set_ylabel("Solar Radiation $MJ m^{-2}$")
    ax.set_title(("ISUSM Station: %s Timeseries\n"
                  "Daily Solar Radiation") % (nt.sts[station]['name'], ))
    ax.legend(loc='best', ncol=1, fontsize=10)
    sys.stdout.write("Content-Type: image/png\n\n")
    plt.savefig(sys.stdout, format='png')
コード例 #8
0
ファイル: smts.py プロジェクト: akrherz/iem
def make_daily_rad_plot(station, sts, ets):
    """Generate a daily radiation plot"""
    # Get clear sky theory
    theory = meteorology.clearsky_shortwave_irradiance_year(
                nt.sts[station]['lat'],
                nt.sts[station]['elevation'])

    icursor = ISUAG.cursor(cursor_factory=psycopg2.extras.DictCursor)
    icursor.execute("""SELECT valid, slrmj_tot_qc from sm_daily
    where station = '%s'
    and valid >= '%s' and valid <= '%s' and slrmj_tot_qc is not null
    ORDER by valid ASC
    """ % (station, sts.strftime("%Y-%m-%d"), ets.strftime("%Y-%m-%d")))
    dates = []
    vals = []
    tmax = []
    for row in icursor:
        dates.append(row[0])
        vals.append(row[1])
        jday = int(row[0].strftime("%j"))
        if jday > 364:
            jday = 364
        tmax.append(theory[jday])

    (_, ax) = plt.subplots(1, 1)
    ax.bar(dates, vals, fc='tan', ec='brown', zorder=2,
           align='center', label='Observed')
    ax.plot(dates, tmax, label=r"Modelled Max $\tau$ =0.75", color='k', lw=1.5)
    ax.grid(True)
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%-d %b\n%Y'))
    interval = len(dates) / 7 + 1
    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))
    ax.set_ylabel("Solar Radiation $MJ m^{-2}$")
    ax.set_title(("ISUSM Station: %s Timeseries\n"
                  "Daily Solar Radiation"
                  ) % (nt.sts[station]['name'], ))
    ax.legend(loc='best', ncol=1, fontsize=10)
    sys.stdout.write("Content-Type: image/png\n\n")
    plt.savefig(sys.stdout, format='png')