libOpenDRIVE عبارة عن مكتبة C++ خفيفة الوزن وخالية من التبعية وسريعة توفر تحليل ملفات OpenDRIVE وإنشاء نماذج ثلاثية الأبعاد.
إنها صغيرة ويمكن دمجها بسهولة في مشاريع أخرى. تتمثل الوظيفة الأساسية في تحليل ملفات OpenDRIVE وإنشاء نماذج ثلاثية الأبعاد. تستهدف المكتبة الإصدار 1.4 من OpenDRIVE.
فيما يلي مثال لكيفية ظهور التعليمات البرمجية باستخدام libOpenDRIVE. للحصول على مثال أكثر اكتمالا، راجع الاختبارات/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;
لإنشاء مكتبة ثابتة بشكل افتراضي، قم ببساطة بتشغيل:
mkdir build
cd build
cmake ..
make
إذا كنت بحاجة إلى مكتبة مشتركة، استخدم:
cmake -DBUILD_SHARED_LIBS=ON ..
تحقق من العارض على odrviewer.io الذي يستخدم هذه المكتبة. استخدم مشروع odrviewer لنشر المشكلات وطلبات الميزات لـ odrviewer.io.
معلومات: لم تعد روابط Viewer وWebAssembly جزءًا من هذا المشروع. يهدف هذا إلى التركيز بشكل أكبر على وظائف المكتبة وتجنب الاضطرار إلى تحديث الارتباطات. استخدم الإصدار 0.3.0 للحصول على الإصدار الأخير الذي لا يزال يتضمن روابط Viewer وWebAssembly.