Expand description
The geo
crate provides geospatial primitive types and algorithms.
§Types
Coord
: A two-dimensional coordinate. All geometry types are composed ofCoord
s, thoughCoord
itself is not aGeometry
type.Point
: A single point represented by oneCoord
MultiPoint
: A collection ofPoint
sLine
: A line segment represented by twoCoord
sLineString
: A series of contiguous line segments represented by two or moreCoord
sMultiLineString
: A collection ofLineString
sPolygon
: A bounded area represented by oneLineString
exterior ring, and zero or moreLineString
interior ringsMultiPolygon
: A collection ofPolygon
sRect
: An axis-aligned bounded rectangle represented by minimum and maximumCoord
sTriangle
: A bounded area represented by threeCoord
verticesGeometryCollection
: A collection ofGeometry
sGeometry
: An enumeration of all geometry types, excludingCoord
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
Area
: Calculate the planar area of a geometryChamberlainDuquetteArea
: Calculate the geodesic area of a geometry on a sphere using the algorithm presented in Some Algorithms for Polygons on a Sphere by Chamberlain and Duquette (2007)GeodesicArea
: Calculate the geodesic area and perimeter of a geometry on an ellipsoid using the algorithm presented in Algorithms for geodesics by Charles Karney (2013)
§Boolean Operations
BooleanOps
: combine or split (Multi)Polygons using intersecton, union, xor, or difference operations
§Distance
EuclideanDistance
: Calculate the minimum euclidean distance between geometriesGeodesicDistance
: Calculate the minimum geodesic distance between geometries using the algorithm presented in Algorithms for geodesics by Charles Karney (2013)HausdorffDistance
: Calculate “the maximum of the distances from a point in any of the sets to the nearest point in the other set.” (Rote, 1991)HaversineDistance
: Calculate the minimum geodesic distance between geometries using the haversine formulaRhumbDistance
: Calculate the length of a rhumb line connecting the two geometriesVincentyDistance
: Calculate the minimum geodesic distance between geometries using Vincenty’s formula
§Length
EuclideanLength
: Calculate the euclidean length of a geometryGeodesicLength
: 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 formulaRhumbLength
: Calculate the length of a geometry assuming it’s composed of rhumb linesVincentyLength
: Calculate the geodesic length of a geometry using Vincenty’s formula
§Outlier Detection
OutlierDetection
: Detect outliers in a group of points using LOF
§Simplification
Simplify
: Simplify a geometry using the Ramer–Douglas–Peucker algorithmSimplifyIdx
: Calculate a simplified geometry using the Ramer–Douglas–Peucker algorithm, returning coordinate indicesSimplifyVw
: Simplify a geometry using the Visvalingam-Whyatt algorithmSimplifyVwPreserve
: Simplify a geometry using a topology-preserving variant of the Visvalingam-Whyatt algorithmSimplifyVwIdx
: Calculate a simplified geometry using the Visvalingam-Whyatt algorithm, returning coordinate indices
§Query
HaversineBearing
: Calculate the bearing between points using great circle calculations.GeodesicBearing
: Calculate the bearing between points on a geodesicRhumbBearing
: Calculate the angle from north of the rhumb line connecting two points.ClosestPoint
: Find the point on a geometry closest to a given pointHaversineClosestPoint
: Find the point on a geometry closest to a given point on a sphere using spherical coordinates and lines being great arcs.IsConvex
: Calculate the convexity of aLineString
LineInterpolatePoint
: Generates a point that lies a given fraction along the lineLineLocatePoint
: Calculate the fraction of a line’s total length representing the location of the closest point on the line to the given point
§Similarity
FrechetDistance
: Calculate the similarity betweenLineString
s using the Fréchet distance
§Topology
Contains
: Calculate if a geometry contains another geometryCoordinatePosition
: Calculate the position of a coordinate relative to a geometryHasDimensions
: Determine the dimensions of a geometryIntersects
: Calculate if a geometry intersects another geometryline_intersection
: Calculates the intersection, if any, between two lines.Relate
: Topologically relate two geometries based on DE-9IM semantics.Within
: Calculate if a geometry lies completely within another geometry.
§Triangulation
TriangulateEarcut
: Triangulate polygons using the earcut algorithm (requires theearcutr
feature).
§Winding
Orient
: Apply a specified windingDirection
to aPolygon
’s interior and exterior ringsWinding
: Calculate and manipulate theWindingOrder
of aLineString
§Iteration
CoordsIter
: Iterate over the coordinates of a geometryMapCoords
: Map a function over all the coordinates in a geometry, returning a new geometryMapCoordsInPlace
: Map a function over all the coordinates in a geometry in-placeLinesIter
: Iterate over lines of a geometry
§Boundary
BoundingRect
: Calculate the axis-aligned bounding rectangle of a geometryMinimumRotatedRect
: Calculate the minimum bounding box of a geometryConcaveHull
: Calculate the concave hull of a geometryConvexHull
: Calculate the convex hull of a geometryExtremes
: Calculate the extreme coordinates and indices of a geometry
§Affine transformations
Rotate
: Rotate a geometry around its centroidScale
: Scale a geometry up or down by a factorSkew
: Skew a geometry by shearing angles along thex
andy
dimensionTranslate
: Translate a geometry along its axisAffineOps
: generalised composable affine operations
§Conversion
Convert
: Convert (infalliby) the type of a geometry’s coordinate valueTryConvert
: Convert (falliby) the type of a geometry’s coordinate valueToDegrees
: Radians to degrees coordinate transforms for a given geometry.ToRadians
: Degrees to radians coordinate transforms for a given geometry.
§Miscellaneous
Centroid
: Calculate the centroid of a geometryChaikinSmoothing
: SmoothenLineString
,Polygon
,MultiLineString
andMultiPolygon
using Chaikin’s algorithm.Densify
: Densify linear geometry components by interpolating pointsDensifyHaversine
: Densify spherical geometry by interpolating points on a sphereGeodesicDestination
: Given a start point, bearing, and distance, calculate the destination point on a geodesicGeodesicIntermediate
: Calculate intermediate points on a geodesicHaversineDestination
: Given a start point, bearing, and distance, calculate the destination point on a sphere assuming travel on a great circleHaversineIntermediate
: Calculate intermediate points on a sphere along a great-circle lineRhumbDestination
: Given a start point, bearing, and distance, calculate the destination point on a sphere assuming travel along a rhumb lineRhumbIntermediate
: Calculate intermediate points on a sphere along a rhumb line- [
proj
]: Project geometries with theproj
crate (requires theuse-proj
feature) LineStringSegmentize
: Segment a LineString inton
segments.LineStringSegmentizeHaversine
: Segment a LineString using Haversine distance.- [
Transform
]: Transform a geometry using Proj. RemoveRepeatedPoints
: Remove repeated points from a geometry.
§Features
The following optional Cargo features are available:
proj-network
: Enables network grid support for theproj
crate. After enabling this feature, further configuration is required to use the network griduse-proj
: Enables coordinate conversion and transformation ofPoint
geometries using theproj
crateuse-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:
- Reading and writing file formats (e.g. GeoJSON, WKT, shapefile)
- Latitude and longitude parsing
- Label placement
- Geocoding
- and much more…
Re-exports§
Modules§
- This module includes all the functions of geometric calculations
- This module makes all geometry types available
- A prelude which re-exports the traits for manipulating objects in this crate. Typically imported with
use geo::prelude::*
.
Macros§
- Creates a
Coord
from the given scalars. - Implements the common pattern where a Geometry enum simply delegates its trait impl to it’s inner type.
- Creates a
LineString
containing the given coordinates. - Creates a
Point
from the given coordinates. - Creates a
Polygon
containing the given coordinates. - Creates a
crate::geometry
from a WKT literal.
Enums§
- The result of trying to find the closest spot on an object to a point.
Traits§
- For algorithms which can only use floating point
Point
s/Coord
s, like area or length calculations - For algorithms which can use both integer and floating point
Point
s/Coord
s - A common numeric trait used for geo algorithms
- A trait for methods which work for both integers and floating point