def test_values(self): # Check values are OK. Values taken from pyproj test. boston_lat = 42.0 + (15.0 / 60.0) boston_lon = -71.0 - (7.0 / 60.0) portland_lat = 45.0 + (31.0 / 60.0) portland_lon = -123.0 - (41.0 / 60.0) da = xr.DataArray(0, coords={ "lon": [boston_lon], "lat": [boston_lat] }, dims=["lon", "lat"]) d = subset.distance(da, lon=portland_lon, lat=portland_lat) np.testing.assert_almost_equal(d, 4164074.239, decimal=3)
def test_broadcasting(self): # Check output dimensions match lons and lats. lon = np.linspace(-180, 180, 20) lat = np.linspace(-90, 90, 30) da = xr.Dataset(data_vars=None, coords={"lon": lon, "lat": lat}) da["data"] = xr.DataArray(np.random.rand(lon.size, lat.size), dims=["lon", "lat"]) d = subset.distance(da, lon=-34, lat=56).squeeze("site") assert d.dims == da.data.dims assert d.shape == da.data.shape assert d.units == "m" # Example of how to get the actual 2D indices. k = d.argmin() i, j = np.unravel_index(k, da.data.shape) assert d[i, j] == d.min()