Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stefankarschti/inputosm
A high performance reader of OSM data files.
https://github.com/stefankarschti/inputosm
c-plus-plus openstreetmap
Last synced: 3 months ago
JSON representation
A high performance reader of OSM data files.
- Host: GitHub
- URL: https://github.com/stefankarschti/inputosm
- Owner: stefankarschti
- License: other
- Created: 2022-09-23T15:24:22.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-09T20:09:27.000Z (10 months ago)
- Last Synced: 2024-05-02T01:03:55.119Z (9 months ago)
- Topics: c-plus-plus, openstreetmap
- Language: C++
- Homepage:
- Size: 110 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Input OSM #
A high performace multi threaded and non-synchronized reader of OSM files (OSM, PBF, OSC).
## How to test the import speed? ##
This is the result of running the statistics on a dual `Xeon E5-2699`, 72 cores total.
Run:
```console
$ time ./statistics /mnt/maps/planet-220905.osm.pbf 1
/mnt/maps/planet-220905.osm.pbf
reading metadata
running on 72 threads
file size is 69,968,288,348 bytes
reading block 38,478 offset 69,967,313,594
block work queue has 38,479 items
left: -180.000000000
right: 180.000000000
top: 90.000000000
bottom: -90.000000000
required feature: OsmSchema-V0.6
required feature: DenseNodes
optional feature: Has_Metadata
optional feature: Sort.Type_then_ID
writing_program: planet-dump-ng 1.2.4
source: http://www.openstreetmap.org/api/0.6
osmosis_replication_timestamp: 1662336000 "2022-09-05 00:00:00 GMT"
nodes: 7,894,460,004
ways: 884,986,817
relations: 10,199,553
max nodes per block: 16,000
max node tags per block: 192,923
max ways per block: 8,000
max way tags per block: 144,722
max way nodes per block: 833,428
max relations per block: 500
max relation tags per block: 12,213
max relation members per block: 64,048
max node timestamp: 2022-09-04 23:59:55 GMT
max way timestamp: 2022-09-04 23:59:55 GMT
max relation timestamp: 2022-09-04 23:59:28 GMT
max file block index: 38,478
nodes with tags: 199,023,997
ways with tags: 870,315,135
relations with tags: 10,199,370
max node id: 10,000,751,104
max way id: 1,091,967,263
max relation id: 14,543,577real 0m28.215s
user 30m23.402s
sys 0m18.354s
```## How do I get set up? ##
* Summary of set up
Install:
1) `cmake` > 3.16
2) `make` (or another build system, like `ninja`)
3) c++20 compiler (> `g++-9`, > `clang-12`, > `apple-clang-13`)* Dependencies
This library depends on `EXPAT` and `ZLIB`
OR
* Dependencies (with conan)
There's a `CMakeLists.txt` inside the `conan` folder which automatically handles dependencies. You need to have `conan` installed before you use that (make sure it's a recent 1.x version)
Example:
cmake -Sconan -Bbuild/gcc-11-Release -DCMAKE_BUILD_TYPE=Release
* Configuration
Run:
```sh
# linux
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --target all --parallel $(nproc)
# mac
# cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --target all --parallel $(sysctl -n hw.ncpu)
# or both
# cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --target all --parallel $(getconf _NPROCESSORS_ONLN)
```* Configuration (vscode)
An example `.vscode/settings.json` that allows you to directly configure using conan:
```json
{
"files.associations": {
"*.cpp": "cpp",
"*.h" :"cpp"
},
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"cmake.configureOnOpen": false,
"cmake.buildDirectory" : "${workspaceFolder}/build/${buildKit}-${buildType}",
"cmake.installPrefix" : "${workspaceFolder}/install",
"cmake.sourceDirectory" : "${workspaceFolder}/conan"
}
```* How to run tests
Enable tests by doing:
```sh
# linux
cmake -S. -Bbuild -DINPUTOSM_INTEGRATION_TESTS=ON
```* Deployment instructions
Install the library with:
```sh
cmake -S. -Bbuild && cmake --build build --target install
```## Contribution guidelines ##
* Test and report issues
* Code reviews welcome
* Write tests*NOTE* Add tests in the tests folder.