## geo

Geospatial primitives and algorithms

### 68 releases(18 breaking)

 0.18.0 Apr 19, 2021 Feb 25, 2021 Jan 13, 2021 Nov 24, 2020 Feb 7, 2015

#9 in Science

Used in 67 crates (47 directly)

MIT/Apache

1.5MB
24K SLoC

# geo

## Geospatial Primitives, Algorithms, and Utilities

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.

Please refer to the documentation for a complete list.

The primitive types also provide the basis for other functionality in the Geo ecosystem, including:

## Example

use geo::{line_string, polygon};
use geo::convex_hull::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: 0.0, y: 0.0),
(x: 0.0, y: 4.0),
(x: 1.0, y: 4.0),
(x: 4.0, y: 1.0),
(x: 4.0, y: 0.0),
(x: 0.0, y: 0.0),
]);

## 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.