From 9c14b899ee1214f68e719c87bed4753af63753f1 Mon Sep 17 00:00:00 2001 From: Sirius DevOps Date: Thu, 27 Aug 2026 21:16:53 -0400 Subject: [PATCH] perf: simplify WFIGS perimeter geometry at query time Ask ArcGIS for 500 features, 5-decimal precision, and ~250m offset so fire rings are outlines instead of tens of thousands of vertices. --- app/live_layers.py | 6 ++++-- tests/test_live_layers.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/live_layers.py b/app/live_layers.py index 9dce0b5..aeb9736 100644 --- a/app/live_layers.py +++ b/app/live_layers.py @@ -597,12 +597,14 @@ async def upsert_vessel(marker: dict) -> None: } -def _wfigs_params(bbox: str | None) -> dict: +def _wfigs_params(bbox: str | None, *, offset_m: float = 250.0) -> dict: params = { "where": "1=1", "outSR": "4326", "f": "geojson", - "resultRecordCount": 2000, + "resultRecordCount": 500, + "maxAllowableOffset": offset_m / 111_320.0, # metres → degrees + "geometryPrecision": 5, } if bbox: minlon, minlat, maxlon, maxlat = quantize_bbox(*parse_bbox(bbox)) diff --git a/tests/test_live_layers.py b/tests/test_live_layers.py index bb6f183..fedf6dd 100644 --- a/tests/test_live_layers.py +++ b/tests/test_live_layers.py @@ -351,3 +351,14 @@ def test_slim_alert_properties_keeps_popup_fields_only(): "wfo": "RAH", "source": "nws", } + + +def test_wfigs_params_requests_simplified_geometry(): + params = _wfigs_params("-84.5,33.8,-75.4,36.6") + assert "maxAllowableOffset" in params + assert float(params["maxAllowableOffset"]) > 0 + assert params["geometryPrecision"] == 5 + assert int(params["resultRecordCount"]) <= 500 + # Envelope is the quantized cell, not the raw pan box. + geom = params["geometry"] + assert geom != "-84.5,33.8,-75.4,36.6"