def test_read_unscale(): """Should or Shouldn't apply scale and offset to a data.""" with rasterio.open(COG_SCALE) as src_dst: arr, mask = reader.tile(src_dst, 218, 99, 8, tilesize=128) arrS, maskS = reader.tile(src_dst, 218, 99, 8, tilesize=128, unscale=True) assert arr.dtype == "int16" assert arrS.dtype == "float32" assert not numpy.array_equal(arr, arrS) numpy.testing.assert_array_equal(mask, maskS) meta = reader.metadata(src_dst) assert isinstance(meta["statistics"][1]["min"], int) meta = reader.metadata(src_dst, unscale=True) assert isinstance(meta["statistics"][1]["min"], float) p = reader.point(src_dst, [310000, 4100000], coord_crs=src_dst.crs) assert p == [8917] p = reader.point(src_dst, [310000, 4100000], coord_crs=src_dst.crs, unscale=True) assert round(p[0], 3) == 1000.892
def worker(band: str): asset = "{}/{}-{}.tiff".format(sentinel_prefix, scene_params["beam"].lower(), band) with rasterio.open(asset) as src_dst: with WarpedVRT( src_dst, src_crs=src_dst.gcps[1], src_transform=transform.from_gcps(src_dst.gcps[0]), src_nodata=0, ) as vrt_dst: return reader.metadata( vrt_dst, percentiles=(pmin, pmax), hist_options=hist_options, **kwargs, )
def test_metadata(): """Should return correct metadata.""" with rasterio.open(COG_CMAP) as src_dst: meta = reader.metadata(src_dst) assert meta["dtype"] == "int8" assert meta["colorinterp"] == ["palette"] assert not meta.get("scale") assert not meta.get("ofsset") assert meta.get("colormap") with rasterio.open(COG_SCALE) as src_dst: meta = reader.metadata(src_dst) assert meta["dtype"] == "int16" assert meta["colorinterp"] == ["gray"] assert meta["scale"] == 0.0001 assert meta["offset"] == 1000.0 assert meta["band_descriptions"] == [(1, "Green")] assert not meta.get("colormap") assert meta["nodata_type"] == "Nodata" meta = reader.metadata(src_dst, indexes=1) assert meta["colorinterp"] == ["gray"] bounds = mercantile.bounds(mercantile.Tile(x=218, y=99, z=8)) meta = reader.metadata(src_dst, bounds) assert meta["colorinterp"] == ["gray"] assert meta["bounds"] == bounds with rasterio.open(S3_ALPHA_PATH) as src_dst: with pytest.warns(AlphaBandWarning): meta = reader.metadata(src_dst) assert len(meta["band_descriptions"]) == 3 assert meta["colorinterp"] == ["red", "green", "blue"] assert meta["nodata_type"] == "Alpha" meta = reader.metadata(src_dst, indexes=(1, 2, 3, 4)) assert len(meta["band_descriptions"]) == 4 assert meta["colorinterp"] == ["red", "green", "blue", "alpha"] assert meta["nodata_type"] == "Alpha" with rasterio.open(S3_MASK_PATH) as src_dst: meta = reader.metadata(src_dst) assert meta["nodata_type"] == "Mask"
def metadata( address: str, pmin: float = 2.0, pmax: float = 98.0, hist_options: Dict = {}, **kwargs: Any, ) -> Dict: """ Return image statistics. Attributes ---------- address : str or PathLike object A dataset path or URL. Will be opened in "r" mode. pmin : int, optional, (default: 2) Histogram minimum cut. pmax : int, optional, (default: 98) Histogram maximum cut. hist_options : dict, optional Options to forward to numpy.histogram function. e.g: {bins=20, range=(0, 1000)} kwargs : optional These are passed to 'rio_tiler.reader.preview' Returns ------- out : dict Dictionary with image bounds and bands statistics. """ with rasterio.open(address) as src_dst: meta = reader.metadata(src_dst, percentiles=(pmin, pmax), hist_options=hist_options, **kwargs) return dict(address=address, **meta)