Source code for tiatoolbox.visualization.ui_utils
"""Some utilities for bokeh ui."""
from __future__ import annotations
from cmath import pi
import numpy as np
scale_factor = 2
init_res = 40211.5 * scale_factor * (2 / (100 * pi))
min_zoom = 0
max_zoom = 10
resolutions = [init_res / 2**lev for lev in range(min_zoom, max_zoom + 1)]
[docs]
def get_level_by_extent(extent: tuple[float, float, float, float]) -> int:
"""Replicate the Bokeh tile renderer `get_level_by_extent` function."""
x_rs = (extent[2] - extent[0]) / 1700
y_rs = (extent[3] - extent[1]) / 1000
resolution = np.maximum(x_rs, y_rs)
i = 0
for r in resolutions:
if resolution > r:
if i == 0:
return 0
return i - 1
i += 1
# Otherwise return the highest available resolution
return i - 1