Trait geo::algorithm::euclidean_distance::EuclideanDistance
source · 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§
sourcefn euclidean_distance(&self, rhs: &Rhs) -> T
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§
impl<T> EuclideanDistance<T> for Geometry<T>where T: GeoFloat + FloatConst,
impl<T> EuclideanDistance<T> for Coord<T>where T: GeoFloat,
impl<T> EuclideanDistance<T> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T> for Line<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to Line distance
impl<T> EuclideanDistance<T> for LineString<T>where T: GeoFloat + Signed + RTreeNum,
LineString-LineString distance
impl<T> EuclideanDistance<T> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T> for Point<T>where T: GeoFloat,
impl<T> EuclideanDistance<T> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Geometry<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for Line<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for LineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for Point<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for Rect<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Geometry<T>> for Triangle<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Coord<T>> for Line<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Line<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for LineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Point<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, GeometryCollection<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Line<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for Coord<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, Line<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for LineString<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
LineString to Line
impl<T> EuclideanDistance<T, Line<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for Point<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, Line<T>> for Polygon<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
impl<T> EuclideanDistance<T, Line<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Line<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, LineString<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, LineString<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, LineString<T>> for Line<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to LineString
impl<T> EuclideanDistance<T, LineString<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, LineString<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, LineString<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, LineString<T>> for Point<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
Polygon to LineString distance
impl<T> EuclideanDistance<T, LineString<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, LineString<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Line<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for LineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Line<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for LineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Point<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiPoint<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Line<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for LineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Point<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Polygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Point<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Point<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Point<T>> for Line<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, Point<T>> for LineString<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, Point<T>> for MultiLineString<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Point<T>> for MultiPoint<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Point<T>> for MultiPolygon<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Point<T>> for Polygon<T>where T: GeoFloat,
impl<T> EuclideanDistance<T, Point<T>> for Rect<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Point<T>> for Triangle<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Polygon<T>> for Geometry<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Polygon<T>> for GeometryCollection<T>where T: GeoFloat + FloatConst + RTreeNum,
impl<T> EuclideanDistance<T, Polygon<T>> for Line<T>where T: GeoFloat + Signed + RTreeNum + FloatConst,
impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T>where T: GeoFloat + FloatConst + Signed + RTreeNum,
LineString to Polygon