Add out of bounds fetching
This commit is contained in:
parent
c85fe82e24
commit
8a8df2ebfa
2 changed files with 16 additions and 0 deletions
|
|
@ -12,6 +12,10 @@ from pipeline.config import (
|
||||||
DEFAULT_MAX_PRICE,
|
DEFAULT_MAX_PRICE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Extra area to return beyond requested bounds (0.2 = 20%)
|
||||||
|
# Makes panning smoother by preloading nearby hexagons
|
||||||
|
BOUNDS_BUFFER_PERCENT = 0.2
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"AGGREGATES_DIR",
|
"AGGREGATES_DIR",
|
||||||
"VALID_RESOLUTIONS",
|
"VALID_RESOLUTIONS",
|
||||||
|
|
@ -22,4 +26,5 @@ __all__ = [
|
||||||
"DEFAULT_MAX_YEAR",
|
"DEFAULT_MAX_YEAR",
|
||||||
"DEFAULT_MIN_PRICE",
|
"DEFAULT_MIN_PRICE",
|
||||||
"DEFAULT_MAX_PRICE",
|
"DEFAULT_MAX_PRICE",
|
||||||
|
"BOUNDS_BUFFER_PERCENT",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ from server.config import (
|
||||||
DEFAULT_MAX_YEAR,
|
DEFAULT_MAX_YEAR,
|
||||||
DEFAULT_MIN_PRICE,
|
DEFAULT_MIN_PRICE,
|
||||||
DEFAULT_MAX_PRICE,
|
DEFAULT_MAX_PRICE,
|
||||||
|
BOUNDS_BUFFER_PERCENT,
|
||||||
)
|
)
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
@ -138,6 +139,16 @@ async def get_hexagons(
|
||||||
status_code=400, detail="Invalid bounds format. Use: south,west,north,east"
|
status_code=400, detail="Invalid bounds format. Use: south,west,north,east"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Expand bounds by buffer percentage for smoother panning
|
||||||
|
lat_range = north - south
|
||||||
|
lng_range = east - west
|
||||||
|
lat_buffer = lat_range * BOUNDS_BUFFER_PERCENT
|
||||||
|
lng_buffer = lng_range * BOUNDS_BUFFER_PERCENT
|
||||||
|
south -= lat_buffer
|
||||||
|
north += lat_buffer
|
||||||
|
west -= lng_buffer
|
||||||
|
east += lng_buffer
|
||||||
|
|
||||||
# Round bounds to reduce cache misses (0.01 degree ≈ 1km precision)
|
# Round bounds to reduce cache misses (0.01 degree ≈ 1km precision)
|
||||||
# Always expand bounds (floor for min, ceil for max) to prevent hexagons
|
# Always expand bounds (floor for min, ceil for max) to prevent hexagons
|
||||||
# popping in when crossing rounding boundaries
|
# popping in when crossing rounding boundaries
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue