def test_cog_no_crs(tmpdir, with_dask): pp = Path(str(tmpdir)) xx, ds = gen_test_data(pp, dask=with_dask) xx = remove_crs(xx) with pytest.raises(ValueError): write_cog(xx, ":mem:") with pytest.raises(ValueError): to_cog(xx)
def test_cog_no_crs(tmpdir, with_dask): pp = Path(str(tmpdir)) xx, ds = gen_test_data(pp, dask=with_dask) del xx.attrs['crs'] for dim in xx.dims: del xx[dim].attrs['crs'] with pytest.raises(ValueError): write_cog(xx, ":mem:") with pytest.raises(ValueError): to_cog(xx)
def test_cog_mem_dask(tmpdir): pp = Path(str(tmpdir)) xx, ds = gen_test_data(pp, dask=True) # write to memory 1 bb = write_cog(xx, ":mem:") assert isinstance(bb, Delayed) bb = bb.compute() assert isinstance(bb, bytes) path = pp / "cog1.tiff" with open(str(path), "wb") as f: f.write(bb) yy = rio_slurp_xarray(path) np.testing.assert_array_equal(yy.values, xx.values) assert yy.geobox == xx.geobox assert yy.nodata == xx.nodata # write to memory 2 bb = to_cog(xx) assert isinstance(bb, Delayed) bb = bb.compute() assert isinstance(bb, bytes) path = pp / "cog2.tiff" with open(str(path), "wb") as f: f.write(bb) yy = rio_slurp_xarray(path) np.testing.assert_array_equal(yy.values, xx.values) assert yy.geobox == xx.geobox assert yy.nodata == xx.nodata
def _ds_to_cog(self, ds: xr.Dataset, paths: Dict[str, str]) -> List[Delayed]: out = [] for band, dv in ds.data_vars.items(): url = paths.get(band, None) if url is None: raise ValueError(f"No path for band: '{band}'") cog_bytes = to_cog(dv, **self._cog_opts) out.append( self._write_blob(cog_bytes, url, ContentType='image/tiff')) return out
def test_cog_mem(tmpdir, shape): pp = Path(str(tmpdir)) xx, ds = gen_test_data(pp, shape=shape) # write to memory 1 bb = write_cog(xx, ":mem:") assert isinstance(bb, bytes) path = pp / "cog1.tiff" with open(str(path), "wb") as f: f.write(bb) yy = rio_slurp_xarray(path) np.testing.assert_array_equal(yy.values, xx.values) assert yy.geobox == xx.geobox assert yy.nodata == xx.nodata # write to memory 2 bb = to_cog(xx) assert isinstance(bb, bytes) path = pp / "cog2.tiff" with open(str(path), "wb") as f: f.write(bb) yy = rio_slurp_xarray(path) np.testing.assert_array_equal(yy.values, xx.values) assert yy.geobox == xx.geobox assert yy.nodata == xx.nodata # write to memory 3 -- no overviews bb = to_cog(xx, overview_levels=[]) assert isinstance(bb, bytes) path = pp / "cog3.tiff" with open(str(path), "wb") as f: f.write(bb) yy = rio_slurp_xarray(path) np.testing.assert_array_equal(yy.values, xx.values) assert yy.geobox == xx.geobox assert yy.nodata == xx.nodata
def write_cog(self, da: xr.DataArray, url: str) -> Delayed: cog_bytes = to_cog(da, **self._cog_opts) return self._write_blob(cog_bytes, url, ContentType='image/tiff')
def write_cog(self, da: xr.DataArray, url: str) -> Delayed: cog_bytes = to_cog(da, **self.cog_opts(str(da.name))) return self._write_blob(cog_bytes, url, ContentType="image/tiff")