A simple python script to convert OpenDrive file to OpenStreetMap file.
The parser samples the roads in the OpenDrive road network that are expressed analytically, storing key nodes required by the OSM format at appropriate intervals, and connecting the nodes in straight lines in a logical form.
To use the converter, you should put your OpenDRIVE file in the resource folder, and run Converter.py
usage: Converter.py/Converter_to_csv.py/Converter_center.py [-h] [--debug DEBUG] [--input_file INPUT_FILE]
[--scale SCALE] [--precise PRECISE]
[--output_file OUTPUT_FILE]
Converter.py:convert to osm file
Converter_to_csv.py:convert to Semantic road map ,two files,main_lane and lanes
Converter_center.py:convert to Road centerline(Not tested yet)
A random road generator
optional arguments:
-h, --help show this help message and exit
--debug DEBUG Is using debug mode
--input_file INPUT_FILE
Input OpenDRIVE file name
--scale SCALE Scale of xodr file (in meter)
--precise PRECISE Precision of OSM file (in meter)
--output_file OUTPUT_FILE
Output OSM file name
For example, you may use the example OpenDRIVE file (named example.xodr
) in ./resources/
.
pip install -r requirements.txt # install the dependencies
cd src
python Converter.py # run using default parameters
# which is equal to python Converter.py --input_file=example.xodr --output_file=example.osm
and you will see:
Namespace(debug=False, input_file='example.xodr', output_file='example.osm', precise=0.1, scale=10000)
Start converting file...
Reading OpenDrive file: ../resource/example.xodr
Converting...
Processing road_id=109: 100%|################################| 98/98 [00:00<00:00, 1863.52it/s]
All done
python=3.7.3
geompreds==1.0.2
lxml==4.5.2
matplotlib==3.3.0
numpy==1.19.0
Pillow==7.2.0
Pyqtree==1.0.0
scipy==1.5.1
tqdm==4.48.0
pyproj==3.2.1