geo-uri-rs/README.md

77 lines
1.9 KiB
Markdown
Raw Normal View History

2022-09-29 19:52:14 +02:00
t# geo-uri-rs
2022-09-29 19:52:14 +02:00
A Rust crate (`geo-uri`) for uniform resource identifiers for geographic
locations (geo URIs) according to
IEEE RFC [5870](https://www.rfc-editor.org/rfc/rfc5870).
This crate allows for parsing and generating geo URIs in the correct format.
2022-09-29 19:52:14 +02:00
Its parser is currently somewhat more liberal than the proposed standard.
It supports geolocations specified by latitude and longitude, but also
optionally altitude and an uncertainty radius.
2022-09-29 19:52:14 +02:00
The currently only supported coordinate reference system is
[WGS-84](https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84).
## Usage
Just run the following to add this library to your project:
```sh
$ cargo add geo-uri
Updating crates.io index
Adding thiserror v??? to dependencies.
```
### Parsing
Use either the [`FromStr`](std::str::FromStr) or
[`TryFrom`](std::convert::TryFrom) traits to parse a geo URI string:
```rust
use geo_uri::GeoUri;
let geo_uri = GeoUri::try_from("geo:52.107,5.134,3.6;u=1000");
assert!(geo_uri.is_ok());
2022-09-29 19:52:14 +02:00
use std::str::FromStr;
let geo_uri2 = GeoUri::from_str("geo:52.107,5.134;u=2000");
assert!(geo_uri2.is_ok());
```
It is also possible to call the parse function directly:
```rust
use geo_uri::GeoUri;
let geo_uri3 = GeoUri::parse("geo:52.107,5.134,3.6;u=1000");
assert!(geo_uri3.is_ok());
```
### Generating
Use either the [`ToString`](std::string::ToString) or
[`Display`](std::fmt::Display) trait to generate an geo URI after building it:
```rust
use geo_uri::GeoUri;
let geo_uri = GeoUri::builder()
.latitude(52.107)
.longitude(5.134)
.uncertainty(1_000)
2022-09-29 19:52:14 +02:00
.build()
.unwrap();
assert_eq!(
geo_uri.to_string(),
String::from("geo:52.107,5.134;u=1000")
);
assert_eq!(
2022-09-29 19:52:14 +02:00
format!("{geo_uri}"),
String::from("geo:52.107,5.134;u=1000")
);
```
## License
geo-uri-rs is licensed under the MIT license (see the `LICENSE` file or
<http://opensource.org/licenses/MIT>).