Spaces:
Sleeping
Sleeping
| """Compile the downloaded GTFS feed(s) into a serialized RAPTOR network. | |
| Usage: python scripts/build_network.py | |
| Output: data/processed/network.pkl (consumed by the API server / engine) | |
| """ | |
| from __future__ import annotations | |
| import pickle | |
| import sys | |
| import time | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) | |
| from config import DATA_PROCESSED, NETWORK_FILE, SERVICE_DATE # noqa: E402 | |
| from engine.gtfs import build_network # noqa: E402 | |
| from scripts.apply_metro_geometry import apply_metro_geometry # noqa: E402 | |
| def main() -> None: | |
| t0 = time.time() | |
| net = build_network(target_date=SERVICE_DATE) | |
| # swap the coarse GTFS metro shapes for accurate OSM geometry (no-op if the | |
| # geometry file is missing — fetch it with scripts/fetch_metro_geometry.py) | |
| apply_metro_geometry(net) | |
| DATA_PROCESSED.mkdir(parents=True, exist_ok=True) | |
| with open(NETWORK_FILE, "wb") as f: | |
| pickle.dump(net, f, protocol=pickle.HIGHEST_PROTOCOL) | |
| size_mb = NETWORK_FILE.stat().st_size / 1e6 | |
| print(f"Wrote {NETWORK_FILE} ({size_mb:.1f} MB) in {time.time()-t0:.1f}s") | |
| if __name__ == "__main__": | |
| main() | |