### 59 releases

✓ Uses Rust 2018 edition

0.12.2 | May 26, 2019 |
---|---|

0.12.0 | Feb 17, 2019 |

0.11.0 | Dec 3, 2018 |

0.10.3 | Nov 23, 2018 |

0.0.4 | Feb 7, 2015 |

#**1** in #geo

**9,279** downloads per month

Used in **43** crates (27 directly)

**MIT/Apache**

768KB

10K
SLoC

# geo

## Geospatial Primitives, Algorithms, and Utilities

The

crate provides geospatial primitive types such as `geo`

, `Point`

, and `LineString`

, and provides algorithms and operations such as:`Polygon`

- Area and centroid calculation
- Simplification and convex hull operations
- Euclidean and Haversine distance measurement
- Intersection checks
- Transformation to and from PostGIS types
- 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

ecosystem, including:`Geo`

- Coordinate transformation and projection
- Serialization to and from GeoJSON and WKT
- Geocoding
- Working with GPS data

## Example

`use` `geo``::``{`line_string`,` polygon`}``;`
`use` `geo``::``convexhull``::`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``)``,`
`]``;`
`//` Ccalculate 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.

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

#### Dependencies

~2MB

~29K SLoC