pub trait EuclideanDistance<T, Rhs = Self> {
    // Required method
    fn euclidean_distance(&self, rhs: &Rhs) -> T;
}
Expand description

Returns the distance between two geometries.

Required Methods§

source

fn euclidean_distance(&self, rhs: &Rhs) -> T

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::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::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::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§

source§

impl<T> EuclideanDistance<T> for Geometry<T>
where T: GeoFloat + FloatConst,

source§

impl<T> EuclideanDistance<T> for Coord<T>
where T: GeoFloat,

source§

impl<T> EuclideanDistance<T> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T> for Line<T>

Line to Line distance

source§

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

LineString-LineString distance

source§

impl<T> EuclideanDistance<T> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T> for Point<T>
where T: GeoFloat,

source§

impl<T> EuclideanDistance<T> for Polygon<T>

source§

impl<T> EuclideanDistance<T> for Rect<T>

source§

impl<T> EuclideanDistance<T> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, Geometry<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Coord<T>> for Line<T>
where T: GeoFloat,

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, GeometryCollection<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for Coord<T>
where T: GeoFloat,

source§

impl<T> EuclideanDistance<T, Line<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for LineString<T>

LineString to Line

source§

impl<T> EuclideanDistance<T, Line<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for MultiPolygon<T>

source§

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

source§

impl<T> EuclideanDistance<T, Line<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, Line<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for Line<T>

Line to LineString

source§

impl<T> EuclideanDistance<T, LineString<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for MultiPolygon<T>

source§

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

source§

impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T>

Polygon to LineString distance

source§

impl<T> EuclideanDistance<T, LineString<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, LineString<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, MultiLineString<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, MultiPoint<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, MultiPolygon<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Point<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, Point<T>> for GeometryCollection<T>

source§

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

source§

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

source§

impl<T> EuclideanDistance<T, Point<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Point<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Point<T>> for MultiPolygon<T>

source§

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

source§

impl<T> EuclideanDistance<T, Point<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, Point<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T>

LineString to Polygon

source§

impl<T> EuclideanDistance<T, Polygon<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for MultiPolygon<T>

source§

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

source§

impl<T> EuclideanDistance<T, Polygon<T>> for Rect<T>

source§

impl<T> EuclideanDistance<T, Polygon<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, Rect<T>> for Triangle<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for Geometry<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for GeometryCollection<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for Line<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for LineString<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for MultiLineString<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for MultiPoint<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for MultiPolygon<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for Point<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for Polygon<T>

source§

impl<T> EuclideanDistance<T, Triangle<T>> for Rect<T>