#bindings #api-bindings #survex #caving #cave-survey #caves

sys survex-rs

Rust对Survex 3D图像处理器的绑定

6个版本

0.1.7 2023年8月10日
0.1.6 2023年8月10日

#269 in 地理空间


用于 survex-dist

GPL-3.0-only

105KB
3K SLoC

C 2.5K SLoC // 0.1% comments Rust 482 SLoC // 0.1% comments

survex-rs

Survex img.c 库的Rust绑定。有关API参考和代码示例,请查看 docs.rs上的项目文档

项目状态

该项目目前处于早期开发阶段,尚未准备好用于生产。API可能在任何时候更改,并且尚未使用语义版本控制。

贡献

欢迎提交拉取请求。如果您有任何问题、建议或想要报告错误,请 打开一个问题

许可证

本项目采用GNU通用公共许可证v3.0授权 - 有关详细信息,请参阅LICENCE文件。


lib.rs:

survex-rs

Survex img.c 库的Rust绑定,可以通过安全API使用SurveyDataStation结构体,或者直接通过不安全的Rust。有关源代码和贡献,请参阅anorthall/survex-rs的GitHub仓库。

安全API

安全API能够从Survex .3d文件中读取数据并将其存储在SurveyData实例中。SurveyData实例包含对Station结构体的引用向量以及一个图,该图使用petgraph构建,表示这些站点之间的连接。

提供了一个辅助函数,load_from_path,用于读取指定的Survex .3d文件,并返回一个SurveyData实例。

示例

use std::path::PathBuf;
use survex_rs::read::load_from_path;
use survex_rs::station::Point;

let path = PathBuf::from("tests/data/nottsii.3d");
let data = load_from_path(path).unwrap();

println!("Loaded {} stations", data.stations.len());
// Loaded 1904 stations

println!("Loaded {} survey legs", data.graph.edge_count());
// Loaded 1782 survey legs

let station = data.get_by_label("nottsii.entrance").unwrap();
let station = station.borrow();
println!("Station '{}' is at {}", station.label, station.coords);
// Station 'nottsii.entrance' is at 66668.00, 78303.00, 319.00

let coords = Point::new(66668.00, 78303.00, 319.00);
let station = data.get_by_coords(&coords).unwrap();
let station = station.borrow();
println!("{:#?}", station);
// Station {
//     label: "nottsii.entrance",
//     coords: Point {
//         x: 66668.0,
//         y: 78303.0,
//         z: 319.0,
//     },
//     index: NodeIndex(1901),
//     lrud: LRUD {
//         left: None,
//         right: None,
//         up: None,
//         down: None,
//     },
//     surface: false,
//     underground: false,
//     entrance: true,
//     exported: true,
//     fixed: true,
//     anonymous: false,
//     wall: false,
// }

不安全API

如果您想直接使用不安全的Rust来访问Survex img.c库,可以通过survex模块中的绑定来实现。

关于如何使用不安全API的示例,请查看src/read.rsload_from_path的源代码。您可以在survex模块中浏览函数,并将它们与在Survex源代码src/目录中找到的Survex img.cimg.h文件进行参考。

项目状态

该项目目前处于早期开发阶段,尚未准备好用于生产。API可能在任何时候更改,并且尚未使用语义版本控制。

依赖关系

~2.3–4.5MB
~76K SLoC