IduEdu is a Python package for the creation and manipulation of complex city networks from OpenStreetMap.
Project description
IduEdu
IduEdu is an open‑source Python toolkit for building and analyzing multi‑modal city networks from OpenStreetMap data.
It downloads OSM data via Overpass, constructs drive, walk, and public transport graphs, and can join them into an intermodal network.
The package also includes fast matrix tools to compute large origin–destination matrices.
Documentation
Features
- Graph Builders
get_drive_graph— driving network with speeds & categoriesget_walk_graph— pedestrian network (bi‑directional)get_all_public_transport_graph/get_single_public_transport_graph— bus, tram, trolleybus, subwayget_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 Dijkstraget_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")
Overpass caching
IduEdu now supports optional file-based caching of Overpass responses to reduce network calls and speed up repeated queries. The cache stores JSON responses for boundary, network, routes and member requests.
-
Defaults
- caching is enabled by default
- default cache directory: .iduedu_cache (relative to the working directory)
-
Configure cache at runtime
# disable cache entirely
config.set_overpass_cache(enabled=False)
# change cache directory and enable
config.set_overpass_cache(cache_dir="/var/tmp/iduedu_overpass_cache", enabled=True)
-
Environment variables (alternative to runtime config)
- OVERPASS_CACHE_DIR — path to cache directory (e.g. /tmp/overpass_cache)
- OVERPASS_CACHE_ENABLED — "0" / "false" to disable, any other value enables
-
Notes
- The cache only stores raw Overpass JSON responses (not derived graphs).
- To force fresh downloads, either remove the cache files in the cache directory or disable caching for the run using
config.set_overpass_cache(enabled=False).
Historical snapshots
You can fix queries to a specific OSM snapshot using the Overpass date parameter.
This allows retrieving map data as it existed at a given moment in time.
# Specific day
config.set_overpass_date(date="2020-01-01")
# Or build from components
config.set_overpass_date(year=2020) # → 2020-01-01T00:00:00Z
config.set_overpass_date(year=2020, month=5) # → 2020-05-01T00:00:00Z
To reset and use the latest data again:
config.set_overpass_date() # or config.set_overpass_date(None)
When a historical date is set, complex subway stop-area relations are skipped automatically (as Overpass may not support those at arbitrary timestamps). A warning is logged in such cases.
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
- NCCR - National Center for Cognitive Research
- IDU - Institute of Design and Urban Studies
- Natalya Chichkova - project manager
- Danila Oleynikov (Donny) - lead software engineer
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...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iduedu-1.2.1.tar.gz.
File metadata
- Download URL: iduedu-1.2.1.tar.gz
- Upload date:
- Size: 53.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.14 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55b5dd6b51aa09cb87366190df706609a773908819f63a7b0b3fcf01423d51af
|
|
| MD5 |
6dbe8caa8fa5657844abad99582988b2
|
|
| BLAKE2b-256 |
2b7e7156e3219121581b0d730036e285c509279b03fcfd72fba32c2a3e4dc687
|
File details
Details for the file iduedu-1.2.1-py3-none-any.whl.
File metadata
- Download URL: iduedu-1.2.1-py3-none-any.whl
- Upload date:
- Size: 58.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.14 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c634ecb4f6bde38b9cdc7693bea1fe68a43cf43ae86646d3f47bcf9cf7256540
|
|
| MD5 |
0c82fdf70c717729ce4979d1bd568160
|
|
| BLAKE2b-256 |
aba9a1d6e1e6a85e8b44ebfa66c5005ff3d0e654f21be5cb7bf94ef115aa1e49
|