Geospatial primitives and algorithms for Rust
Alternatives To Geo
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Supercluster1,7392,458185a month ago24April 05, 202231iscJavaScript
A very fast geospatial point clustering library for browsers and Node.
Geo1,1434674a day ago21June 24, 202298otherRust
Geospatial primitives and algorithms for Rust
Rtreego5594104 months ago4February 25, 20227bsd-3-clauseGo
an R-Tree library for Go
9 months ago22May 26, 202211lgpl-2.1Go
A library provides spatial data and geometric algorithms
6 days ago
A list of awesome open source projects Volodymyr Agafonkin is involved in.
Turf Swift195
203 months ago22August 11, 202222iscSwift
A Swift language port of Turf.js.
Richdem1893106 months ago18July 13, 201840gpl-3.0C++
High-performance Terrain and Hydrology Analysis
Rust Geo Booleanop6014a year ago7June 27, 202012mitRust
Rust implementation of the Martinez-Rueda Polygon Clipping Algorithm
Polylabel Rs421313 days ago32April 21, 20221mitRust
A Rust implementation of the Polylabel algorithm, with FFI.
a year ago11April 24, 20183mitJavaScript
A Turf toolbar for OpenLayers.
Alternatives To Geo
Select To Compare

Alternative Project Comparisons


geo on Coverage Status Documentation Discord


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.

Please refer to the documentation for a complete list.

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


// 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();

        (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

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.

Popular Algorithms Projects
Popular Geospatial Projects
Popular Computer Science Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.