You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Major cities layer (sa_major_cities.parquet) — 220 major Saudi cities with grade, amana, and alternate names
MajorCityInfo type — Exported interface with id, name_ar, name_en, alt_name_ar, alt_name_en, city_type, city_grade, amana_id, amana_name_ar, amana_name_en, distance_m
major_city field in AdminHierarchy — 4th LATERAL JOIN in getAdminHierarchy() returns nearest major city (no distance limit, only 220 rows)
distance_m on settlement and major_city — Haversine distance in meters from query point to nearest settlement/major city
Changed
Settlement search widened to ±0.5° (~55km) — Was ±0.1° (~11km), causing NULL results in rural/desert areas
Major city search has no distance limit — Removed bbox filter entirely (220 rows, <1ms full scan); always returns nearest major city within Saudi Arabia
Settlement and major_city gated on municipality — Results only populated when point falls inside a Saudi municipality polygon, preventing leakage to other countries
Eager loading of all boundary tables — All 5 tables (world_countries, municipalities, districts, settlements, major_cities) loaded in parallel during initialize() instead of lazy loading on first getAdminHierarchy() call. Total ~2MB — too small to justify lazy loading