IduEdu is an open-source Python library for the creation and manipulation of complex city networks from OpenStreetMap.

Code style: black PyPI version CI Coverage License GitHub


Features

  • Graph Builders

    • get_drive_graph — driving network with speeds & categories

    • get_walk_graph — pedestrian network (bi‑directional)

    • get_all_public_transport_graph / get_single_public_transport_graph — bus, tram, trolleybus, subway

    • get_intermodal_graph — compose PT + walk with platform snapping

  • Geometry & CRS Correctness

    • Local UTM estimation for accurate metric lengths

    • Safe graph ↔ GeoDataFrame conversion; optional geometry restoration

  • Matrices

    • get_adj_matrix_gdf_to_gdf — OD matrices by length/time using Numba accelerated Dijkstra

    • get_closest_nodes — nearest node snapping

  • Utilities

    • clip_nx_graph, reproject_graph, read_gml/write_gml, etc.


Installation

pip install iduedu

Requires Python 3.10+ and common geospatial stack (GeoPandas, Shapely, PyProj, NetworkX, NumPy, Pandas).


Quickstart

1) Build an intermodal graph


from iduedu import get_intermodal_graph

# Define a territory (use OSM relation id or a shapely polygon/geodataframe)
G = get_intermodal_graph(osm_id=1114252)  # e.g., Saint Petersburg, Vasileostrovsky District

2) Compute an OD matrix (time or length)

import geopandas as gpd
from iduedu import get_adj_matrix_gdf_to_gdf

# origins/destinations can be any geometries; representative points are used
origins = gpd.GeoDataFrame(geometry=[...], crs=...)
destinations = gpd.GeoDataFrame(geometry=[...], crs=...)

M = get_adj_matrix_gdf_to_gdf(
    origins, destinations, G, weight="time_min", dtype="float32", threshold=None
)
print(M.head())


Configuration

Tweak Overpass endpoint, timeouts, and rate limits globally:

from iduedu import config

config.set_overpass_url("https://overpass-api.de/api/interpreter")
config.set_timeout(120)
config.set_rate_limit(min_interval=1.0, max_retries=3, backoff_base=0.5)

# Optional progress bars and logging
config.set_enable_tqdm(True)
config.configure_logging(level="INFO")

IduEdu respects Overpass API etiquette. Please keep sensible rate limits.


Roadmap / Ideas

  • More PT modes and GTFS import

  • Caching of Overpass responses

  • Richer edge attributes (e.g., elevation, turn costs)

Contributions and ideas are welcome! Please open an issue or PR.


Contacts


Acknowledgments

Реализовано при финансовой поддержке Фонда поддержки проектов Национальной технологической инициативы в рамках реализации “дорожной карты” развития высокотехнологичного направления “Искусственный интеллект” на период до 2030 года (Договор № 70-2021-00187)

This research is financially supported by the Foundation for National Technology Initiative’s Projects Support as a part of the roadmap implementation for the development of the high-tech field of Artificial Intelligence for the period up to 2030 (agreement 70-2021-00187)


License

This project is open‑source. See the LICENSE file for details.


Publications

Coming soon…