iduedu.get_public_transport_graph

iduedu.get_public_transport_graph(*, osm_id=None, territory=None, transport_types=None, clip_by_territory=False, keep_edge_geometry=True, osm_edge_tags=None, transport_registry=None)[source]

Build a directed public-transport graph for one or multiple transport modes within a territory.

The function resolves a boundary (by osm_id or territory), downloads OpenStreetMap public-transport routes inside that boundary, converts them into a projected nx.DiGraph, and computes per-edge length (meters) and travel time (minutes). Multiple modes can coexist in the same graph; node ids are unified across modes.

For the subway mode, additional station context may be added (entrances/exits and inter-station transfers), and available station metadata may be merged into node attributes.

Parameters:
  • osm_id (int | None) – OSM relation/area id of the territory. Provide this or territory.

  • territory (Polygon | MultiPolygon | GeoDataFrame | None) – Boundary geometry in EPSG:4326 (or a GeoDataFrame). Used when osm_id is not given.

  • transport_types (str | list[str] | None) –

    Transport mode(s) to include. Accepts:
    • None: include all types available in transport_registry.rst;

    • str: a single OSM route type, e.g. "bus";

    • Sequence[str]: multiple types, e.g. ["tram", "bus", "trolleybus", "subway"].

    Values are normalized with strip().lower() and validated against the registry.

  • clip_by_territory (bool) – If True, clip the resulting graph to the boundary (in the local CRS).

  • keep_edge_geometry (bool) – If True, store shapely geometries (in local CRS) on edges.

  • osm_edge_tags (list[str] | None) – Subset of OSM tags to retain on edges/nodes. If None, a default subset is used.

  • transport_registry (TransportRegistry | None) – Transport registry used to validate transport types and to compute per-edge travel times (via each mode’s parameters such as max speed, acceleration/braking distances, and traffic coefficient). If None, DEFAULT_REGISTRY is used.

Returns:

  • node attrs: x, y (local CRS), type, route, ref_id, plus optional station metadata;
    • edge attrs: type, route, length_meter, time_min, optional geometry, and selected OSM tags.

Graph attrs typically include: graph["crs"] (EPSG int), graph["type"] = "public_transport".

Return type:

Directed PT graph (nx.DiGraph) with