6个版本
0.1.7 | 2023年8月10日 |
---|---|
0.1.6 | 2023年8月10日 |
#269 in 地理空间
用于 survex-dist
105KB
3K SLoC
survex-rs
Survex img.c
库的Rust绑定。有关API参考和代码示例,请查看 docs.rs上的项目文档。
项目状态
该项目目前处于早期开发阶段,尚未准备好用于生产。API可能在任何时候更改,并且尚未使用语义版本控制。
贡献
欢迎提交拉取请求。如果您有任何问题、建议或想要报告错误,请 打开一个问题。
许可证
本项目采用GNU通用公共许可证v3.0授权 - 有关详细信息,请参阅LICENCE文件。
lib.rs
:
survex-rs
Survex img.c
库的Rust绑定,可以通过安全API使用SurveyData
和Station
结构体,或者直接通过不安全的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.rs
中load_from_path
的源代码。您可以在survex
模块中浏览函数,并将它们与在Survex源代码src/目录中找到的Survex img.c
和img.h
文件进行参考。
项目状态
该项目目前处于早期开发阶段,尚未准备好用于生产。API可能在任何时候更改,并且尚未使用语义版本控制。
依赖关系
~2.3–4.5MB
~76K SLoC