Exemplo n.º 1
0
def read_upper_air_iastate(date):
    try:
        data = IAStateUpperAir().request_all_data(date)
    except ValueError:
        #print("ERROR: no data available for ",date)
        #print("     Trying previous synoptic time")
        return None
        #date = date - timedelta(hours = 12)
        #data = IAStateUpperAir().request_all_data(date)
    data = add_station_lat_lon(data)

    return data
Exemplo n.º 2
0
def test_add_lat_lon_station_data():
    """Test for when the METAR does not correspond to a station in the dictionary."""
    df = pd.DataFrame({'station': ['KOUN', 'KVPZ', 'KDEN', 'PAAA']})

    df = add_station_lat_lon(df, 'station')
    assert_almost_equal(df.loc[df.station == 'KOUN'].latitude.values[0], 35.25)
    assert_almost_equal(df.loc[df.station == 'KOUN'].longitude.values[0], -97.47)
    assert_almost_equal(df.loc[df.station == 'KVPZ'].latitude.values[0], 41.45)
    assert_almost_equal(df.loc[df.station == 'KVPZ'].longitude.values[0], -87)
    assert_almost_equal(df.loc[df.station == 'KDEN'].latitude.values[0], 39.85)
    assert_almost_equal(df.loc[df.station == 'KDEN'].longitude.values[0], -104.65)
    assert_almost_equal(df.loc[df.station == 'PAAA'].latitude.values[0], np.nan)
    assert_almost_equal(df.loc[df.station == 'PAAA'].longitude.values[0], np.nan)
Exemplo n.º 3
0
def test_add_lat_lon_station_data_optional():
    """Test for when only one argument is passed."""
    df = pd.DataFrame({'station': ['KOUN', 'KVPZ', 'KDEN', 'PAAA']})

    df = add_station_lat_lon(df)
    assert_almost_equal(df.loc[df.station == 'KOUN'].latitude.values[0], 35.25)
Exemplo n.º 4
0
def test_add_lat_lon_station_data_not_found():
    """Test case where key cannot be inferred."""
    df = pd.DataFrame({'location': ['KOUN']})

    with pytest.raises(KeyError):
        add_station_lat_lon(df)
Exemplo n.º 5
0
import cartopy.crs as ccrs
from metpy.io import add_station_lat_lon
from metpy.plots import declarative
from metpy.units import units
from siphon.simplewebservice.iastate import IAStateUpperAir
import pandas as pd

# ## Read Data
# Set date for desired UPA data
date = datetime(2020, 2, 29, 12)

# Request data using Siphon request for data from Iowa State Archive
df = IAStateUpperAir.request_all_data(date)

df = add_station_lat_lon(df, 'station')

df['dewpoint_depression'] = df['temperature'] - df['dewpoint']

# ## Plot Upperair Map

# Set a format specifier for the geoptential height
# This formatter takes a value 9300 -> 930
height_format = lambda v: format(v, '.0f')[1:]

# Plot desired data
obs = declarative.PlotObs()
obs.data = df
obs.time = date
obs.level = 850 * units.hPa
obs.fields = ['temperature', 'dewpoint_depression', 'height']