Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_make_coords__calc_trans(open_func, modis_reproject):
with xarray.open_dataarray(modis_reproject["input"]) as xdi, open_func(
modis_reproject["input"]
) as xri:
# calculate coordinates from the calculated transform
width, height = xdi.rio.shape
calculated_transform = xdi.rio.transform(recalc=True)
calc_coords_calc_trans = _make_coords(xdi, calculated_transform, width, height,)
widthr, heightr = xri.rio.shape
calculated_transformr = xri.rio.transform(recalc=True)
calc_coords_calc_transr = _make_coords(
xri, calculated_transformr, widthr, heightr,
)
assert_almost_equal(calculated_transform, calculated_transformr)
# check to see if they all match
if not isinstance(open_func, partial):
assert_almost_equal(
xri.coords["x"].values, calc_coords_calc_trans["x"].values, decimal=9
)
assert_almost_equal(
xri.coords["y"].values, calc_coords_calc_trans["y"].values, decimal=9
)
assert_almost_equal(
xri.coords["x"].values, calc_coords_calc_transr["x"].values, decimal=9
)
assert_almost_equal(
def test_make_coords__attr_trans(open_func, modis_reproject):
with xarray.open_dataarray(modis_reproject["input"]) as xdi, open_func(
modis_reproject["input"]
) as xri:
# calculate coordinates from the attribute transform
width, height = xdi.rio.shape
attr_transform = xdi.rio.transform()
calc_coords_attr_trans = _make_coords(xdi, attr_transform, width, height,)
widthr, heightr = xri.rio.shape
calculated_transformr = xri.rio.transform()
calc_coords_calc_transr = _make_coords(
xri, calculated_transformr, widthr, heightr,
)
assert_almost_equal(attr_transform, calculated_transformr)
# check to see if they all match
if not isinstance(open_func, partial):
assert_almost_equal(
xri.coords["x"].values, calc_coords_calc_transr["x"].values, decimal=9
)
assert_almost_equal(
xri.coords["y"].values, calc_coords_calc_transr["y"].values, decimal=9
)
assert_almost_equal(
xri.coords["x"].values, calc_coords_attr_trans["x"].values, decimal=9
)
assert_almost_equal(
xri.coords["y"].values, calc_coords_attr_trans["y"].values, decimal=9
def test_make_coords__attr_trans(open_func, modis_reproject):
with xarray.open_dataarray(modis_reproject["input"]) as xdi, open_func(
modis_reproject["input"]
) as xri:
# calculate coordinates from the attribute transform
width, height = xdi.rio.shape
attr_transform = xdi.rio.transform()
calc_coords_attr_trans = _make_coords(xdi, attr_transform, width, height,)
widthr, heightr = xri.rio.shape
calculated_transformr = xri.rio.transform()
calc_coords_calc_transr = _make_coords(
xri, calculated_transformr, widthr, heightr,
)
assert_almost_equal(attr_transform, calculated_transformr)
# check to see if they all match
if not isinstance(open_func, partial):
assert_almost_equal(
xri.coords["x"].values, calc_coords_calc_transr["x"].values, decimal=9
)
assert_almost_equal(
xri.coords["y"].values, calc_coords_calc_transr["y"].values, decimal=9
)
assert_almost_equal(
xri.coords["x"].values, calc_coords_attr_trans["x"].values, decimal=9
def test_make_coords__calc_trans(open_func, modis_reproject):
with xarray.open_dataarray(modis_reproject["input"]) as xdi, open_func(
modis_reproject["input"]
) as xri:
# calculate coordinates from the calculated transform
width, height = xdi.rio.shape
calculated_transform = xdi.rio.transform(recalc=True)
calc_coords_calc_trans = _make_coords(xdi, calculated_transform, width, height,)
widthr, heightr = xri.rio.shape
calculated_transformr = xri.rio.transform(recalc=True)
calc_coords_calc_transr = _make_coords(
xri, calculated_transformr, widthr, heightr,
)
assert_almost_equal(calculated_transform, calculated_transformr)
# check to see if they all match
if not isinstance(open_func, partial):
assert_almost_equal(
xri.coords["x"].values, calc_coords_calc_trans["x"].values, decimal=9
)
assert_almost_equal(
xri.coords["y"].values, calc_coords_calc_trans["y"].values, decimal=9
)
assert_almost_equal(
representative_ds = datasets[0]
merged_data = {}
for data_var in representative_ds.data_vars:
merged_data[data_var] = merge_arrays(
[dataset[data_var] for dataset in datasets],
bounds=bounds,
res=res,
nodata=nodata,
precision=precision,
method=method,
parse_coordinates=False,
)
data_var = list(representative_ds.data_vars)[0]
xds = Dataset(
merged_data,
coords=_make_coords(
merged_data[data_var],
merged_data[data_var].rio.transform(),
merged_data[data_var].shape[-1],
merged_data[data_var].shape[-2],
),
attrs=representative_ds.attrs,
)
xds.rio.write_crs(representative_ds.rio.crs, inplace=True)
return xds
-------
:obj:`xarray.DataArray`:
The geospatially merged data.
"""
input_kwargs = dict(
bounds=bounds, res=res, nodata=nodata, precision=precision, method=method
)
merged_data, merged_transform = _rio_merge(
[RasterioDatasetDuck(dataarray) for dataarray in dataarrays],
**{key: val for key, val in input_kwargs.items() if val is not None},
)
merged_shape = merged_data.shape
representative_array = dataarrays[0]
if parse_coordinates:
coords = _make_coords(
representative_array, merged_transform, merged_shape[-1], merged_shape[-2],
)
else:
coords = _get_nonspatial_coords(representative_array)
out_attrs = representative_array.attrs
xda = DataArray(
name=dataarrays[0].name,
data=merged_data,
coords=coords,
dims=tuple(representative_array.dims),
attrs=out_attrs,
)
out_nodata = nodata if nodata is not None else representative_array.rio.nodata
xda.rio.write_nodata(out_nodata, inplace=True)
xda.rio.write_crs(representative_array.rio.crs, inplace=True)