geo
Geospatial Primitives, Algorithms, and Utilities
Chat or ask questions on Discord
The geo
crate provides 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
- All DE-9IM spatial predicates such as contains, crosses, and touches.
Please refer to the documentation for a complete list.
The primitive types also provide the basis for other functionality in the Geo
ecosystem, including:
- Coordinate transformation and projection
- Serialization to and from GeoJSON and WKT
- Geocoding
- Working with GPS data
Example
// primitives
use ;
// algorithms
use ConvexHull;
// An L shape
let poly = polygon!;
// Calculate the polygon's convex hull
let hull = poly.convex_hull;
assert_eq!;
Contributing
Contributions are welcome! 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.