"""Map 100m grid_id (r{row}_c{col}) → Wuhan district name.""" from functools import lru_cache import pandas as pd from config import PROJECT_ROOT @lru_cache(maxsize=1) def grid_district_lookup() -> dict[str, str]: """Loaded once from processed/grid_district_mapping.parquet.""" path = PROJECT_ROOT / "processed" / "grid_district_mapping.parquet" if not path.exists(): return {} df = pd.read_parquet(path) df = df.dropna(subset=["district_name"]) return dict(zip(df["grid_id"].astype(str), df["district_name"].astype(str))) def district_for_grid(grid_id: str, default: str = "其他") -> str: return grid_district_lookup().get(grid_id, default)