libOpenDRIVE est une bibliothèque C++ légère, sans dépendance et rapide permettant l'analyse de fichiers OpenDRIVE et la génération de modèles 3D.
Il est petit et peut être facilement intégré à d’autres projets. Une fonction essentielle est l'analyse des fichiers OpenDRIVE et la génération de modèles 3D. La bibliothèque cible OpenDRIVE version 1.4.
Voici un exemple de l'apparence du code utilisant libOpenDRIVE. Pour un exemple plus complet, reportez-vous à tests/test.cpp.
// load map
odr::OpenDriveMap odr_map ( " tests/test.xodr " );
// iterate roads
for (odr::Road road : odr_map.get_roads())
std::cout << " road: " << road.id << " length: " << road.length << std::endl;
// get xyz point for road coordinates
odr::Road odr_road = odr_map.get_road( " 17 " );
odr::Vec3D pt_xyz = odr_road.get_xyz( 2.1 /* s */ , 1.0 /* t */ , 0.0 /* h */ );
// access road network attributes
std::string lane_type = odr_road.get_lanesection( 0.0 ).get_lane(- 1 ).type;
// use routing graph
odr::RoutingGraph routing_graph = odr_map.get_routing_graph();
odr::LaneKey from ( " 17 " /* road id */ , 0.0 /* lane section s0 */ , 1 /* lane id */ );
odr::LaneKey to ( " 41 " , 0.0 , - 1 );
std::vector<odr::LaneKey> path = routing_graph.shortest_path(from, to);
// get road network mesh
odr::RoadNetworkMesh road_network_mesh = odr_map.get_road_network_mesh( 0.1 /* eps */ );
std::cout << road_network_mesh.get_mesh().get_obj() << std::endl;
Pour créer une bibliothèque statique par défaut, exécutez simplement :
mkdir build
cd build
cmake ..
make
Si vous avez besoin d'une bibliothèque partagée, utilisez :
cmake -DBUILD_SHARED_LIBS=ON ..
Découvrez la visionneuse sur odrviewer.io qui utilise cette bibliothèque. Utilisez le projet odrviewer pour publier des problèmes et des demandes de fonctionnalités pour odrviewer.io.
Info : les liaisons Viewer et WebAssembly ne font plus partie de ce projet. Il s'agit de se concentrer davantage sur les fonctionnalités de la bibliothèque et d'éviter d'avoir à maintenir les liaisons à jour. Utilisez la version 0.3.0 pour obtenir la dernière version qui inclut toujours les liaisons Viewer et WebAssembly.