You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() |
5 years ago | |
---|---|---|
examples | 7 years ago | |
src | 5 years ago | |
.gitattributes | 5 years ago | |
.gitignore | 8 years ago | |
.travis.yml | 6 years ago | |
CHANGES.md | 6 years ago | |
Cargo.toml | 5 years ago | |
LICENSE-APACHE | 7 years ago | |
LICENSE-MIT | 6 years ago | |
README.md | 6 years ago |
README.md
rust-geo
Geospatial Primitives, Algorithms, and Utilities
The geo
crate provides a number of geospatial primitive types such as Point
, LineString
, and Polygon
, and provides algorithms and operations such as:
- Area and centroid calculation
- Simplification and convex hull operations
- Euclidean and Haversine distance measurement
- Intersection checks
- Affine transforms such as rotation and translation.
Please refer to the documentation for a complete list.
Example
use geo::{Polygon, LineString};
use geo::convexhull::ConvexHull;
// An L shape
let coords = vec![(0.0, 0.0), (4.0, 0.0), (4.0, 1.0), (1.0, 1.0), (1.0, 4.0), (0.0, 4.0), (0.0, 0.0)];
// conversions to geo types are provided from several kinds of coordinate sequences
let poly = Polygon::new(coords.into(), vec![]);
// uses the QuickHull algorithm to calculate the polygon's convex hull
let hull = poly.convex_hull();
let correct = vec![(0.0, 0.0), (0.0, 4.0), (1.0, 4.0), (4.0, 1.0), (4.0, 0.0), (0.0, 0.0)]
assert_eq!(hull.exterior, correct.into());
Contributing
Contributions are welcome! This crate is work in progress, and a great deal of work remains to be done. Have a look at the issues, and open a pull request if you'd like to add an algorithm or some functionality.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.