-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from anorthall/v0.1.5
Assign UUIDs to anonymous stations, improve logging
- Loading branch information
Showing
6 changed files
with
205 additions
and
97 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,12 +8,14 @@ readme = "README.md" | |
authors = ["Andrew Northall <[email protected]>"] | ||
keywords = ["caving", "caves", "cave-survey", "survex", "bindings"] | ||
categories = ["api-bindings", "external-ffi-bindings", "science::geo"] | ||
version = "0.1.4" | ||
version = "0.1.5" | ||
edition = "2021" | ||
include = ["**/*.rs", "lib/**/*", "Cargo.toml", "README.md", "LICENCE"] | ||
|
||
[dependencies] | ||
uuid = { version = "1.4.1", features = ["v4", "fast-rng"] } | ||
petgraph = "0.6.3" | ||
log = "0.4" | ||
|
||
[build-dependencies] | ||
bindgen = "0.66.1" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,80 @@ | ||
# survex-rs | ||
A library for reading Survex 3D files using rust, using bindings to `img.c` from | ||
the [Survex project](https://survex.com/). For more information, see the Rust generated documentation. | ||
Rust bindings to the Survex `img.c` library which can be used via a safe API utilising | ||
[`SurveyData`][`data::SurveyData`] and [`Station`][`station::Station`] structs, or directly via | ||
unsafe Rust. For more information, view the [documentation](https://docs.rs/survex-rs). | ||
|
||
## Safe API | ||
The safe API is able to read data from a Survex .3d file and store it in a | ||
[`SurveyData`][`data::SurveyData`] instance. [`SurveyData`][`data::SurveyData`] instances | ||
contain a vector of references to [`Station`][`station::Station`] structs and a graph, built | ||
using [`petgraph`][`petgraph::graph::Graph`], of connections between those stations. | ||
|
||
A helper function, [`load_from_path`][`crate::read::load_from_path`], is provided to read a | ||
given Survex .3d file and return a [`SurveyData`][`data::SurveyData`] instance. | ||
|
||
### Example | ||
```rust | ||
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, | ||
// } | ||
``` | ||
|
||
## Unsafe API | ||
If you wish to simply access the Survex `img.c` library directly using unsafe Rust, you can do so | ||
via the bindings in the [`survex`][`crate::survex`] module. | ||
|
||
For an example of how to use the unsafe API, take a look at the source for | ||
[`load_from_path`][`crate::read::load_from_path`] in `src/read.rs`. You can browse the functions in the | ||
[`survex`][`crate::survex`] module and reference them to the Survex `img.c` and `img.h` files found in the `src/` | ||
directory of the [Survex source code](https://github.com/ojwb/survex). | ||
|
||
## Project status | ||
This project is currently in early development and is not ready for production use. The API is subject to change at | ||
any time and semantic versioning is not yet being used. | ||
|
||
## Contributing | ||
Pull requests are [welcome on GitHub](https://github.com/anorthall/survex-rs). | ||
|
||
## License | ||
This project is licensed under the GNU General Public License v3.0 - see the LICENCE | ||
file for details. | ||
This project is licensed under the GNU General Public License v3.0 - see the LICENCE file for details. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.