Trait geo::algorithm::euclidean_distance::EuclideanDistance [−][src]
pub trait EuclideanDistance<T, Rhs = Self> { fn euclidean_distance(&self, rhs: &Rhs) -> T; }
Returns the distance between two geometries.
Required methods
fn euclidean_distance(&self, rhs: &Rhs) -> T
[src]
Returns the distance between two geometries
If a Point
is contained by a Polygon
, the distance is 0.0
If a Point
lies on a Polygon
’s exterior or interior rings, the distance is 0.0
If a Point
lies on a LineString
, the distance is 0.0
The distance between a Point
and an empty LineString
is 0.0
Examples
Point
to Point
:
use approx::assert_relative_eq; use geo::algorithm::euclidean_distance::EuclideanDistance; use geo::point; let p1 = point!(x: -72.1235, y: 42.3521); let p2 = point!(x: -72.1260, y: 42.45); let distance = p1.euclidean_distance(&p2); assert_relative_eq!(distance, 0.09793191512474639);
Point
to Polygon
:
use approx::assert_relative_eq; use geo::algorithm::euclidean_distance::EuclideanDistance; use geo::{point, polygon}; let polygon = polygon![ (x: 5., y: 1.), (x: 4., y: 2.), (x: 4., y: 3.), (x: 5., y: 4.), (x: 6., y: 4.), (x: 7., y: 3.), (x: 7., y: 2.), (x: 6., y: 1.), (x: 5., y: 1.), ]; let point = point!(x: 2.5, y: 0.5); let distance = point.euclidean_distance(&polygon); assert_relative_eq!(distance, 2.1213203435596424);
Point
to LineString
:
use approx::assert_relative_eq; use geo::algorithm::euclidean_distance::EuclideanDistance; use geo::{point, line_string}; let line_string = line_string![ (x: 5., y: 1.), (x: 4., y: 2.), (x: 4., y: 3.), (x: 5., y: 4.), (x: 6., y: 4.), (x: 7., y: 3.), (x: 7., y: 2.), (x: 6., y: 1.), ]; let point = point!(x: 5.5, y: 2.1); let distance = point.euclidean_distance(&line_string); assert_relative_eq!(distance, 1.1313708498984762);
Implementors
impl<T> EuclideanDistance<T, Coordinate<T>> for Coordinate<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, c: &Coordinate<T>) -> T
[src]
Minimum distance between two Coordinate
s
impl<T> EuclideanDistance<T, Coordinate<T>> for Line<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, coord: &Coordinate<T>) -> T
[src]
Minimum distance from a Line
to a Coordinate
impl<T> EuclideanDistance<T, Line<T>> for Coordinate<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, line: &Line<T>) -> T
[src]
Minimum distance from a Coordinate
to a Line
impl<T> EuclideanDistance<T, Line<T>> for Line<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to Line distance
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, Line<T>> for LineString<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
LineString to Line
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, Line<T>> for MultiPolygon<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
MultiPolygon to Line distance
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, Line<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, line: &Line<T>) -> T
[src]
Minimum distance from a Line to a Point
impl<T> EuclideanDistance<T, Line<T>> for Polygon<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Line<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to LineString
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanDistance<T, LineString<T>> for LineString<T> where
T: GeoFloat + Signed + RTreeNum,
[src]
T: GeoFloat + Signed + RTreeNum,
LineString-LineString distance
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, linestring: &LineString<T>) -> T
[src]
Minimum distance from a Point to a LineString
impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
Polygon to LineString distance
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, mls: &MultiLineString<T>) -> T
[src]
Minimum distance from a Point to a MultiLineString
impl<T> EuclideanDistance<T, MultiPoint<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, points: &MultiPoint<T>) -> T
[src]
Minimum distance from a Point to a MultiPoint
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Line<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to MultiPolygon distance
fn euclidean_distance(&self, mpolygon: &MultiPolygon<T>) -> T
[src]
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, mpolygon: &MultiPolygon<T>) -> T
[src]
Minimum distance from a Point to a MultiPolygon
impl<T> EuclideanDistance<T, Point<T>> for Line<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a Line to a Point
impl<T> EuclideanDistance<T, Point<T>> for LineString<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a LineString to a Point
impl<T> EuclideanDistance<T, Point<T>> for MultiLineString<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a MultiLineString to a Point
impl<T> EuclideanDistance<T, Point<T>> for MultiPoint<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a MultiPoint to a Point
impl<T> EuclideanDistance<T, Point<T>> for MultiPolygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a MultiPolygon to a Point
impl<T> EuclideanDistance<T, Point<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, p: &Point<T>) -> T
[src]
Minimum distance between two Points
impl<T> EuclideanDistance<T, Point<T>> for Polygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a Polygon to a Point
impl<T> EuclideanDistance<T, Point<T>> for Triangle<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for Line<T> where
T: GeoFloat + Signed + RTreeNum + FloatConst,
[src]
T: GeoFloat + Signed + RTreeNum + FloatConst,
fn euclidean_distance(&self, other: &Polygon<T>) -> T
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
LineString to Polygon
fn euclidean_distance(&self, other: &Polygon<T>) -> T
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, polygon: &Polygon<T>) -> T
[src]
Minimum distance from a Point to a Polygon
impl<T> EuclideanDistance<T, Polygon<T>> for Polygon<T> where
T: GeoFloat + FloatConst + RTreeNum,
[src]
T: GeoFloat + FloatConst + RTreeNum,
fn euclidean_distance(&self, poly2: &Polygon<T>) -> T
[src]
This implementation has a “fast path” in cases where both input polygons are convex: it switches to an implementation of the “rotating calipers” method described in Pirzadeh (1999), pp24—30, which is approximately an order of magnitude faster than the standard method.