Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/georust/pdal
Rust bindings to the most excellent PDAL point-cloud processing library.
https://github.com/georust/pdal
geospatial point-cloud
Last synced: about 2 months ago
JSON representation
Rust bindings to the most excellent PDAL point-cloud processing library.
- Host: GitHub
- URL: https://github.com/georust/pdal
- Owner: georust
- License: mit
- Created: 2024-03-15T18:48:17.000Z (10 months ago)
- Default Branch: develop
- Last Pushed: 2024-04-11T20:05:34.000Z (9 months ago)
- Last Synced: 2024-04-14T01:00:10.454Z (9 months ago)
- Topics: geospatial, point-cloud
- Language: Rust
- Homepage: https://crates.io/crates/pdal
- Size: 749 KB
- Stars: 7
- Watchers: 5
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# PDAL Bindings for Rust
This crate provides Rust bindings for the [PDAL](https://pdal.io) library.
THIS IS A WORK IN PROGRESS. The API is not stable (nor complete) and is subject to change.
Contributions welcome! Please open an issue or PR if you have any feedback or would like to contribute.
Come discuss the project with other GeoRust contributors at our [Discord server](https://discord.gg/Fp2aape).## Minimalist Example
```rust, no_run
use pdal::Pipeline;
use pdal_sys::core::DimTypeId;
use std::error::Error;fn main() -> Result<(), Box> {
// get filename from args
let filename = std::env::args().nth(1).expect("missing filename argument");
let pipeline_json = format!(
r#"
{{
"pipeline": [
{{
"type": "readers.las",
"filename": "{filename}"
}},
{{
"type": "writers.null"
}}
]
}}
"#
);let pipeline = Pipeline::new(pipeline_json)?;
let results = pipeline.execute()?;let views = results.point_views()?;
let view = views.first().ok_or("no point view")?;
for pid in view.point_ids().take(3) {
let x = view.point_value_as::(DimTypeId::X, pid)?;
let y = view.point_value_as::(DimTypeId::Y, pid)?;
let z = view.point_value_as::(DimTypeId::Z, pid)?;
println!("{}: ({}, {}, {})", pid, x, y, z);
}Ok(())
}
```