geo 0.16.0

Geospatial primitives and algorithms
Documentation
# Changes

## 0.16.0

* Fix panic when `simplify` is given a negative epsilon
  * <https://github.com/georust/geo/pull/537>
* Add `CoordsIter` trait for iterating over coordinates in geometries.
  * <https://github.com/georust/geo/pull/164>
* Fix edge case handling in `Contains`
  * <https://github.com/georust/geo/pull/526>
* Fix edge case handling in `line_locate_point`
  * <https://github.com/georust/geo/pull/520>
* Add `proj-network` feature enables network grid for optional `proj` integration.
  * <https://github.com/georust/geo/pull/506>
* Add `HasDimensions` trait for working with Geometry dimensionality
  * <https://github.com/georust/geo/pull/524>

## 0.15.0

* Add `Intersects` implementations for all pairs of types
  * <https://github.com/georust/geo/pull/516>
  * <https://github.com/georust/geo/pull/514>
* Add `ConcaveHull` algorithm
  * <https://github.com/georust/geo/pull/480>
* Add robust predicates
  * <https://github.com/georust/geo/pull/511>
  * <https://github.com/georust/geo/pull/505>
  * <https://github.com/georust/geo/pull/504>
  * <https://github.com/georust/geo/pull/502>
* Improve numerical stability in centroid computation
  * <https://github.com/georust/geo/pull/510>

## 0.14.2

* Bump proj version to 0.20.3
  * <https://github.com/georust/geo/pull/496>
* Change closure for `exterior_mut()` and `interiors_mut()` to be `FnOnce`
  * <https://github.com/georust/geo/pull/479>
* Bump proj version to 0.20.0 (superseded by 0.20.3)
  * <https://github.com/georust/geo/pull/472>
* Fix numerical stability in area computation
  * <https://github.com/georust/geo/pull/482>
* Fix `contains` for degenerate zero-area triangles
  * <https://github.com/georust/geo/pull/474>
* Allow MapCoords on Rect to invert coords
  * <https://github.com/georust/geo/pull/490>
* Centroid impl for MultiLineString
  * <https://github.com/georust/geo/pull/485>
* Fix Area logic for Polygon with interiors
  * <https://github.com/georust/geo/pull/487>

## 0.14.1

* Fix bug in Line-Polygon Euclidean distance
  * <https://github.com/georust/geo/pull/477>

## 0.14.0

* Bump geo-types version to 0.6.0
* Bump rstar version to 0.8.0
  * <https://github.com/georust/geo/pull/468>
* Bump proj version to 16.2
  * <https://github.com/georust/geo/pull/453>
* Extract PostGIS integration out to new `geo-postgis` crate
  * <https://github.com/georust/geo/pull/466>
* Add new `GeodesicDistance` and `GeodesicLength` algorithms
  * <https://github.com/georust/geo/pull/440>
* Implement `Area` for all types
  * <https://github.com/georust/geo/pull/459>
* Implement `BoundingRect` for all types
  * <https://github.com/georust/geo/pull/443>
* Add more `Contains` implementations
  * <https://github.com/georust/geo/pull/451>
* Fix Vincenty algorithms for equatorial and coincident points
  * <https://github.com/georust/geo/pull/438>
* Separate area algorithms into unsigned and signed methods. For clarity, the existing `Area#area`, which can return a negative value depending on winding order, has been renamed to `Area#signed_area`.  Most likely, if you aren't sure which one to use, you'll want `unsigned_area` which is always positive.
  * <https://github.com/georust/geo/pull/463>

## 0.13.0

* Bump geo-types dependency to 0.5.0
* Bump proj dependency to 0.15.1
* Add a mutable Coordinate iterator to LineString
  * <https://github.com/georust/geo/pull/404>
* Fix for rectangle intersection check
  * <https://github.com/georust/geo/pull/420>
* Bump proj to 0.14.4
  * <https://github.com/georust/geo/pull/412>
* Add `BoundingRect` implementation for `Rect`
  * <https://github.com/georust/geo/pull/355>
* Add Chamberlain–Duquette area algorithm
  * <https://github.com/georust/geo/pull/369>
* Make Euclidean Line-Line distance symmetrical
  * <https://github.com/georust/geo/pull/371>
* Bump rstar dependency to 0.4
  * <https://github.com/georust/geo/pull/373>
* Mark `ToGeo` as deprecated
  * <https://github.com/georust/geo/pull/375>
* Remove usages of 'failure' crate
  * <https://github.com/georust/geo/pull/388>

## 0.12.2

* Introduce `point!`, `line_string!`, and `polygon!` macros.
  * <https://github.com/georust/geo/pull/352>

## 0.12.1

* Add `FrechetDistance` algorithm
  * <https://github.com/georust/geo/pull/348>

## 0.12.0

* Bump `geo-types` dependency to 0.4.0
* Bump `rstar` and `proj` dependencies
  * <https://github.com/georust/geo/pull/346>
* Implement `Centroid` for `MultiPoint`
  * <https://github.com/georust/geo/pull/322>

## 0.11.0

* Replace the [spade]https://crates.io/crates/spade crate with the [rstar]https://crates.io/crates/rstar crate
  * <https://github.com/georust/geo/pull/314>
* Remove unnecessary algorithm trait bounds
  * <https://github.com/georust/geo/pull/320/>

## 0.10.3

* Add `MapCoords` for `Rect`s
  * <https://github.com/georust/geo/commit/11e4b67ae5fa658bd556eea96ba6fd49f32921c4>
* Rewrite vincenty/haversine docs; specify param/return units.
  * <https://github.com/georust/geo/commit/6ca45c347c53c5f0fd41b90ff5d0ba67d1b2ec15>
* `Area` can work on some non-`Float` geometries (e.g. `Rect<Integer>`)
  * <https://github.com/georust/geo/commit/1efd87a9bf3f4140f252014b59ff174af8e014aa>

## 0.10.2

* Add `to_degrees` and `to_radians` methods on `Point`s
  * <https://github.com/georust/geo/pull/306>

## 0.10.1

* Fix some edge case on centroid computation
  * <https://github.com/georust/geo/pull/305>

## 0.10.0

* Remove unnecessary borrows in function params for `Copy` types.
  * <https://github.com/georust/geo/pull/265>
* Rename bounding ‘box’ to ‘rect’; move structure to geo-types.
  * <https://github.com/georust/geo/pull/295>

## 0.9.1

* Fix Line-Polygon euclidean distance
  * <https://github.com/georust/geo/pull/226>
* Implement `EuclideanDistance` for `MultiPolygon` to `Line` and `Line` to `MultiPolygon`
  * <https://github.com/georust/geo/pull/227>
* Add `Line`-`LineString` euclidean distance
  * <https://github.com/georust/geo/pull/232>
* Add `VincentyDistance` and `VincentyLength` algorithms
  * <https://github.com/georust/geo/pull/213>
* Add `HaversineIntermediate` algorithm

## 0.9.0

* Make serde an optional dependency for `geo`, rename feature to `use-serde`
  * <https://github.com/georust/geo/pull/209>
* Use the `proj` crate, rename feature to `use-proj`
  * <https://github.com/georust/geo/pull/214>
* Return unboxed iterators from `LineString::lines`, `Winding::points_cw`, and `Winding::points_ccw`
  * <https://github.com/georust/geo/pull/218>
* Fix compilation errors when using the `proj` feature
  * <https://github.com/georust/geo/commit/0924f3179c95bfffb847562ee91675d7aa8454f5>
* Add `Polygon`-`Polygon` and `LineString`-`LineString` distance
  * <https://github.com/georust/geo/pull/219>
* Update postgis optional dependency to 0.6
  * <https://github.com/georust/geo/pull/215>
* Clarify wording for Contains algorithm.
  * <https://github.com/georust/geo/pull/220>

## 0.8.3

* Reexport core types from `geo-types`
  * <https://github.com/georust/geo/pull/201>

## 0.8.2

* Fix documentation generation on docs.rs
  * <https://github.com/georust/geo/pull/202>

## 0.8.1

* Fix centroid calculation for degenerate polygons
  * <https://github.com/georust/geo/pull/203>

## 0.8.0

* Prefix Euclidean distance/length traits with 'Euclidean'.
  * <https://github.com/georust/geo/pull/200>
* Bump num-traits: 0.1 → 0.2
  * <https://github.com/georust/geo/pull/188>
* Implement `SpatialObject` for `Line` type
  * <https://github.com/georust/geo/pull/181>
* Implement a `TryMapCoords` trait
  * <https://github.com/georust/geo/pull/191>
  * <https://github.com/georust/geo/pull/197>
* Impl Polygon convexity function on the type
  * <https://github.com/georust/geo/pull/195>
* Implement rust-proj as an optional feature within geo
  * <https://github.com/georust/geo/pull/192>

## 0.7.4

* [`cross_prod` method added to `Point`]https://github.com/georust/geo/pull/189

## 0.7.3

* [Allow coordinates to be more types (not just `Float`s)]https://github.com/georust/geo/pull/187

## 0.7.2

* [Easy methods to convert a Geometry to the underlying type]https://github.com/georust/geo/pull/184
* [Map coords inplace]https://github.com/georust/geo/pull/170
* [Added bearing trait]https://github.com/georust/geo/pull/186)
* [Winding/Orientation for LineStrings]https://github.com/georust/geo/pull/169

## 0.7.1

* [Add Haversine length algorithm]https://github.com/georust/geo/pull/183

## 0.7.0

* [Add `Line` to the `Geometry` `enum`]https://github.com/georust/geo/pull/179
* [Use new bulk-load method for initial R* Tree population]https://github.com/georust/geo/pull/178
* [Add PostGIS and GeoJSON integration/conversions]https://github.com/georust/geo/pull/180

## 0.6.3

* [Initial implementation of a `ClosestPoint` algorithm]https://github.com/georust/geo/pull/167

## 0.6.2

* [Add a prelude: `use geo::prelude::*`]https://github.com/georust/geo/pull/162

## 0.6.1

* [Add a `lines` iterator method on `LineString`]https://github.com/georust/geo/pull/160
* [Implement `Contains<Polygon>` for `Polygon`]https://github.com/georust/geo/pull/159
* [Correctly check for LineString containment in Polygon]https://github.com/georust/geo/pull/158

## 0.6.0

* [Remove unnecessary trait bound on `Translate`]https://github.com/georust/geo/pull/148
* [Topology preserving Visvalingam-Whyatt algorithm]https://github.com/georust/geo/pull/143
* [Implement `Copy` for `Line`]https://github.com/georust/geo/pull/150
* [Rewrite `RotatePoint` impls to be generic]https://github.com/georust/geo/pull/153
* [Add associated return type for `BoundingBox`]https://github.com/georust/geo/pull/156
* [Add associated return type for `Centroid`]https://github.com/georust/geo/pull/154

## 0.5.0

* [Reimplement `Translate` trait using `MapCoords`]https://github.com/georust/geo/pull/145

## 0.4.13

* [Implement Simplification traits for more types]https://github.com/georust/geo/pull/135
* [Add a MapCoords trait]https://github.com/georust/geo/pull/136

## 0.4.12

* [Improve robustness when calculating distance from a point to a
line-segment](https://github.com/georust/geo/pull/139)

## 0.4.11

* [Add `From`, `IntoIterator`, `Into` impls; add doc comments]https://github.com/georust/geo/pull/131

## 0.4.10

* [Add `Translation` trait.]https://github.com/georust/geo/pull/128

## 0.4.9

* [Add `Into` trait implementations.]https://github.com/georust/geo/pull/129

## 0.4.8

* [Add `HaversineDestination` algorithm trait]https://github.com/georust/geo/pull/124

## 0.4.7

* [Serializing/deserializing via serde]https://github.com/georust/geo/pull/125

## 0.4.6

* [Fix incorrect usage of `abs_sub`]https://github.com/georust/geo/pull/120

## 0.4.5

* [Add `Line` type (representing a line segment)]https://github.com/georust/geo/pull/118

## 0.4.4

* [Quickhull orientation fix]https://github.com/georust/geo/pull/110
* [Implement distance traits for more geometries]https://github.com/georust/geo/pull/113
* [Correctly calculate centroid for complex polygons]https://github.com/georust/geo/pull/112
* [Add `Orient` trait for polygon]https://github.com/georust/geo/pull/108
* [Add geometry rotation]https://github.com/georust/geo/pull/107
* [Add extreme point-finding]https://github.com/georust/geo/pull/114
* [Add contains point impl for bbox]https://github.com/georust/geo/commit/3e00ef94c3d69e6d0b1caab86224469ced9444e6

## 0.4.3

* [Implement Point to multipart geometry distance methods]https://github.com/georust/geo/pull/104
* [Fixture cleanup]https://github.com/georust/geo/pull/105

## 0.4.2

* [Fix Haversine distance implementation bug]https://github.com/georust/geo/pull/101

## 0.4.1

* [Implement convex hull algorithm]https://github.com/georust/geo/pull/89

## 0.4.0

* [Implement Haversine algorithm]https://github.com/georust/geo/pull/90
* [fix when multipolygon composed of two polygons of opposite clockwise]https://github.com/georust/geo/commits/master
* [Migrate from 'num' to 'num_traits' crate]https://github.com/georust/geo/pull/86

## 0.3.2

* [Add Visvalingam-Whyatt line-simplification algorithm]https://github.com/georust/geo/pull/84

## 0.3.1

* [Within Epsilon matcher]https://github.com/georust/geo/pull/82

## 0.3.0

* [Add named fields for the `Polygon` structure]https://github.com/georust/geo/pull/68

## 0.2.8

* [Implement `Intersects<Bbox<T>> for Polygon`]https://github.com/georust/geo/pull/76

## 0.2.7

* [Implement `Intersects<Polygon<T>> for Polygon`]https://github.com/georust/geo/issues/69

## 0.2.6

* [Add Point to Polygon and Point to LineString distance methods]https://github.com/georust/geo/pull/61

## 0.2.5

* [Implement LineString simplification]https://github.com/georust/geo/pull/55

## 0.2.4

* [Performance improvements when iterating over pairs of coordinates]https://github.com/georust/geo/pull/50

## 0.2.3

* [Add type Bbox and trait BoundingBox]https://github.com/georust/geo/pull/41

## 0.2.2

* [Add the Length trait and implement Length for LineString and MultiLineString]https://github.com/georust/geo/pull/44

## 0.2.1

* [Modify area for Polygon to consider also the isles]https://github.com/georust/geo/pull/43
* [Add area trait to MultiPolygon]https://github.com/georust/geo/pull/43

## 0.2.0

* [Data structures and traits are now generic (previously all were `f64`)]https://github.com/georust/geo/pull/30
* [`geo::COORD_PRECISION` is now `f32` (previously was `f64`)]https://github.com/georust/geo/pull/40

## 0.1.1

* [`Intersects` trait bugfixes]https://github.com/georust/geo/pull/34

## 0.1.0

* [Add `Area` trait]https://github.com/georust/geo/pull/31
* [Add `Contains` trait]https://github.com/georust/geo/pull/31
* [Add `Distance` trait, remove `Point::distance_to`]https://github.com/georust/geo/pull/31
* [Add `Intersects` trait]https://github.com/georust/geo/pull/31
* [Implement `Centroid` trait for `MultiPolygon`]https://github.com/georust/geo/pull/31

## 0.0.7

* [Implement `Centroid` trait, `Point::distance_to` method]https://github.com/georust/geo/pull/24