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.
This commit is contained in:
Sirius DevOps 2026-08-27 21:16:53 -04:00
parent fdd59052c5
commit 9c14b899ee
2 changed files with 15 additions and 2 deletions

View file

@ -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))

View file

@ -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"