def test_dwd_observation_stations_nearby_distance():
    request = DwdObservationRequest(
        DwdObservationDataset.TEMPERATURE_AIR,
        DwdObservationResolution.HOURLY,
        DwdObservationPeriod.HISTORICAL,
        datetime(2020, 1, 1),
        datetime(2020, 1, 20),
    )
    # Kilometers
    nearby_station = request.filter_by_distance(50.0, 8.9, 16.13, "km")
    nearby_station = nearby_station.df.drop("to_date", axis="columns")

    assert_frame_equal(nearby_station, EXPECTED_STATIONS_DF)

    # Miles
    nearby_station = request.filter_by_distance(50.0, 8.9, 10.03, "mi")
    nearby_station = nearby_station.df.drop(columns="to_date")

    assert_frame_equal(nearby_station, EXPECTED_STATIONS_DF)
def station_example():
    """Retrieve stations_result of DWD that measure temperature."""
    stations = DwdObservationRequest(
        parameter=DwdObservationDataset.TEMPERATURE_AIR,
        resolution=DwdObservationResolution.HOURLY,
        period=DwdObservationPeriod.RECENT,
        start_date=datetime(2020, 1, 1),
        end_date=datetime(2020, 1, 20),
    )

    result = stations.filter_by_distance(latitude=50.0,
                                         longitude=8.9,
                                         distance=30)

    print(result.df)
def station_example():
    stations = DwdObservationRequest(
        parameter=DwdObservationDataset.TEMPERATURE_AIR,
        resolution=DwdObservationResolution.HOURLY,
        period=DwdObservationPeriod.RECENT,
        start_date=datetime(2020, 1, 1),
        end_date=datetime(2020, 1, 20),
        tidy=True,
        humanize=True,
    )

    df = stations.filter_by_distance(latitude=50.0, longitude=8.9,
                                     distance=30).df

    print(df)
def test_dwd_observation_stations_empty():
    request = DwdObservationRequest(
        DwdObservationDataset.TEMPERATURE_AIR,
        DwdObservationResolution.HOURLY,
        DwdObservationPeriod.RECENT,
        datetime(2020, 1, 1),
        datetime(2020, 1, 20),
    )
    # Distance
    assert request.filter_by_distance(
        50.0,
        8.9,
        10,
    ).df.empty

    # Bbox
    assert request.filter_by_bbox(
        left=-100,
        bottom=-20,
        right=-90,
        top=-10,
    ).df.empty