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:
- Full DE-9IM support and topological relationship calculations such as containment and intersection
- Affine operations on geometries (scale, rotate, skew, translate)
- Boolean operations on geometries (clip, union, difference, intersection, xor)
- Buffer / offset operations on geometries
- Clustering operations such as DBSCAN and k-means
- Euclidean, as well as spherical, haversine and other non-planar length and distance calculations
- Support for projecting and converting between coordinate reference systems using PROJ
- IO using the
geojsonandgeozerocrates.
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
// primitives
use geo::{line_string, polygon};
// algorithms
use geo::ConvexHull;
// An L shape
let poly = polygon![
(x: 0.0, y: 0.0),
(x: 4.0, y: 0.0),
(x: 4.0, y: 1.0),
(x: 1.0, y: 1.0),
(x: 1.0, y: 4.0),
(x: 0.0, y: 4.0),
(x: 0.0, y: 0.0),
];
// Calculate the polygon's convex hull
let hull = poly.convex_hull();
assert_eq!(
hull.exterior(),
&line_string![
(x: 4.0, y: 0.0),
(x: 4.0, y: 1.0),
(x: 1.0, y: 4.0),
(x: 0.0, y: 4.0),
(x: 0.0, y: 0.0),
(x: 4.0, y: 0.0),
]
);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.
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.
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.