Пример #1
0
    def test_location_distance_threshold(self):
        """
        Tests a user defined distance threshold between successive points.
        """
        lon = np.array([-71.05, -71.06, -80.0])
        lat = np.array([41.0, 41.02, 45.05])

        npt.assert_array_equal(qartod.location_test(lon, lat),
                               np.array([1, 1, 1]))
        npt.assert_array_equal(
            qartod.location_test(lon, lat, range_max=3000.0),
            np.ma.array([1, 1, 3]))
Пример #2
0
    def test_single_location_nan(self):
        lon = [np.nan]
        lat = [np.nan]
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))

        lon = np.array(lon)
        lat = np.array(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))

        # Test dask nan input
        lon = dask_arr(lon)
        lat = dask_arr(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))
Пример #3
0
    def test_single_location_none(self):
        # Masked/None/NaN values return "UNKNOWN"
        lon = [None]
        lat = [None]
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))

        lon = np.array(lon)
        lat = np.array(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))

        lon = dask_arr(lon)
        lat = dask_arr(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([9]))
Пример #4
0
    def test_location_bbox(self):
        lon = [80, -78, -71, -79, 500]
        lat = [None, 50, 59, 10, -60]
        npt.assert_array_equal(
            qartod.location_test(lon=lon, lat=lat, bbox=[-80, 40, -70, 60]),
            np.ma.array([4, 1, 1, 4, 4]))

        lon = np.asarray([80, -78, -71, -79, 500], dtype=np.floating)
        lat = np.asarray([None, 50, 59, 10, -60], dtype=np.floating)
        npt.assert_array_equal(
            qartod.location_test(lon=lon, lat=lat, bbox=[-80, 40, -70, 60]),
            np.ma.array([4, 1, 1, 4, 4]))

        lon = dask_arr(np.asarray([80, -78, -71, -79, 500], dtype=np.floating))
        lat = dask_arr(np.asarray([None, 50, 59, 10, -60], dtype=np.floating))
        npt.assert_array_equal(
            qartod.location_test(lon=lon, lat=lat, bbox=[-80, 40, -70, 60]),
            np.ma.array([4, 1, 1, 4, 4]))
Пример #5
0
    def test_location(self):
        """
        Ensure that longitudes and latitudes are within reasonable bounds.
        """
        lon = [80.0, -78.5, 500.500]
        lat = [np.NaN, 50.0, -60.0]

        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([4, 1, 4]))

        lon = np.array(lon)
        lat = np.array(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([4, 1, 4]))

        lon = dask_arr(lon)
        lat = dask_arr(lat)
        npt.assert_array_equal(qartod.location_test(lon=lon, lat=lat),
                               np.ma.array([4, 1, 4]))
Пример #6
0
    def test_location_bad_input(self):
        # Wrong type lon
        with self.assertRaises(ValueError):
            qartod.location_test(lon='hello', lat=70)

        # Wrong type lat
        with self.assertRaises(ValueError):
            qartod.location_test(lon=70, lat='foo')

        # Wrong type bbox
        with self.assertRaises(ValueError):
            qartod.location_test(lon=70, lat=70, bbox='hi')

        # Wrong size bbox
        with self.assertRaises(ValueError):
            qartod.location_test(lon=70, lat=70, bbox=(1, 2))