A visual tool for creating or editing ASAM OpenDRIVE 1.8 road networks from aerial imagery.
Note
This open source project is maintained by RISE Research Institutes of Sweden. See LICENSE file for open source license information.
Note
This is a beta version. Bugs and missing features should be expected. Github issues can be added for bug reports or feature requests.
- Features
- Installation
- Quick Start
- Documentation
- Related Packages
- Project Structure
- Development
- License
- Interactive polyline drawing on aerial/satellite/drone images
- Centerline and lane boundary distinction with road mark types (solid, broken, etc.)
- Lane sections for roads where lane configuration changes
- Road splitting and merging for flexible network editing
- Data-driven road marks from actual annotated line types
- OpenDRIVE 1.8 lane attributes (direction, advisory)
- Junction annotation with drag-and-drop positioning
- Roundabout wizard for creating circular intersections
- Connecting roads with proper geometric paths through junctions
- Lane-level connections with explicit lane-to-lane mappings
- Automatic connection generation from road geometry
- OpenStreetMap import via Overpass API (roads, signals, junctions, objects)
- OpenDRIVE import for editing existing .xodr files (round-trip support)
- Control point system for pixel-to-geographic transformation
- CSV import for batch control points
- Monte Carlo uncertainty analysis with visualization
- Validation metrics with reprojection error
- ASAM OpenDRIVE 1.8 XML format
- XSD schema validation against official ASAM schema (download)
- Configurable geometry — preserve all points or fit curves
- Geographic reference with PROJ4 projection string
- Complete junction export with connecting roads and lane links
# Install uv if needed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/RI-SE/ORBIT.git
cd ORBIT
uv syncpython3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .# Start with an image
orbit path/to/aerial_image.jpg
# Start empty (load image via File menu)
orbit
# Enable verbose logging
orbit --verbose
# Enable XSD schema validation for exports
orbit --xodr_schema /path/to/OpenDRIVE_Core.xsdNote: After installation with
uv syncorpip install -e ., theorbitcommand is available directly. Alternatively, useuv run orbitorpython run_orbit.py.
- Load image — File → Load Image or pass path on command line
- Add control points — Tools → Georeferencing (minimum 4 points (oblique imagery) or 3 (nadir imagery))
- Import or draw — Either import an existing map from OpenStreetMap or OpenDRIVE, or draw roads directly in ORBIT.
- Edit — Edit roads. Add signs, parkings, and objects.
- Export — File → Export → Export to OpenDrive
| Guide | Description |
|---|---|
| User Guide | Complete user guide with workflow, tips, and keyboard shortcuts |
| Georeferencing Guide | Control points and uncertainty analysis |
| OSM Import Guide | OpenStreetMap import feature |
| Validation Guide | Validation metrics and uncertainty estimation |
| Developer Guide | Architecture and contribution guidelines |
Standalone Python library for pixel↔geo coordinate transformation. Use it to work with ORBIT's georeferencing outside the GUI — for example, converting pixel coordinates to lat/lon in scripts or downstream tooling. Install separately with pip install orbit-georef. See orbit-georef/README.md for details.
orbit/
├── models/ # Data models (Road, Polyline, Junction, ParkingSpace, Signal, etc.)
├── gui/ # PyQt6 GUI (MainWindow, ImageView, dialogs, widgets)
├── export/ # OpenDRIVE XML generation (writers, builders)
├── import_/ # OSM and OpenDRIVE importers
├── signs/ # Traffic sign libraries (country-specific)
└── utils/ # Coordinate transforms, geometry utilities
orbit-georef/ # Standalone georeferencing library (separate package)
Projects save as .orbit JSON files containing:
- Image path and metadata
- Polylines (pixel coordinates)
- Roads with lane sections
- Junctions with connections and junction groups
- Control points for georeferencing
- Signals and roadside objects
- Parking spaces
# Install with dev dependencies
uv sync --extra dev
# Run tests
uv run python -m pytest tests/ -v- PyQt6 — GUI framework
- NumPy/SciPy — Geometry and transformations
- lxml — XML generation
- pyproj — Coordinate projections
- xmlschema — OpenDRIVE XSD validation
See Developer Guide for architecture details.
The main ORBIT project is licensed under the GNU General Public License v3.0 (GPL-3.0).
The separate library orbit-georef (located in orbit-georef/) is licensed under the MIT License, allowing for more permissive use in downstream projects.
Main ORBIT project (runtime):
- PyQt6 - GPL v3 (commercial license available)
- PyQt6-Qt6 - LGPL v3 (Qt framework bindings)
- opencv-python - Apache 2.0
- NumPy - BSD 3-Clause License
- SciPy - BSD 3-Clause License
- lxml - BSD 3-Clause License
- pyproj - MIT License
- xmlschema - MIT License
Main ORBIT project (development, optional):
- pytest - MIT License
- pytest-cov - MIT License
- pytest-mock - MIT License
- ruff - MIT License
orbit-georef library (runtime):
- NumPy - BSD 3-Clause License
- pyproj - MIT License
orbit-georef library (development, optional):
- pytest - MIT License
- pytest-cov - MIT License
This package is developed as part of the SYNERGIES project.
Funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or European Climate, Infrastructure and Environment Executive Agency (CINEA). Neither the European Union nor the granting authority can be held responsible for them.

