Gravel
Getting Started
Installation
conda (recommended)
pip
macOS
Debian / Ubuntu
RHEL / Fedora
From source
Verify installation
Optional dependencies
Requirements
Troubleshooting
“Could not find libosmium”
Build fails on Windows
Python import fails with “module _gravel not found”
Quick Start
1. Load a road network
From an OSM PBF file (requires libosmium)
From a CSV edge list
Programmatically
2. Build a contraction hierarchy
3. Compute isolation fragility
Interpret the result
4. Assign regions and analyze counties
5. Scenario analysis
6. Progressive elimination
Next Steps
User Guide
Gravel — Product Requirements Document
Executive Summary
Problem Statement
Users and Use Cases
Primary users
Primary use cases
Architecture Overview
Sub-library structure
Core data model
Analysis pipeline
Functional Requirements
FR-1: Graph Loading
FR-2: Routing
FR-3: Fragility Analysis
FR-4: Geographic Analysis
FR-5: US-Specific Support
FR-6: Python Bindings
Non-Functional Requirements
Performance
Quality
Portability
Documentation
Key Design Decisions
DD-1: Reverse-incremental SSSP over forward approach
DD-2: Simplify before analyze
DD-3: Sample-based scoring
DD-4: Composite score formula
DD-5: Graph coarsening for inter-county
Version History
v2.1 (April 2026) — Current
v2.0
v1.0
Future Work
Short term
Medium term
Long term
Non-Goals
API Reference
Python API Reference
Core
Routing
Fragility
Route Fragility
Location Fragility
County Fragility
Scenario Fragility
Progressive Elimination
Network Analysis
Geographic Analysis
Region Assignment
Border Edges & Coarsening
US-Specific (TIGER/FIPS)
OSM Loading (optional)
Edge Sampling
Snapping & Elevation
Gravel
Index
Index