1 个不稳定版本

0.1.0 2024年4月11日

252 in 地理空间

MIT 许可证

675KB
1.5K SLoC

Rust 1.5K SLoC // 0.2% comments C++ 183 SLoC // 0.3% comments

PDAL 的 Rust 绑定

此crate提供了对PDAL库的Rust绑定。

这是一个正在进行中的项目。API不是稳定的(也不是完整的),可能会更改。

欢迎贡献!如果您有任何反馈或想贡献力量,请打开一个issue或PR。请与其他GeoRust贡献者一起在我们的Discord服务器上讨论该项目。

最小化示例

use pdal::Pipeline;
use pdal_sys::core::DimTypeId;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    // 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::<f64>(DimTypeId::X, pid)?;
        let y = view.point_value_as::<f64>(DimTypeId::Y, pid)?;
        let z = view.point_value_as::<f64>(DimTypeId::Z, pid)?;
        println!("{}: ({}, {}, {})", pid, x, y, z);
    }

    Ok(())
}

依赖关系

~1–3MB
~51K SLoC