Transport registry

Transport registries define public-transport mode parameters used to estimate edge travel time.

# To install IduEdu in a clean environment:
# !pip install IduEdu

OSM_ID = 1114252
from iduedu import DEFAULT_REGISTRY, DEFAULT_REGISTRY_W_TRAIN

print(DEFAULT_REGISTRY.list_types())
print(DEFAULT_REGISTRY_W_TRAIN.list_types())
['bus', 'trolleybus', 'tram', 'subway']
['bus', 'trolleybus', 'tram', 'subway', 'train']

Inspect a transport specification

Each TransportSpec stores speed, acceleration, braking, and traffic parameters for one mode.

bus = DEFAULT_REGISTRY.get("bus")
print(bus)
print("Travel time for 800 m:", round(bus.travel_time_min(800), 2), "min")
TransportSpec(name='bus', vmax_tech_kmh=90, accel_dist_m=700, brake_dist_m=650, traffic_coef=0.7)
Travel time for 800 m: 2.57 min

Create a custom registry

Use a custom registry when you need project-specific speed assumptions or additional transport modes.

from iduedu import TransportRegistry, TransportSpec

registry = TransportRegistry()
registry.add(
    TransportSpec(
        name="bus",
        vmax_tech_kmh=80,
        accel_dist_m=220,
        brake_dist_m=160,
        traffic_coef=0.7,
    )
)
registry.add(
    TransportSpec(
        name="tram",
        vmax_tech_kmh=70,
        accel_dist_m=180,
        brake_dist_m=140,
        traffic_coef=0.85,
    )
)

registry.list_types()
['bus', 'tram']

Update, ensure, and remove specs

Names are normalized internally. ensure creates a missing mode from defaults when needed.

registry.update("bus", traffic_coef=0.65)
registry.ensure("ferry")
registry.remove("ferry")

registry.get("bus")
TransportSpec(name='bus', vmax_tech_kmh=80, accel_dist_m=220, brake_dist_m=160, traffic_coef=0.65)

Use a registry in graph construction

Pass the registry to public-transport builders through transport_registry.

from iduedu import get_public_transport_graph

G_pt_custom = get_public_transport_graph(
    osm_id=OSM_ID,
    transport_types=["bus", "tram"],
    transport_registry=registry,
    clip_by_territory=True,
)

G_pt_custom
UrbanGraph(nodes=935, edges=2056, is_multigraph=True, is_directed=True, edge_direction_column='oneway', crs='EPSG:32636', type='public_transport')