{"id":28960494,"url":"https://github.com/jensklimke/odrparser","last_synced_at":"2026-03-09T15:03:44.473Z","repository":{"id":194750615,"uuid":"183792443","full_name":"JensKlimke/odrparser","owner":"JensKlimke","description":"A very simple OpenDRIVE parser","archived":false,"fork":false,"pushed_at":"2020-09-23T21:33:32.000Z","size":98,"stargazers_count":16,"open_issues_count":3,"forks_count":9,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-24T01:37:57.671Z","etag":null,"topics":["map","opendrive","parser","simulation"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JensKlimke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-27T15:49:19.000Z","updated_at":"2024-03-22T06:04:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0e989e1-b8c6-438c-836b-369341a53085","html_url":"https://github.com/JensKlimke/odrparser","commit_stats":null,"previous_names":["jensklimke/odrparser"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/JensKlimke/odrparser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JensKlimke%2Fodrparser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JensKlimke%2Fodrparser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JensKlimke%2Fodrparser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JensKlimke%2Fodrparser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JensKlimke","download_url":"https://codeload.github.com/JensKlimke/odrparser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JensKlimke%2Fodrparser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30299877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T14:33:48.460Z","status":"ssl_error","status_checked_at":"2026-03-09T14:33:48.027Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["map","opendrive","parser","simulation"],"created_at":"2025-06-24T01:30:29.924Z","updated_at":"2026-03-09T15:03:44.445Z","avatar_url":"https://github.com/JensKlimke.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# odrparser\nA very simple OpenDRIVE parser\n\n[![Build Status](https://travis-ci.com/JensKlimke/odrparser.svg?branch=master)](https://travis-ci.com/JensKlimke/odrparser)\n\n## Motivation\n\nThere are several self-driven parser for OpenDRIVE. The problem with that is, that features are missing or missinterpreted. I used a script to parse the scheme file available on the [OpenDRIVE website](http://www.opendrive.org/download.html) and auto-generate code from that scheme. The output is a very simple header file. \n\nWhat it is: It's a parser (a XML file content to data structure in memory converter) for the OpenDRIVE specification 1.5 Revision M. \n\nWhat it isn't: It's not a OpenDRIVE interpreter: It does not link IDs with it associated objects. It is also not an OpenDRIVE generator (currently you cannot save the content to an XML file.). It is also not a parser for any other version of OpenDRIVE (note that OpenDRIVE 1.6 became an official standard by [ASAM e.V.](https://www.asam.net/standards/detail/opendrive/))\n\nODR header file: ```include/odr/odr1_5_structure.h```. \n\n## Installation\n\nJust add_subdirectory it in cmake if you want to use the library in your project:\n\n    // CmakeLists.txt\n    ...\n    add_subdirectory(\u003cpath to library root\u003e)\n    ...\n    \nYou don't need to set any options. If the ``BUILD_TESTS`` option is set, you should unset it before adding the subdirectory. The ``odrparser`` target is a static library.\n\nTo create and run the tests, use cmake in the terminal:\n\n    \u003e cd \u003csource folder\u003e\n    \u003e mkdir build \u0026\u0026 cd build\n    \u003e cmake -DBUILD_TESTS=ON ..\n    \u003e make \n    \u003e make test\n    ...\n    \nTo create the tests set ``-DBUILD_TESTS=ON``. Googletest need to be installed on your system. If you don't have googletest clone googletest (https://github.com/google/googletest.git) into the root folder of the project and set the option ``-DBUILD_GTESTS=ON``. \n    \n## Usage\n\nTo access the content of the data structure, you can use the function ``odr::loadFile(\u003cfilename\u003e, \u003ccontainer\u003e)``. The function will load the ODR content from the file into the container, which shall be an instance of the class ``odr::OpenDRIVEFile``. Of course you can derive your own class, instantiate it and use it as the container.\n\nSample code:\n\n    // create container instance\n    odr::OpenDRIVEFile odrData;\n    \n    // load xml file content to container (replace \u003c...\u003e by the file name)\n    odr::loadFile(\u003cfilename.xml\u003e, odrData); \n    \n    // pointer to the ODR data\n    odr1_5::OpenDRIVE *odrr = odrFile.OpenDRIVE1_5.get();\n   \n    // access the header\n    const auto header = odrr-\u003esub_header.get();\n    std::cout \u003c\u003c *header-\u003e_date \u003c\u003c std::endl; // e.g. \"Thu Feb  8 14:24:06 2007\"\n    \n    // access the roads vector\n    const auto \u0026roads = odrr-\u003esub_road;\n    std::cout \u003c\u003c roads.size() \u003c\u003c std::endl; // e.g. 36\n    \n    // access a single road content\n    const auto \u0026rd = odrr-\u003esub_road.front();\n    std::cout \u003c\u003c rd.sub_lanes-\u003esub_laneSection.size() \u003c\u003c std::endl; // e.g. 1\n    \nTo learn more about the OpenDRIVE structure read [this](http://www.opendrive.org/docs/OpenDRIVEFormatSpecRev1.5M.pdf).\n\n## Used Libraries\n\n* TinyXML2 - TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs. (https://github.com/leethomason/tinyxml2, )\n* Googletest - Google Testing and Mocking Framework (https://github.com/google/googletest.git)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjensklimke%2Fodrparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjensklimke%2Fodrparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjensklimke%2Fodrparser/lists"}