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);
Loading content...

Implementors

impl<T> EuclideanDistance<T, Coordinate<T>> for Coordinate<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, c: &Coordinate<T>) -> T[src]

Minimum distance between two Coordinates

impl<T> EuclideanDistance<T, Coordinate<T>> for Line<T> where
    T: GeoFloat
[src]

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]

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]

Line to Line distance

impl<T> EuclideanDistance<T, Line<T>> for LineString<T> where
    T: GeoFloat + FloatConst + Signed + RTreeNum
[src]

LineString to Line

impl<T> EuclideanDistance<T, Line<T>> for MultiPolygon<T> where
    T: GeoFloat + FloatConst + Signed + RTreeNum
[src]

MultiPolygon to Line distance

impl<T> EuclideanDistance<T, Line<T>> for Point<T> where
    T: GeoFloat
[src]

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]

impl<T> EuclideanDistance<T, LineString<T>> for Line<T> where
    T: GeoFloat + FloatConst + Signed + RTreeNum
[src]

Line to LineString

impl<T> EuclideanDistance<T, LineString<T>> for LineString<T> where
    T: GeoFloat + Signed + RTreeNum
[src]

LineString-LineString distance

impl<T> EuclideanDistance<T, LineString<T>> for Point<T> where
    T: GeoFloat
[src]

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]

Polygon to LineString distance

impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T> where
    T: GeoFloat
[src]

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]

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]

Line to MultiPolygon distance

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Point<T> where
    T: GeoFloat
[src]

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]

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]

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]

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]

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]

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]

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]

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]

impl<T> EuclideanDistance<T, Polygon<T>> for Line<T> where
    T: GeoFloat + Signed + RTreeNum + FloatConst
[src]

impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
    T: GeoFloat + FloatConst + Signed + RTreeNum
[src]

LineString to Polygon

impl<T> EuclideanDistance<T, Polygon<T>> for Point<T> where
    T: GeoFloat
[src]

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]

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.

Loading content...