https://github.com/asmaloney/libe57format
Library for reading & writing the E57 file format
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.0%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Library for reading & writing the E57 file format
Basic Info
Statistics
- Stars: 147
- Watchers: 7
- Forks: 70
- Open Issues: 25
- Releases: 11
Topics
Metadata Files
README.md
libE57Format
libE57Format is a C++ library which provides read & write support for the ASTM-standard E57 file format on Linux, macOS, and Windows. E57 files store 3D point cloud data (produced by 3D imaging systems such as laser scanners), attributes associated with 3D point data (color & intensity), and 2D images (photos taken using a 3D imaging system).
Documentation
The doxygen-generated documentation may be found here. These docs are generated and saved in the libE57Format-docs repo.
Commercial Use
If you are using this library in commercial software, please contribute to the project.
Of course the open source license allows you to just take and not give anything back. It is perfectly Legal, but it is not Right and it's not good for the project.
Over the many years I've worked on this library, I have received precisely zero contributions (PRs, documentation updates, improved testing, financial support) from the many million/billion-dollar companies who use it in their software.
The more companies that leech on Open Source instead of nurturing it, the less healthy & viable the ecosystem is.
Requirements
- a C++14 compatible compiler
- CMake >= 3.15
- clang-format for code formatting
- (optional) ccache to speed up rebuilds
Dependencies
- Xerces-C++ (for parsing XML)
Installing Dependencies On Linux (Ubuntu)
sh
$ sudo apt install libxerces-c-dev clang-format
Installing Dependencies On macOS (homebrew)
sh
$ brew install ccache clang-format xerces-c
Build, Install, & Test
Here's how you build & install a release version with the defaults:
$ cmake -B E57-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=E57-install libE57Format
$ cmake --build E57-build --parallel
$ cmake --install E57-build
If CMake can't find the xerces-c library, you can set CMAKEPREFIXPATH to point at it.
$ cmake -B E57-build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=E57-install \
-DCMAKE_PREFIX_PATH=/path/to/xerces-c \
libE57Format
Once the library is built, you can run the tests like this:
$ cd E57-build
$ ./test/testE57
[==========] Running 36 tests from 8 test suites.
[----------] Global test environment set-up.
[----------] 1 test from TestData
[ RUN ] TestData.RepoExists
...
See test/README for details about testing and the test data.
🍴 Fork (2018)
This is a fork of E57RefImpl. The original source is from E57RefImpl 1.1.332.
The original code had not been touched in several years and I wanted to make changes to compile it on macOS. Forking it gave me more freedom to update the code and make changes as required. Everything was stripped out except the main implementation for reading & writing E57 files.
- I changed the name of the project so that it is not confused with the E57RefImpl project.
- I changed the main include file's name from
E57Foundation.htoE57Format.hto make sure there is no inclusion confusion. - Versions of libE57Format started at 2.0.
- I fixed it to compile and run on macOS.
- It no longer depends on Boost.
- It now requires C++14. (Version 2.x required C++11.)
Many, many other changes were made prior to the first release of this fork, and it has diverged significantly since. See the CHANGELOG and git history for details.
E57Simple API
Jiri Hörner added the E57Simple API from the old reference implementation and updated it.
This Simple API has evolved since this original port to fix some problems and to make it more foolproof & easier to use. Please see the CHANGELOG for version 3.
Projects Using libE57Format
These projects use hard forks of libE57Format:
There are also many commercial products using libE57Format. If any of them would like to sponsor the project and be listed here, please contact Andy.
How To Contribute
These are some of the things you can do to contribute to the project:
💰 Financial
Given that I'm an independent developer without funding, financial support is appreciated. If you would like to support the project financially (especially if you sell a product which uses this library), you can use the sponsors page for one-off or recurring support, or we can arrange B2B invoicing of some kind. Thank you!
✍ Write About The Project
If you find the project useful, spread the word! Articles, mastodon posts, tweets, blog posts, instagram photos - whatever you're into. Please include a referral back to the repository page: https://github.com/asmaloney/libE57Format
⭐️ Add a Star
If you found this project useful, please consider starring it! It helps me gauge how useful this project is.
☝ Raise Issues
If you run into something which doesn't work as expected, raising an issue with all the relevant information to reproduce it would be helpful.
🐞 Bug Fixes & 🧪 New Things
I am happy to review any pull requests. Please keep them as short as possible. Each pull request should be atomic and only address one issue. This helps with the review process.
Note that I will not accept everything, but I welcome discussion. If you are proposing a big change, please raise it as an issue first for discussion.
Formatting
This project uses clang-format to format the code. There is a cmake target (e57-clang-format) - which runs clang-format on the source files. After changes have been made, and before you submit your pull request, please run the following:
sh
cmake --build . --target e57-clang-format
📖 Documentation
The documentation is a bit old and could use some lovin'. You can submit changes over in the libE57Format-docs repository.
License
This project is licensed under the BSL-1.0 license - see the LICENSE file for details.
Individual source files may contain the following tag instead of the full license text:
SPDX-License-Identifier: BSL-1.0
Using SPDX enables machine processing of license information based on the SPDX License Identifiers and makes it easier for developers to see at a glance which license they are dealing with.
Owner
- Name: Andy Maloney
- Login: asmaloney
- Kind: user
- Location: Canada, Earth, Sol, Oort Cloud
- Website: https://asmaloney.com
- Repositories: 104
- Profile: https://github.com/asmaloney
Software guy & independent researcher. Writer of code & hater of pseudo-"AI".
GitHub Events
Total
- Issues event: 9
- Watch event: 21
- Issue comment event: 37
- Push event: 7
- Pull request review comment event: 3
- Pull request review event: 4
- Pull request event: 11
- Fork event: 8
Last Year
- Issues event: 9
- Watch event: 21
- Issue comment event: 37
- Push event: 7
- Pull request review comment event: 3
- Pull request review event: 4
- Pull request event: 11
- Fork event: 8
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Andy Maloney | a****y@g****m | 443 |
| Nigel Stewart | n****s@n****m | 11 |
| Daniel Girardeau-Montaut | d****u@g****m | 4 |
| Jiri Hörner | 4****r | 3 |
| Artur Pietrzyk | a****4@g****m | 2 |
| Dirk Stolle | s****v@w****e | 2 |
| José Miguel Gonçalves | j****s@i****t | 2 |
| Romain Janvier | r****r@a****u | 2 |
| ROZAR Fabien | f****r@g****m | 2 |
| SunBlack | S****k | 2 |
| Fabien ROZAR | f****r@h****m | 1 |
| bartoszek | b****b@b****m | 1 |
| Adrian Holfter | a****4 | 1 |
| Christoph Moench-Tegeder | c****t@b****t | 1 |
| Dimitri | 4****g | 1 |
| Hugal31 | h****e@g****m | 1 |
| Nicolas Chaulet | n****t@g****m | 1 |
| Niklas Hambüchen | m****l@n****e | 1 |
| Olli Raisa | o****a@t****m | 1 |
| Patrick Chilton | c****k@g****m | 1 |
| Pei JIA | j****i@l****m | 1 |
| Sergei Trofimovich | s****h@g****m | 1 |
| Thomas Beutlich | 1****u | 1 |
| andre-schulz | a****e@e****e | 1 |
| gjacquem | 7****m | 1 |
| jean-noelp | j****e@l****m | 1 |
| luzpaz | l****z | 1 |
| maz-1 | m****1 | 1 |
| mosfet80 | 1****0 | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 40
- Total pull requests: 139
- Average time to close issues: about 1 month
- Average time to close pull requests: about 21 hours
- Total issue authors: 24
- Total pull request authors: 20
- Average comments per issue: 3.43
- Average comments per pull request: 0.48
- Merged pull requests: 126
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 8
- Pull requests: 30
- Average time to close issues: 14 days
- Average time to close pull requests: 2 days
- Issue authors: 8
- Pull request authors: 9
- Average comments per issue: 2.25
- Average comments per pull request: 0.73
- Merged pull requests: 23
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- asmaloney (11)
- PascalRunde (3)
- nh2 (2)
- dgirardeau (1)
- adi64 (1)
- zuixiaosanlang (1)
- SpaceIm (1)
- retifrav (1)
- thbeu (1)
- UshnaGul (1)
- alexeygritsenko (1)
- hesetone (1)
- hadjiprocopis (1)
- harshitha-lab (1)
- nanney54 (1)
Pull Request Authors
- asmaloney (117)
- SunBlack (6)
- nh2 (4)
- mosfet80 (4)
- dancergraham (2)
- maz-1 (2)
- Alex-Dee (2)
- luzpaz (2)
- az-faro (2)
- adi64 (2)
- trofi (1)
- kidal5 (1)
- marxin (1)
- nigels-com (1)
- thbeu (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- conda-incubator/setup-miniconda v2 composite
- hendrikmuhs/ccache-action v1.2 composite
- ilammy/msvc-dev-cmd v1 composite
- actions/checkout v3 composite
- jidicula/clang-format-action v4.9.0 composite