def tile( scene: str, z: int, x: int, y: int, scale: int = 1, ext: str = "png", bands: str = None, percents: str = "", expr: str = None, rescale: str = None, color_formula: str = None, color_map: str = None, ) -> Tuple[str, str, BinaryIO]: """Handle tile requests.""" driver = "jpeg" if ext == "jpg" else ext if bands and expr: raise CbersTilerError("Cannot pass bands and expression") tilesize = scale * 256 if expr is not None: tile, mask = expression(scene, x, y, z, expr=expr, tilesize=tilesize) elif bands is not None: tile, mask = cbers_tile(scene, x, y, z, bands=tuple(bands.split(",")), tilesize=tilesize, percents=percents) else: raise CbersTilerError("No bands nor expression given") if tile is None or mask is None: return ( "OK", f"image/png", b'', ) rtile, rmask = _postprocess(tile, mask, rescale=None, color_formula=color_formula) if color_map: color_map = get_colormap(color_map, format="gdal") options = img_profiles.get(driver, {}) return ( "OK", f"image/{ext}", array_to_image(rtile, rmask, img_format=driver, color_map=color_map, **options), )
def tile( z: int, x: int, y: int, scale: int = 1, ext: str = None, url: str = None, indexes: Union[str, Tuple[int]] = None, expr: str = None, nodata: Union[str, int, float] = None, rescale: str = None, color_formula: str = None, color_map: str = None, ) -> Tuple[str, str, BinaryIO]: """Handle tile requests.""" driver = "jpeg" if ext == "jpg" else ext if indexes and expr: raise TilerError("Cannot pass indexes and expression") if not url: raise TilerError("Missing 'url' parameter") if isinstance(indexes, str): indexes = tuple(int(s) for s in re.findall(r"\d+", indexes)) if nodata is not None: nodata = numpy.nan if nodata == "nan" else float(nodata) tilesize = scale * 256 if expr is not None: tile, mask = expression( url, x, y, z, expr=expr, tilesize=tilesize, nodata=nodata ) else: tile, mask = main.tile( url, x, y, z, indexes=indexes, tilesize=tilesize, nodata=nodata ) rtile, rmask = _postprocess( tile, mask, rescale=rescale, color_formula=color_formula ) if color_map: color_map = get_colormap(color_map, format="gdal") options = img_profiles.get(driver, {}) return ( "OK", f"image/{ext}", array_to_image(rtile, rmask, img_format=driver, color_map=color_map, **options), )
def s1tile( scene: str, z: int, x: int, y: int, scale: int = 1, ext: str = "png", bands: str = None, rescale: str = None, color_formula: str = None, color_map: str = None, ) -> Tuple[str, str, BinaryIO]: """Handle tile requests.""" if not bands: raise Exception("bands is required") tilesize = scale * 256 tile, mask = sentinel1.tile(scene, x, y, z, bands=tuple(bands.split(",")), tilesize=tilesize) rtile, rmask = _postprocess(tile, mask, rescale=rescale, color_formula=color_formula) if color_map: color_map = get_colormap(color_map, format="gdal") driver = "jpeg" if ext == "jpg" else ext options = img_profiles.get(driver, {}) return ( "OK", f"image/{ext}", array_to_image(rtile, rmask, img_format=driver, color_map=color_map, **options), )