Crate geo[][src]

The geo crate provides geospatial primitive types and algorithms.

Types

The preceding types are reexported from the geo-types crate. Consider using that crate if you only need access to these types and no other geo functionality.

Semantics

The geospatial types provided here aim to adhere to the OpenGIS Simple feature access standards. Thus, the types here are inter-operable with other implementations of the standards: JTS, GEOS, etc.

Algorithms

Area

Distance

  • EuclideanDistance: Calculate the minimum euclidean distance between geometries
  • GeodesicDistance: Calculate the minimum geodesic distance between geometries using the algorithm presented in Algorithms for geodesics by Charles Karney (2013)
  • HaversineDistance: Calculate the minimum geodesic distance between geometries using the haversine formula
  • VincentyDistance: Calculate the minimum geodesic distance between geometries using Vincenty’s formula

Length

  • EuclideanLength: Calculate the euclidean length of a geometry
  • GeodesicLength: Calculate the geodesic length of a geometry using the algorithm presented in Algorithms for geodesics by Charles Karney (2013)
  • HaversineLength: Calculate the geodesic length of a geometry using the haversine formula
  • VincentyLength: Calculate the geodesic length of a geometry using Vincenty’s formula

Simplification

  • Simplify: Simplify a geometry using the Ramer–Douglas–Peucker algorithm
  • SimplifyIdx: Calculate a simplified geometry using the Ramer–Douglas–Peucker algorithm, returning coordinate indices
  • SimplifyVW: Simplify a geometry using the Visvalingam-Whyatt algorithm
  • SimplifyVWPreserve: Simplify a geometry using a topology-preserving variant of the Visvalingam-Whyatt algorithm
  • SimplifyVwIdx: Calculate a simplified geometry using a topology-preserving variant of the Visvalingam-Whyatt algorithm, returning coordinate indices

Query

  • Bearing: Calculate the bearing between points
  • ClosestPoint: Find the point on a geometry closest to a given point
  • IsConvex: Calculate the convexity of a LineString
  • LineInterpolatePoint: Generates a point that lies a given fraction along the line
  • LineLocatePoint: Calculate the fraction of a line’s total length representing the location of the closest point on the line to the given point

Similarity

Topology

  • Contains: Calculate if a geometry contains another geometry
  • CoordinatePosition: Calculate the position of a coordinate relative to a geometry
  • HasDimensions: Determine the dimensions of a geometry
  • Intersects: Calculate if a geometry intersects another geometry
  • line_intersection: Calculates the intersection, if any, between two lines.
  • Relate: Topologically relate two geometries based on DE-9IM semantics.

Winding

Iteration

  • CoordsIter: Iterate over the coordinates of a geometry
  • MapCoords: Map a function over all the coordinates in a geometry, returning a new geometry
  • MapCoordsInplace: Map a function over all the coordinates in a geometry in-place
  • TryMapCoords: Map a fallible function over all the coordinates in a geometry, returning a new geometry wrapped in a Result

Boundary

  • BoundingRect: Calculate the axis-aligned bounding rectangle of a geometry
  • ConcaveHull: Calculate the concave hull of a geometry
  • ConvexHull: Calculate the convex hull of a geometry
  • Extremes: Calculate the extreme coordinates and indices of a geometry

Affine transformations

  • Rotate: Rotate a geometry around its centroid
  • RotatePoint: Rotate a geometry around a point
  • Translate: Translate a geometry along its axis

Miscellaneous

Features

The following optional Cargo features are available:

  • proj-network: Enables network grid support for the proj crate. After enabling this feature, further configuration is required to use the network grid
  • use-proj: Enables coordinate conversion and transformation of Point geometries using the proj crate
  • use-serde: Allows geometry types to be serialized and deserialized with Serde

Ecosystem

There’s a wide variety of geo-compatible crates in the ecosystem that offer functionality not included in the geo crate, including:

Re-exports

pub use crate::algorithm::*;

Modules

algorithm

This module includes all the functions of geometric calculations

prelude

A prelude which re-exports the traits for manipulating objects in this crate. Typically imported with use geo::prelude::*.

Macros

geometry_delegate_impl

Implements the common pattern where a Geometry enum simply delegates its trait impl to it’s inner type.

line_string

Creates a LineString containing the given coordinates.

point

Creates a Point from the given coordinates.

polygon

Creates a Polygon containing the given coordinates.

Structs

Coordinate

A lightweight struct used to store coordinates on the 2-dimensional Cartesian plane.

GeometryCollection

A collection of Geometry types.

Line

A line segment made up of exactly two Coordinates.

LineString

An ordered collection of two or more Coordinates, representing a path between locations.

MultiLineString

A collection of LineStrings. Can be created from a Vec of LineStrings or from an Iterator which yields LineStrings. Iterating over this object yields the component LineStrings.

MultiPoint

A collection of Points. Can be created from a Vec of Points, or from an Iterator which yields Points. Iterating over this object yields the component Points.

MultiPolygon

A collection of Polygons. Can be created from a Vec of Polygons, or from an Iterator which yields Polygons. Iterating over this object yields the component Polygons.

Point

A single point in 2D space.

Polygon

A bounded two-dimensional area.

Rect

An axis-aligned bounded 2D rectangle whose area is defined by minimum and maximum Coordinates.

Triangle

A bounded 2D area whose three vertices are defined by Coordinates. The semantics and validity are that of the equivalent Polygon; in addition, the three vertices must not be collinear and they must be distinct.

Enums

Closest

The result of trying to find the closest spot on an object to a point.

Geometry

An enum representing any possible geometry type.

Traits

CoordFloat
CoordNum

The type of an x or y value of a point/coordinate.

GeoFloat

A common numeric trait used for geo algorithms.

GeoNum
ToGeoDeprecated