Skip to content

Latest commit

 

History

History
686 lines (527 loc) · 27.6 KB

CHANGES.md

File metadata and controls

686 lines (527 loc) · 27.6 KB

Changes

Unreleased

  • Add EuclideanDistance implementations for all remaining geometries.
  • Add HausdorffDistance algorithm trait to calculate the Hausdorff distance between any two geometries.
  • Add matches method to IntersectionMatrix for ergonomic de-9im comparisons.

0.26.0

  • Implement "Closest Point" from a Point on a Geometry using spherical geometry. georust#958
  • Bump CI containers to use libproj 9.2.1
  • BREAKING: Bump rstar and robust dependencies georust#1030

0.25.1

  • Add TriangulateEarcut algorithm trait to triangulate polygons with the earcut algorithm.

  • Add Vector2DOps trait to algorithims module and implemented it for Coord<T::CoordFloat>

  • Add a fast point-in-polygon query datastructure that pre-processes a Polygon as a set of monotone polygons. Ref. crate::algorithm::MonotonicPolygons.

0.25.0

  • Added CrossTrackDistance trait to calculate the distance from a point to the nearest point on a line
  • Performance improvements for CoordinatePosition
  • BREAKING: Remove deprecated methods
    • georust#1012
    • Instead of map_coords_inplace use map_coords_in_place
    • Instead of RotatePoint use Rotate
    • Instead of Translate#translate_inplace use Translate#translate_mut

0.24.1

  • Rename Bearing::bearing to HaversineBearing::haversine_bearing to clarify it uses great circle calculations.
  • Speed up intersection checks
  • FIX: Simplify no longer skips simplifying minimally sized Polygons and LineString

0.24.0

  • BREAKING: Make SimplifyVw naming consistent
  • Update the Polygon implementation of the Simplify algorithm to always return Polygons with at least four coordinates.
  • BREAKING: Update to float_next_after-1.0.0 georust#952
  • POSSIBLY BREAKING: Minimum supported version of Rust (MSRV) is now 1.63
  • BREAKING: Update rstar dependency to 0.10.0 and enable use-rstar_0_10 feature for `geo-types. georust#987
  • Added MinimumRotatedRect trait to calculate the MBR of geometry georust#959
  • Added GeodesicArea trait to support geodesic area and perimeter calculations from geographlib-rs georust#988
  • Added GeodesicDestination trait to support geodesic destination calculations georust#991
  • Added GeodesicBearing trait to support geodesic bearing calculations georust#991

0.23.1

  • Update to geo-types-0.7.8 which deprecated Coordinate in favor of Coord. georust#924
  • Added doc for Transform trait to root docs index.
  • Fixed an issues where calculating the convex hull of 3 collinear points would include all 3.
  • Added outlier detection algorithm using LOF
  • Changed license field to SPDX 2.1 license expression
  • Added RemoveRepeatedPoints trait allowing the removal of (consecutive) repeated points.
  • Remove polygon-polygon fast path due to ongoing lack of reliability
  • Fix RDP recursion bug
  • Clarify documentation of bearing on the HaversineDestination

0.23.0

  • Added AffineOps, Scale, and Skew traits allowing the definition and composition of 2-D affine transforms.
    • Related Cleanup:
      • Existing Rotate and Translate traits leverage this new AffineOps trait.
      • Moved RotatePoint::rotate_around_point method onto
      • Rotate::rotate_around_point and removed RotatePoint trait.
      • Removed deprecated Rotate::rotate method, use Rotate::rotate_around_center or Rotate::roate_around_centroid instead.
      • Deprecated Translate::translate_in_place in favor of Translate::translate_mut to line up with naming elsewhere in the crate.
    • Implemented across several PR's:
  • Added BooleanOps::clip to clip a 1-D geometry with a 2-D geometry.
  • Added InteriorPoint trait to calculate a representative point inside a Geometry.
  • Added Within trait to determine if one Geometry is completely within another.
  • Added ConvexHull implementation for all remaining geometries.
  • Added Contains implementation for all remaining geometries.
  • Removed deprecated ToGeo trait. Use std::convert::TryFrom<$geometry> instead.

0.22.1

  • Fix some floating point issues with BoolOps

0.22.0

  • Add densification algorithm for linear geometry components
  • You may now specify Geometry rather than Geometry<f64> since we've added a default trait implementation. You may still explicitly declare the numeric type as f64, or any other implementation of CoordNum, but this should save you some typing if you're using f64. The same change applies to Coordinates and all the geometry variants, like Point, LineString, etc.
  • Fix fast path euclidean distance
  • Reexport everything from the proj crate
  • Added a geometry module which re-exports all the inner geometry variants, so you can use geo::geometry::* to concisely include Point, LineString, etc.
  • Use robust predicates everywhere in geo
  • Winding trait is rexported under geo::algorithm::Winding (and thus geo::Winding and geo::prelude::Winding)
  • BREAKING: de-exported WindingOrder from geo::WindingOrder/geo::algorithms::WindingOrder. Instead, go back to use geo::winding_order::WindingOrder - it was briefly rexported as geo::WindingOrder and geo::algorithms::WindingOrder.

0.21.0

  • Boolean operations for Polygons and MultiPolygons: intersect, union, xor, and difference. Refer trait bool_ops::BooleanOps for more info.

  • POSSIBLY BREAKING: Minimum supported version of Rust (MSRV) is now 1.58

  • BREAKING: rstar version upgraded to 0.9.x

  • POSSIBLY BREAKING: GeoFloat types must now implement num_traits::Signed and num_traits::Bounded. This shouldn't affect you if you are using a standard Geometry<f64> or Geometry<f32> or geo::GeoFloat generically.

  • Speed up Relate and Contains traits for large LineStrings and Polygons by using an RTree to more efficiently inspect edges in our topology graph.

  • Flatten algorithm namespace. For example:

    # Before
    use geo::algorithm::area::Area;
    use geo::algorithm::bounding_rect::BoundingRect;
    # After
    use geo::{Area, BoundingRect};
  • Speed up intersects checks by using a preliminary bbox check

  • BREAKING: Remove unneeded reference for *MapCoords* closure parameter.

  • BREAKING: Bump proj dependency to 0.26 which uses PROJ version 9.0

  • rename Translate::translate_inplace -> Translate::translate_in_place

  • MapCoords restructuring: georust#811

    • rename MapCoordsInplace::map_coords_inplace -> MapCoordsInPlace::map_coords_in_place
    • rename TryMapCoordsInplace::try_map_coords_inplace -> TryMapCoordsInPlace::try_map_coords_in_place
    • Consolidate traits TryMapCoords into MapCoords and TryMapCoordsInplace into MapCoordsInPlace
  • Implement ChamberlainDuquetteArea for all geo types.

  • Add {Convert,TryConvert} traits for coordinate value type conversion.

  • BREAKING: MapCoords/MapCoordsInPlace now map Coordinates rather than (x,y) tuples

  • Tidy fast-path distance algorithm

0.20.1

  • FIX: update to proper minimum geo-types version

0.20.0

  • Add LinesIter algorithm to iterate over the lines in geometries.
    • Very similar to CoordsIter, but only implemented where it makes sense (e.g., for Polygon, Rect, but not Point).
    • georust#757
  • Add TryMapCoordsInplace algorithm that is similar to TryMapCoords but modifies a geometry in-place

0.19.0

  • Bump proj crate to 0.25.0, using PROJ 8.1.0
  • Add ChaikinSmoothing algorithm
  • Fix rotate for multipolygons to rotate around the collection's centroid, instead of rotating each individual polygon around its own centroid.
  • Add KNearestConcaveHull algorithm
  • Remove cargo-tarpaulin due to instability (#676, #677)
  • Fix: ClosestPoint for Polygon's handling of internal points
  • Implemented ClosestPoint method for types Triangle, Rect, GeometryCollection, Coordinate and the Geometry enum.
  • BREAKING: TryMapCoords Result is now generic rather than a Box.
  • Add Transform algorithm
  • Add missing Intersects implementations
  • Note: The MSRV when installing the latest dependencies has increased to 1.55
  • Add get() to IntersectionMatrix for directly querying DE-9IM matrices

0.18.0

  • Add line_intersection to compute point or segment intersection of two Lines.
  • Add Relate trait to topologically relate two geometries based on DE-9IM semantics.
  • Fix Contains implementation for Polygons to match the OGC spec using the new Relate trait
  • BREAKING: Contains no longer supports Integer Polygon and Geometry. This was a trade-off for a Contains implementation that was more correct for Floats.

0.17.1

  • Rewrite the crate documentation
  • Fix Centroid algorithm for MultiLineString when all members have only one point.
  • Implement Centroid algorithm on Geometry and its remaining variants.
  • Add GeodesicIntermediate algorithm

0.17.0

  • BREAKING: update geo-types to 0.7
  • Introduce coords_count method on CoordsIter.
  • Fix non-empty MultiPoint has 0-dimensions, not 1.
  • Add new EuclideanDistance implementations: impl EuclideanDistance<Coordinate<T>> for Line, impl EuclideanDistance<Line> for Coordinate, impl EuclideanDistance<Coordinate> for Coordinate
  • Introduce geo::GeoFloat and geo::GeoNum trait so external crates can implement methods which operate on geometries generically.
  • Make HasKernel public to allow geo on exotic numeric types.
  • Fix panic when simplify is given a negative epsilon
  • Performance improvements to simplify
  • BREAKING: The T generic parameter for CoordsIter is now an associated type
  • Add CoordsIter::exterior_coords_iter method to iterate over exterior coordinates of a geometry
  • BREAKING: The ExtremeIndices and ExtremePoints traits have been combined into a new Extremes trait containing an extremes method. The output of the extremes method contains both indices and coordinates. The new implementation is based on CoordsIter instead of ConvexHull, and now runs 6x faster.

0.16.0

  • Fix panic when simplify is given a negative epsilon
  • Add CoordsIter trait for iterating over coordinates in geometries.
  • Fix edge case handling in Contains
  • Fix edge case handling in line_locate_point
  • Add proj-network feature enables network grid for optional proj integration.
  • Add HasDimensions trait for working with Geometry dimensionality

0.15.0

0.14.2

  • Bump proj version to 0.20.3
  • Change closure for exterior_mut() and interiors_mut() to be FnOnce
  • Bump proj version to 0.20.0 (superseded by 0.20.3)
  • Fix numerical stability in area computation
  • Fix contains for degenerate zero-area triangles
  • Allow MapCoords on Rect to invert coords
  • Centroid impl for MultiLineString
  • Fix Area logic for Polygon with interiors

0.14.1

  • Fix bug in Line-Polygon Euclidean distance

0.14.0

  • Bump geo-types version to 0.6.0
  • Bump rstar version to 0.8.0
  • Bump proj version to 16.2
  • Extract PostGIS integration out to new geo-postgis crate
  • Add new GeodesicDistance and GeodesicLength algorithms
  • Implement Area for all types
  • Implement BoundingRect for all types
  • Add more Contains implementations
  • Fix Vincenty algorithms for equatorial and coincident points
  • 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.

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
  • Fix for rectangle intersection check
  • Bump proj to 0.14.4
  • Add BoundingRect implementation for Rect
  • Add Chamberlain–Duquette area algorithm
  • Make Euclidean Line-Line distance symmetrical
  • Bump rstar dependency to 0.4
  • Mark ToGeo as deprecated
  • Remove usages of 'failure' crate

0.12.2

  • Introduce point!, line_string!, and polygon! macros.

0.12.1

0.12.0

  • Bump geo-types dependency to 0.4.0
  • Bump rstar and proj dependencies
  • Implement Centroid for MultiPoint

0.11.0

0.10.3

0.10.2

  • Add to_degrees and to_radians methods on Points

0.10.1

  • Fix some edge case on centroid computation

0.10.0

  • Remove unnecessary borrows in function params for Copy types.
  • Rename bounding ‘box’ to ‘rect’; move structure to geo-types.

0.9.1

  • Fix Line-Polygon euclidean distance
  • Implement EuclideanDistance for MultiPolygon to Line and Line to MultiPolygon
  • Add Line-LineString euclidean distance
  • Add VincentyDistance and VincentyLength algorithms
  • Add HaversineIntermediate algorithm

0.9.0

0.8.3

0.8.2

0.8.1

  • Fix centroid calculation for degenerate polygons

0.8.0

0.7.4

0.7.3

0.7.2

0.7.1

0.7.0

0.6.3

0.6.2

0.6.1

0.6.0

0.5.0

0.4.13

0.4.12

0.4.11

0.4.10

0.4.9

0.4.8

0.4.7

0.4.6

0.4.5

0.4.4

0.4.3

0.4.2

0.4.1

0.4.0

0.3.2

0.3.1

0.3.0

0.2.8

0.2.7

0.2.6

0.2.5

0.2.4

0.2.3

0.2.2

0.2.1

0.2.0

0.1.1

0.1.0

0.0.7