Isolysis — Isochrone Analysis & Spatial Access
Modular Python package for multi-center, multi-distance isochrone analysis with POI coverage, intersection metrics, and interactive web interface.
🗺️ Isolysis is a modular, production-grade Python package for calculating and analysing isochrones — the reachable area from a point within a given travel time.
It combines multi-center, multi-distance analysis with interactive mapping and comprehensive spatial statistics.
✨ Key Features
🧮 Core Analysis
- Multi-center isochrones: Multiple origins, each with custom travel times.
- Time banding: Automatic bands (e.g., equally spaced (1-5)).
- POI coverage analysis: Count points of interest within each band.
- Intersection analysis: Identify overlaps between service areas.
- Out-of-band detection: Find POIs not covered by any isochrone.
🧭 Multiple Routing Providers
- OSMnx – free, global coverage (drive/walk/bike)
- Mapbox – high-performance routing with real traffic data
- Iso4App – detailed European coverage, multiple modes
🖥️ Interfaces
- Interactive Web App: Streamlit-based, click-to-add centers, real-time visualisation, spatial analysis dashboard.
- ⚡ REST API: FastAPI backend for programmatic access, GeoJSON/statistics outputs.
⚙️ Technical Highlights
- Python 3.12+, Pydantic, async processing
- Scientific colormaps via Matplotlib
- Caching and efficient spatial operations
- Comprehensive pytest test suite
🖼️ Gallery
🌐 Example isochrones for different cities and modes, computed and visualised with isolysis.
Left: Example Streamlit App with POIs in ESA.
Middle: City of London.
Right: Singapore.
Left: Example Streamlit App with POIs in ESA.
Middle: City of London.
Right: Singapore.